├── quickstart-with-apollo
├── ApolloDemo
│ ├── app
│ │ ├── .gitignore
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── graphql
│ │ │ │ │ └── com
│ │ │ │ │ │ ├── AllPosts.graphql
│ │ │ │ │ │ ├── CreatePost.graphql
│ │ │ │ │ │ └── schema.json
│ │ │ │ ├── res
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── values
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ ├── colors.xml
│ │ │ │ │ │ ├── dimens.xml
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── menu
│ │ │ │ │ │ └── new_post.xml
│ │ │ │ │ └── layout
│ │ │ │ │ │ ├── post_item_entry.xml
│ │ │ │ │ │ ├── dialog_create_post.xml
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ └── java
│ │ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── nburk
│ │ │ │ │ └── apollodemo
│ │ │ │ │ ├── dummy
│ │ │ │ │ └── DummyContent.java
│ │ │ │ │ ├── ApolloDemoApplication.java
│ │ │ │ │ ├── MainRecyclerViewAdapter.java
│ │ │ │ │ └── MainActivity.java
│ │ │ ├── test
│ │ │ │ └── java
│ │ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── nburk
│ │ │ │ │ └── apollodemo
│ │ │ │ │ └── ExampleUnitTest.java
│ │ │ └── androidTest
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── nburk
│ │ │ │ └── apollodemo
│ │ │ │ └── ExampleInstrumentedTest.java
│ │ ├── proguard-rules.pro
│ │ └── build.gradle
│ ├── settings.gradle
│ ├── .idea
│ │ ├── copyright
│ │ │ └── profiles_settings.xml
│ │ ├── vcs.xml
│ │ ├── libraries
│ │ │ ├── javax_inject_1.xml
│ │ │ ├── jsr305_1_3_9.xml
│ │ │ ├── javawriter_2_1_1.xml
│ │ │ ├── hamcrest_library_1_3.xml
│ │ │ ├── hamcrest_integration_1_3.xml
│ │ │ ├── constraint_layout_solver_1_0_2.xml
│ │ │ ├── javax_annotation_api_1_2.xml
│ │ │ ├── constraint_layout_1_0_2.xml
│ │ │ ├── junit_4_12.xml
│ │ │ ├── okio_1_13_0.xml
│ │ │ ├── cache_2_0_2.xml
│ │ │ ├── jsr250_api_1_0.xml
│ │ │ ├── okhttp_3_8_1.xml
│ │ │ ├── picasso_2_5_2.xml
│ │ │ ├── hamcrest_core_1_3.xml
│ │ │ ├── apollo_api_0_4_2.xml
│ │ │ ├── rules_0_5.xml
│ │ │ ├── runner_0_5.xml
│ │ │ ├── apollo_runtime_0_4_2.xml
│ │ │ ├── support_annotations_26_0_0_alpha1.xml
│ │ │ ├── design_26_0_0_alpha1.xml
│ │ │ ├── espresso_core_2_2_2.xml
│ │ │ ├── support_v4_26_0_0_alpha1.xml
│ │ │ ├── transition_26_0_0_alpha1.xml
│ │ │ ├── appcompat_v7_26_0_0_alpha1.xml
│ │ │ ├── support_compat_26_0_0_alpha1.xml
│ │ │ ├── recyclerview_v7_26_0_0_alpha1.xml
│ │ │ ├── support_core_ui_26_0_0_alpha1.xml
│ │ │ ├── support_fragment_26_0_0_alpha1.xml
│ │ │ ├── support_core_utils_26_0_0_alpha1.xml
│ │ │ ├── espresso_idling_resource_2_2_2.xml
│ │ │ ├── support_media_compat_26_0_0_alpha1.xml
│ │ │ ├── support_vector_drawable_26_0_0_alpha1.xml
│ │ │ ├── animated_vector_drawable_26_0_0_alpha1.xml
│ │ │ └── exposed_instrumentation_api_publish_0_5.xml
│ │ ├── modules.xml
│ │ ├── runConfigurations.xml
│ │ ├── gradle.xml
│ │ ├── compiler.xml
│ │ └── misc.xml
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradlew.bat
│ ├── README.md
│ └── gradlew
└── README.md
├── README.md
└── .gitignore
/quickstart-with-apollo/ApolloDemo/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/graphql/com/AllPosts.graphql:
--------------------------------------------------------------------------------
1 | query AllPosts {
2 | allPosts {
3 | id
4 | description
5 | imageUrl
6 | }
7 | }
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/graphql/com/CreatePost.graphql:
--------------------------------------------------------------------------------
1 | mutation CreatePost($description: String!, $imageUrl: String!) {
2 | createPost(description: $description, imageUrl: $imageUrl) {
3 | id
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphcool-examples/android-graphql/HEAD/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Android & GraphQL
2 |
3 | This repository contains a variety of sample projects demonstrating how to get started with Android & GraphQL in different use cases.
4 |
5 | Setup instructions for each sample project can be found in the corresponding README.
6 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | ApolloDemo
3 | Posts
4 | Post Detail
5 |
6 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #27AE60
4 | #0E9C4A
5 | #E00097
6 |
7 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Oct 25 11:38:54 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
7 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 200dp
5 | 200dp
6 | 16dp
7 |
8 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/menu/new_post.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/javax_inject_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/jsr305_1_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/javawriter_2_1_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/hamcrest_library_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/hamcrest_integration_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/constraint_layout_solver_1_0_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/javax_annotation_api_1_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/constraint_layout_1_0_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/junit_4_12.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/test/java/com/example/nburk/apollodemo/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.example.nburk.apollodemo;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.3.3'
9 | classpath 'com.apollographql.apollo:apollo-gradle-plugin:0.4.2'
10 | }
11 | }
12 |
13 | allprojects {
14 | repositories {
15 | jcenter()
16 | }
17 | }
18 |
19 | task clean(type: Delete) {
20 | delete rootProject.buildDir
21 | }
22 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/okio_1_13_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/cache_2_0_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/jsr250_api_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/okhttp_3_8_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/picasso_2_5_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/hamcrest_core_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/apollo_api_0_4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/rules_0_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/runner_0_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/apollo_runtime_0_4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/support_annotations_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/design_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/espresso_core_2_2_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/support_v4_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/transition_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/appcompat_v7_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/support_compat_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/recyclerview_v7_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/support_core_ui_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/support_fragment_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/support_core_utils_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/espresso_idling_resource_2_2_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/support_media_compat_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/support_vector_drawable_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/animated_vector_drawable_26_0_0_alpha1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/libraries/exposed_instrumentation_api_publish_0_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/androidTest/java/com/example/nburk/apollodemo/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.example.nburk.apollodemo;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.example.nburk.apollodemo", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/nburk/Library/Android/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
19 | # Uncomment this to preserve the line number information for
20 | # debugging stack traces.
21 | #-keepattributes SourceFile,LineNumberTable
22 |
23 | # If you keep the line number information, uncomment this to
24 | # hide the original source file name.
25 | #-renamesourcefileattribute SourceFile
26 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/layout/post_item_entry.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
20 |
21 |
29 |
30 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/layout/dialog_create_post.xml:
--------------------------------------------------------------------------------
1 |
5 |
16 |
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | server
11 |
12 | # Built application files
13 | *.apk
14 | *.ap_
15 |
16 | # Files for the ART/Dalvik VM
17 | *.dex
18 |
19 | # Java class files
20 | *.class
21 |
22 | # Generated files
23 | bin/
24 | gen/
25 | out/
26 |
27 | # Gradle files
28 | .gradle/
29 | build/
30 |
31 | # Local configuration file (sdk path, etc)
32 | local.properties
33 |
34 | # Proguard folder generated by Eclipse
35 | proguard/
36 |
37 | # Log Files
38 | *.log
39 |
40 | # Android Studio Navigation editor temp files
41 | .navigation/
42 |
43 | # Android Studio captures folder
44 | captures/
45 |
46 | # Intellij
47 | *.iml
48 | .idea/workspace.xml
49 | .idea/tasks.xml
50 | .idea/gradle.xml
51 | .idea/dictionaries
52 | .idea/libraries
53 |
54 | # Keystore files
55 | # Uncomment the following line if you do not want to check your keystore files in.
56 | #*.jks
57 |
58 | # External native build folder generated in Android Studio 2.2 and later
59 | .externalNativeBuild
60 |
61 | # Google Services (e.g. APIs or Firebase)
62 | google-services.json
63 |
64 | # Freeline
65 | freeline.py
66 | freeline/
67 | freeline_project_description.json
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'com.apollographql.android'
3 |
4 | android {
5 | compileSdkVersion 26
6 | buildToolsVersion "26.0.2"
7 | defaultConfig {
8 | applicationId "com.example.nburk.apollodemo"
9 | minSdkVersion 19
10 | targetSdkVersion 26
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | }
22 |
23 | android {
24 | configurations.all {
25 | resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
26 | }
27 | sourceSets {
28 | main.java.srcDirs += 'build/generated/source/apollo'
29 | }
30 | }
31 |
32 | dependencies {
33 | compile fileTree(dir: 'libs', include: ['*.jar'])
34 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
35 | exclude group: 'com.android.support', module: 'support-annotations'
36 | })
37 | compile 'com.android.support:appcompat-v7:26.+'
38 | compile 'com.android.support.constraint:constraint-layout:1.0.2'
39 | compile 'com.android.support:support-v4:26.+'
40 | compile 'com.android.support:recyclerview-v7:26.+'
41 | compile 'com.android.support:design:26.+'
42 | compile 'com.squareup.picasso:picasso:2.5.2'
43 | testCompile 'junit:junit:4.12'
44 | }
45 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
15 |
16 |
22 |
23 |
32 |
33 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/java/com/example/nburk/apollodemo/dummy/DummyContent.java:
--------------------------------------------------------------------------------
1 | package com.example.nburk.apollodemo.dummy;
2 |
3 | import java.util.ArrayList;
4 | import java.util.HashMap;
5 | import java.util.List;
6 | import java.util.Map;
7 |
8 | /**
9 | * Helper class for providing sample content for user interfaces created by
10 | * Android template wizards.
11 | *
12 | * TODO: Replace all uses of this class before publishing your app.
13 | */
14 | public class DummyContent {
15 |
16 | /**
17 | * An array of sample (dummy) items.
18 | */
19 | public static final List ITEMS = new ArrayList();
20 |
21 | /**
22 | * A map of sample (dummy) items, by ID.
23 | */
24 | public static final Map ITEM_MAP = new HashMap();
25 |
26 | private static final int COUNT = 25;
27 |
28 | static {
29 | // Add some sample items.
30 | for (int i = 1; i <= COUNT; i++) {
31 | addItem(createDummyItem(i));
32 | }
33 | }
34 |
35 | private static void addItem(DummyItem item) {
36 | ITEMS.add(item);
37 | ITEM_MAP.put(item.id, item);
38 | }
39 |
40 | private static DummyItem createDummyItem(int position) {
41 | return new DummyItem(String.valueOf(position), "Item " + position, makeDetails(position));
42 | }
43 |
44 | private static String makeDetails(int position) {
45 | StringBuilder builder = new StringBuilder();
46 | builder.append("Details about Item: ").append(position);
47 | for (int i = 0; i < position; i++) {
48 | builder.append("\nMore details information here.");
49 | }
50 | return builder.toString();
51 | }
52 |
53 | /**
54 | * A dummy item representing a piece of content.
55 | */
56 | public static class DummyItem {
57 | public final String id;
58 | public final String content;
59 | public final String details;
60 |
61 | public DummyItem(String id, String content, String details) {
62 | this.id = id;
63 | this.content = content;
64 | this.details = details;
65 | }
66 |
67 | @Override
68 | public String toString() {
69 | return content;
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/java/com/example/nburk/apollodemo/ApolloDemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.example.nburk.apollodemo;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import com.apollographql.apollo.ApolloClient;
7 | import com.apollographql.apollo.api.Operation;
8 | import com.apollographql.apollo.api.ResponseField;
9 | import com.apollographql.apollo.cache.normalized.CacheKey;
10 | import com.apollographql.apollo.cache.normalized.CacheKeyResolver;
11 | import com.apollographql.apollo.cache.normalized.NormalizedCacheFactory;
12 | import com.apollographql.apollo.cache.normalized.lru.EvictionPolicy;
13 | import com.apollographql.apollo.cache.normalized.lru.LruNormalizedCacheFactory;
14 |
15 | import java.util.Map;
16 |
17 | import javax.annotation.Nonnull;
18 |
19 | import okhttp3.OkHttpClient;
20 |
21 | public class ApolloDemoApplication extends Application {
22 |
23 | // replace __SIMPLE_API_ENDPOINT__ with the endpoint of your service's GraphQL API
24 | // looks like: https://api.graph.cool/simple/v1/__SERVICE_ID__
25 | private static final String BASE_URL = "__SIMPLE_API_ENDPOINT__";
26 | public static final String TAG = "graphcool";
27 |
28 | private ApolloClient apolloClient;
29 | private static Context context;
30 |
31 | public static Context getAppContext() {
32 | return ApolloDemoApplication.context;
33 | }
34 |
35 | @Override public void onCreate() {
36 | super.onCreate();
37 | ApolloDemoApplication.context = getApplicationContext();
38 |
39 | OkHttpClient okHttpClient = new OkHttpClient.Builder()
40 | .build();
41 |
42 | NormalizedCacheFactory cacheFactory = new LruNormalizedCacheFactory(EvictionPolicy.builder().maxSizeBytes(10 * 1024).build());
43 | CacheKeyResolver cacheKeyResolver = new CacheKeyResolver() {
44 | @Nonnull
45 | @Override
46 | public CacheKey fromFieldRecordSet(@Nonnull ResponseField field, @Nonnull Map recordSet) {
47 | if (recordSet.containsKey("id")) {
48 | String id = (String) recordSet.get("id");
49 | return CacheKey.from(id);
50 | }
51 | return CacheKey.NO_KEY;
52 | }
53 |
54 | @Nonnull @Override
55 | public CacheKey fromFieldArguments(@Nonnull ResponseField field, @Nonnull Operation.Variables variables) {
56 | return CacheKey.NO_KEY;
57 | }
58 | };
59 |
60 | apolloClient = ApolloClient.builder()
61 | .serverUrl(BASE_URL)
62 | .normalizedCache(cacheFactory, cacheKeyResolver)
63 | .okHttpClient(okHttpClient)
64 | .build();
65 | }
66 |
67 | public ApolloClient apolloClient() {
68 | return apolloClient;
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/java/com/example/nburk/apollodemo/MainRecyclerViewAdapter.java:
--------------------------------------------------------------------------------
1 | package com.example.nburk.apollodemo;
2 |
3 | import android.content.Context;
4 | import android.support.v7.widget.RecyclerView;
5 | import android.util.Log;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.widget.ImageView;
10 | import android.widget.TextView;
11 |
12 | import com.AllPostsQuery;
13 | import com.squareup.picasso.Picasso;
14 |
15 | import java.util.Collections;
16 | import java.util.List;
17 |
18 | /**
19 | * Created by nburk on 26.10.17.
20 | */
21 |
22 | public class MainRecyclerViewAdapter extends RecyclerView.Adapter {
23 |
24 | private List posts = Collections.emptyList();
25 | private Context context;
26 |
27 | MainRecyclerViewAdapter(Context context) {
28 | this.context = context;
29 | }
30 |
31 | public void setPosts(List posts) {
32 | this.posts = posts;
33 | this.notifyDataSetChanged();
34 | Log.d(ApolloDemoApplication.TAG, "Updated posts in adapter: " + posts.size());
35 | }
36 |
37 | @Override
38 | public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
39 | LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
40 | final View itemView = layoutInflater.inflate(R.layout.post_item_entry, parent, false);
41 |
42 | return new PostViewHolder(itemView, context);
43 | }
44 |
45 | @Override public void onBindViewHolder(PostViewHolder holder, int position) {
46 | final AllPostsQuery.AllPost post = this.posts.get(position);
47 | holder.setPost(post);
48 | }
49 |
50 | @Override public int getItemCount() {
51 | return posts.size();
52 | }
53 |
54 | static class PostViewHolder extends RecyclerView.ViewHolder {
55 |
56 | private TextView postDescription;
57 | private ImageView postImage;
58 | private View postEntryContainer;
59 | private Context context;
60 |
61 | PostViewHolder(View itemView, Context context) {
62 | super(itemView);
63 | postDescription = (TextView) itemView.findViewById(R.id.post_description);
64 | postImage = (ImageView) itemView.findViewById(R.id.post_image);
65 | postEntryContainer = itemView.findViewById(R.id.post_entry_container);
66 | this.context = context;
67 | }
68 |
69 | void setPost(final AllPostsQuery.AllPost post) {
70 | postDescription.setText(post.description());
71 | Picasso.with(context).load(post.imageUrl()).into(postImage);
72 |
73 | postEntryContainer.setOnClickListener(new View.OnClickListener() {
74 | @Override public void onClick(View v) {
75 | }
76 | });
77 |
78 | }
79 | }
80 |
81 | }
82 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/README.md:
--------------------------------------------------------------------------------
1 | # Android & Apollo Quickstart
2 |
3 | * [Apollo Client](https://github.com/apollographql/apollo-client): Fully-featured, production ready caching GraphQL client
4 | * [Graphcool](https://www.graph.cool): Flexible backend platform combining GraphQL + AWS Lambda
5 |
6 |
11 |
12 | ## Quickstart
13 |
14 | ### 1. Clone example repository
15 |
16 | ```sh
17 | git clone https://github.com/graphcool-examples/android-graphql.git
18 | cd android-graphql/quickstart-with-apollo/ApolloDemo
19 | ```
20 |
21 |
22 | ### 2. Create Graphcool service with the [Graphcool CLI](https://docs-next.graph.cool/reference/graphcool-cli/overview-zboghez5go)
23 |
24 | ```sh
25 | # Install Graphcool Framework CLI
26 | npm install -g graphcool
27 |
28 | # Create a new service inside a directory called `server`
29 | graphcool init server
30 | ```
31 |
32 | This created the following file structure in the current directory:
33 |
34 | ```
35 | .
36 | └── server
37 | ├── graphcool.yml
38 | ├── types.graphql
39 | └── src
40 | ├── hello.graphql
41 | └── hello.js
42 | ```
43 |
44 | ### 3. Define data model
45 |
46 | Next, you need to define your data model inside the newly created `types.graphql`-file.
47 |
48 | Replace the current contents in `types.graphql` with the following type definition (you can delete the predefined `User` type):
49 |
50 | ```graphql
51 | type Post @model {
52 | # Required system field
53 | id: ID! @isUnique # read-only (managed by Graphcool)
54 |
55 | # Optional system fields (remove if not needed)
56 | createdAt: DateTime! # read-only (managed by Graphcool)
57 | updatedAt: DateTime! # read-only (managed by Graphcool)
58 |
59 | description: String!
60 | imageUrl: String!
61 | }
62 | ```
63 |
64 | ### 4. Deploy the GraphQL server
65 |
66 | You're now ready to put your Graphcool service into production! Navigate into the `server` directory and [deploy](https://docs-next.graph.cool/reference/graphcool-cli/commands-aiteerae6l#graphcool-deploy) the service:
67 |
68 | ```sh
69 | cd server
70 | graphcool deploy
71 | ```
72 |
73 | When prompted which cluster you want to deploy to, choose any of the **Backend-as-a-Service** options (`shared-eu-west-1`, `shared-ap-northeast-1` or `shared-us-west-2`).
74 |
75 | Save the HTTP endpoint for the `Simple API` from the output, you'll need it in the next step.
76 |
77 | > **Note**: You can now test your GraphQL API inside a GraphQL playground. Simply type the `graphcool playground` command and start sending queries and mutations.
78 |
79 |
80 | ### 5. Connect the app with your GraphQL API
81 |
82 | Paste the `Simple API` endpoint into `ApolloDemoApplication.java` as the value for the `final` variable `BASE_URL` that's used to instantiate the `ApolloClient`:
83 |
84 | ```js
85 | // replace `__SIMPLE_API_ENDPOINT__` with the endpoint from the previous step
86 | private static final String BASE_URL = "__SIMPLE_API_ENDPOINT__";
87 | ```
88 |
89 | ### 6. Install `apollo-codegen`
90 |
91 | To use the Apollo Android Client, you need to install [`apollo-codegen`](https://github.com/apollographql/apollo-codegen), a command line tool that will generate Java classes from your GraphQL queries & mutations at build-time.
92 |
93 | ```sh
94 | npm install -g apollo-codegen
95 | ```
96 |
97 | You can find more info the installation process in the [Apollo docs](http://dev.apollodata.com/android/installation.html).
98 |
99 | ### 7. Run locally
100 |
101 | Start the app in Android Studio 🚀
102 |
103 | ## Next steps
104 |
105 | * [Documentation](https://docs-next.graph.cool)
106 | * [Advanced GraphQL features](https://www.graph.cool/docs/tutorials/advanced-features-eath7duf7d/)
107 | * [Authentication & Permissions](https://www.graph.cool/docs/reference/authorization/overview-iegoo0heez/)
108 | * [Implementing business logic with serverless functions](https://www.graph.cool/docs/reference/functions/overview-boo6uteemo/)
109 |
110 |
111 | ## Help & Community [](https://slack.graph.cool)
112 |
113 | Join our [Slack community](http://slack.graph.cool/) if you run into issues or have questions. We love talking to you!
114 |
115 | 
116 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/README.md:
--------------------------------------------------------------------------------
1 | # Android & Apollo Quickstart
2 |
3 | * [Apollo Client](https://github.com/apollographql/apollo-client): Fully-featured, production ready caching GraphQL client
4 | * [Graphcool](https://www.graph.cool): Flexible backend platform combining GraphQL + AWS Lambda
5 |
6 |
11 |
12 | ## Example
13 |
14 | 
15 |
16 | ## Quickstart
17 |
18 | ### 1. Clone example repository
19 |
20 | ```sh
21 | git clone https://github.com/graphcool-examples/android-graphql.git
22 | cd android-graphql/quickstart-with-apollo
23 | ```
24 |
25 |
26 | ### 2. Create Graphcool service with the [Graphcool CLI](https://docs-next.graph.cool/reference/graphcool-cli/overview-zboghez5go)
27 |
28 | ```sh
29 | # Install Graphcool Framework CLI
30 | npm install -g graphcool
31 |
32 | # Create a new service inside a directory called `server`
33 | graphcool init server
34 | ```
35 |
36 | This created the following file structure in the current directory:
37 |
38 | ```
39 | .
40 | └── server
41 | ├── graphcool.yml
42 | ├── types.graphql
43 | └── src
44 | ├── hello.graphql
45 | └── hello.js
46 | ```
47 |
48 | ### 3. Define data model
49 |
50 | Next, you need to define your data model inside the newly created `types.graphql`-file.
51 |
52 | Replace the current contents in `types.graphql` with the following type definition (you can delete the predefined `User` type):
53 |
54 | ```graphql
55 | type Post @model {
56 | # Required system field
57 | id: ID! @isUnique # read-only (managed by Graphcool)
58 |
59 | # Optional system fields (remove if not needed)
60 | createdAt: DateTime! # read-only (managed by Graphcool)
61 | updatedAt: DateTime! # read-only (managed by Graphcool)
62 |
63 | description: String!
64 | imageUrl: String!
65 | }
66 | ```
67 |
68 | ### 4. Deploy the GraphQL server
69 |
70 | You're now ready to put your Graphcool service into production! Navigate into the `server` directory and [deploy](https://docs-next.graph.cool/reference/graphcool-cli/commands-aiteerae6l#graphcool-deploy) the service:
71 |
72 | ```sh
73 | cd server
74 | graphcool deploy
75 | ```
76 |
77 | When prompted which cluster you want to deploy to, choose any of the **Backend-as-a-Service** options (`shared-eu-west-1`, `shared-ap-northeast-1` or `shared-us-west-2`).
78 |
79 | Save the HTTP endpoint for the `Simple API` from the output, you'll need it in the next step.
80 |
81 | > **Note**: You can now test your GraphQL API inside a GraphQL playground. Simply type the `graphcool playground` command and start sending queries and mutations.
82 |
83 |
84 | ### 5. Connect the app with your GraphQL API
85 |
86 | Paste the `Simple API` endpoint into `ApolloDemoApplication.java` as the value for the `final` variable `BASE_URL` that's used to instantiate the `ApolloClient`:
87 |
88 | ```js
89 | // replace `__SIMPLE_API_ENDPOINT__` with the endpoint from the previous step
90 | private static final String BASE_URL = "__SIMPLE_API_ENDPOINT__";
91 | ```
92 |
93 | ### 6. Install `apollo-codegen`
94 |
95 | To use the Apollo Android Client, you need to install [`apollo-codegen`](https://github.com/apollographql/apollo-codegen), a command line tool that will generate Java classes from your GraphQL queries & mutations at build-time.
96 |
97 | ```sh
98 | npm install -g apollo-codegen
99 | ```
100 |
101 | You can find more info the installation process in the [Apollo docs](http://dev.apollodata.com/android/installation.html).
102 |
103 | ### 7. Run locally
104 |
105 | Start the app in Android Studio 🚀
106 |
107 | ## Next steps
108 |
109 | * [Documentation](https://docs-next.graph.cool)
110 | * [Advanced GraphQL features](https://www.graph.cool/docs/tutorials/advanced-features-eath7duf7d/)
111 | * [Authentication & Permissions](https://www.graph.cool/docs/reference/authorization/overview-iegoo0heez/)
112 | * [Implementing business logic with serverless functions](https://www.graph.cool/docs/reference/functions/overview-boo6uteemo/)
113 |
114 |
115 | ## Help & Community [](https://slack.graph.cool)
116 |
117 | Join our [Slack community](http://slack.graph.cool/) if you run into issues or have questions. We love talking to you!
118 |
119 | 
120 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # Attempt to set APP_HOME
46 | # Resolve links: $0 may be a link
47 | PRG="$0"
48 | # Need this for relative symlinks.
49 | while [ -h "$PRG" ] ; do
50 | ls=`ls -ld "$PRG"`
51 | link=`expr "$ls" : '.*-> \(.*\)$'`
52 | if expr "$link" : '/.*' > /dev/null; then
53 | PRG="$link"
54 | else
55 | PRG=`dirname "$PRG"`"/$link"
56 | fi
57 | done
58 | SAVED="`pwd`"
59 | cd "`dirname \"$PRG\"`/" >/dev/null
60 | APP_HOME="`pwd -P`"
61 | cd "$SAVED" >/dev/null
62 |
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
64 |
65 | # Determine the Java command to use to start the JVM.
66 | if [ -n "$JAVA_HOME" ] ; then
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
68 | # IBM's JDK on AIX uses strange locations for the executables
69 | JAVACMD="$JAVA_HOME/jre/sh/java"
70 | else
71 | JAVACMD="$JAVA_HOME/bin/java"
72 | fi
73 | if [ ! -x "$JAVACMD" ] ; then
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
75 |
76 | Please set the JAVA_HOME variable in your environment to match the
77 | location of your Java installation."
78 | fi
79 | else
80 | JAVACMD="java"
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
82 |
83 | Please set the JAVA_HOME variable in your environment to match the
84 | location of your Java installation."
85 | fi
86 |
87 | # Increase the maximum file descriptors if we can.
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
89 | MAX_FD_LIMIT=`ulimit -H -n`
90 | if [ $? -eq 0 ] ; then
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
92 | MAX_FD="$MAX_FD_LIMIT"
93 | fi
94 | ulimit -n $MAX_FD
95 | if [ $? -ne 0 ] ; then
96 | warn "Could not set maximum file descriptor limit: $MAX_FD"
97 | fi
98 | else
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 | fi
101 | fi
102 |
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 |
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 | JAVACMD=`cygpath --unix "$JAVACMD"`
113 |
114 | # We build the pattern for arguments to be converted via cygpath
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 | SEP=""
117 | for dir in $ROOTDIRSRAW ; do
118 | ROOTDIRS="$ROOTDIRS$SEP$dir"
119 | SEP="|"
120 | done
121 | OURCYGPATTERN="(^($ROOTDIRS))"
122 | # Add a user-defined pattern to the cygpath arguments
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 | fi
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 | i=0
128 | for arg in "$@" ; do
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
131 |
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 | else
135 | eval `echo args$i`="\"$arg\""
136 | fi
137 | i=$((i+1))
138 | done
139 | case $i in
140 | (0) set -- ;;
141 | (1) set -- "$args0" ;;
142 | (2) set -- "$args0" "$args1" ;;
143 | (3) set -- "$args0" "$args1" "$args2" ;;
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 | esac
151 | fi
152 |
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 | JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 |
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/java/com/example/nburk/apollodemo/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.nburk.apollodemo;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.DialogInterface;
5 | import android.os.Bundle;
6 | import android.support.v7.app.AppCompatActivity;
7 | import android.support.v7.widget.LinearLayoutManager;
8 | import android.support.v7.widget.RecyclerView;
9 | import android.support.v7.widget.Toolbar;
10 | import android.util.Log;
11 | import android.view.LayoutInflater;
12 | import android.view.Menu;
13 | import android.view.MenuInflater;
14 | import android.view.MenuItem;
15 | import android.view.View;
16 | import android.view.ViewGroup;
17 | import android.widget.EditText;
18 | import android.widget.ProgressBar;
19 |
20 | import com.AllPostsQuery;
21 | import com.CreatePostMutation;
22 | import com.apollographql.apollo.ApolloCall;
23 | import com.apollographql.apollo.api.Response;
24 | import com.apollographql.apollo.api.cache.http.HttpCachePolicy;
25 | import com.apollographql.apollo.exception.ApolloException;
26 |
27 | import javax.annotation.Nonnull;
28 |
29 | // https://laughingsquid.com/wp-content/uploads/2013/07/QjJjgS0.jpg
30 | // https://i.pinimg.com/originals/6d/90/af/6d90af5a16ed15f7e2c4a092b8884700.jpg
31 |
32 | public class MainActivity extends AppCompatActivity {
33 |
34 | ApolloDemoApplication application;
35 | MainRecyclerViewAdapter postsAdapter;
36 | ViewGroup content;
37 | ProgressBar progressBar;
38 |
39 | @Override
40 | protected void onCreate(Bundle savedInstanceState) {
41 | super.onCreate(savedInstanceState);
42 | setContentView(R.layout.activity_main);
43 | Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
44 | setSupportActionBar(myToolbar);
45 | Log.d(ApolloDemoApplication.TAG, "Creating activity...");
46 |
47 | application = (com.example.nburk.apollodemo.ApolloDemoApplication) getApplication();
48 |
49 | content = (ViewGroup) findViewById(R.id.content_holder);
50 | progressBar = (ProgressBar) findViewById(R.id.loading_bar);
51 |
52 | RecyclerView postsRecyclerView = (RecyclerView) findViewById(R.id.rv_posts_list);
53 | postsAdapter = new MainRecyclerViewAdapter(application.getApplicationContext());
54 | postsRecyclerView.setAdapter(postsAdapter);
55 | postsRecyclerView.setLayoutManager(new LinearLayoutManager(this));
56 |
57 | fetchPosts();
58 | }
59 |
60 | private ApolloCall.Callback createPostMutationCallback = new ApolloCall.Callback() {
61 | @Override
62 | public void onResponse(@Nonnull final Response dataResponse) {
63 | Log.d(ApolloDemoApplication.TAG, "Executed mutation: " + dataResponse.data());
64 | fetchPosts();
65 | }
66 | @Override
67 | public void onFailure(@Nonnull ApolloException e) {
68 | Log.d(ApolloDemoApplication.TAG, "Error:" + e.toString());
69 | }
70 | };
71 |
72 | private ApolloCall.Callback allPostsQueryCallback = new ApolloCall.Callback() {
73 | @Override
74 | public void onResponse(@Nonnull final Response dataResponse) {
75 | Log.d(ApolloDemoApplication.TAG, "Received posts: " + dataResponse.data().allPosts().size());
76 | MainActivity.this.runOnUiThread(new Runnable() {
77 | @Override public void run() {
78 | postsAdapter.setPosts(dataResponse.data().allPosts());
79 | progressBar.setVisibility(View.GONE);
80 | content.setVisibility(View.VISIBLE);
81 | }
82 | });
83 | }
84 |
85 | @Override
86 | public void onFailure(@Nonnull ApolloException e) {
87 | Log.d(ApolloDemoApplication.TAG, "Error:" + e.toString());
88 | }
89 | };
90 |
91 | private void fetchPosts() {
92 | Log.d(ApolloDemoApplication.TAG, "Fetch posts ....");
93 | application.apolloClient().query(
94 | AllPostsQuery.builder()
95 | .build()
96 | ).httpCachePolicy(HttpCachePolicy.CACHE_FIRST)
97 | .enqueue(allPostsQueryCallback);
98 | }
99 |
100 | private void createPost(String description, String imageUrl) {
101 | application.apolloClient().mutate(
102 | CreatePostMutation.builder()
103 | .description(description)
104 | .imageUrl(imageUrl)
105 | .build())
106 | .enqueue(createPostMutationCallback);
107 | }
108 |
109 | public boolean onCreateOptionsMenu(Menu menu) {
110 | MenuInflater inflater = getMenuInflater();
111 | inflater.inflate(R.menu.new_post, menu);
112 | return true;
113 | }
114 |
115 | public boolean onOptionsItemSelected(MenuItem item) {
116 | AlertDialog.Builder builder = new AlertDialog.Builder(this);
117 | LayoutInflater inflater = getLayoutInflater();
118 | View viewInflated = inflater.inflate(R.layout.dialog_create_post, null);
119 | final EditText descriptionInput = (EditText) viewInflated.findViewById(R.id.description);
120 | final EditText imageUrlInput = (EditText) viewInflated.findViewById(R.id.imageUrl);
121 |
122 | builder.setView(viewInflated)
123 | .setPositiveButton("Create", new DialogInterface.OnClickListener() {
124 | @Override
125 | public void onClick(DialogInterface dialog, int id) {
126 | String description = descriptionInput.getText().toString();
127 | String imageUrl = imageUrlInput.getText().toString();
128 | Log.d(ApolloDemoApplication.TAG, "Create post with: " + description + ", " + imageUrl);
129 | createPost(description, imageUrl);
130 | }
131 | })
132 | .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
133 | public void onClick(DialogInterface dialog, int id) {
134 |
135 | }
136 | });
137 |
138 | builder.show();
139 | return super.onOptionsItemSelected(item);
140 | }
141 |
142 |
143 |
144 | }
145 |
--------------------------------------------------------------------------------
/quickstart-with-apollo/ApolloDemo/app/src/main/graphql/com/schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "__schema": {
3 | "directives": [
4 | {
5 | "name": "include",
6 | "description": "Directs the executor to include this field or fragment only when the `if` argument is true.",
7 | "locations": [
8 | "FIELD",
9 | "FRAGMENT_SPREAD",
10 | "INLINE_FRAGMENT"
11 | ],
12 | "args": [
13 | {
14 | "name": "if",
15 | "description": "Included when true.",
16 | "type": {
17 | "kind": "NON_NULL",
18 | "name": null,
19 | "ofType": {
20 | "kind": "SCALAR",
21 | "name": "Boolean",
22 | "ofType": null
23 | }
24 | },
25 | "defaultValue": null
26 | }
27 | ]
28 | },
29 | {
30 | "name": "skip",
31 | "description": "Directs the executor to skip this field or fragment when the `if` argument is true.",
32 | "locations": [
33 | "FIELD",
34 | "FRAGMENT_SPREAD",
35 | "INLINE_FRAGMENT"
36 | ],
37 | "args": [
38 | {
39 | "name": "if",
40 | "description": "Included when true.",
41 | "type": {
42 | "kind": "NON_NULL",
43 | "name": null,
44 | "ofType": {
45 | "kind": "SCALAR",
46 | "name": "Boolean",
47 | "ofType": null
48 | }
49 | },
50 | "defaultValue": null
51 | }
52 | ]
53 | },
54 | {
55 | "name": "deprecated",
56 | "description": "Marks an element of a GraphQL schema as no longer supported.",
57 | "locations": [
58 | "ENUM_VALUE",
59 | "FIELD_DEFINITION"
60 | ],
61 | "args": [
62 | {
63 | "name": "reason",
64 | "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).",
65 | "type": {
66 | "kind": "SCALAR",
67 | "name": "String",
68 | "ofType": null
69 | },
70 | "defaultValue": "\"No longer supported\""
71 | }
72 | ]
73 | }
74 | ],
75 | "mutationType": {
76 | "name": "Mutation"
77 | },
78 | "subscriptionType": {
79 | "name": "Subscription"
80 | },
81 | "queryType": {
82 | "name": "Query"
83 | },
84 | "types": [
85 | {
86 | "inputFields": [
87 | {
88 | "name": "imageUrl",
89 | "description": "",
90 | "type": {
91 | "kind": "NON_NULL",
92 | "name": null,
93 | "ofType": {
94 | "kind": "SCALAR",
95 | "name": "String",
96 | "ofType": null
97 | }
98 | },
99 | "defaultValue": null
100 | },
101 | {
102 | "name": "description",
103 | "description": "",
104 | "type": {
105 | "kind": "NON_NULL",
106 | "name": null,
107 | "ofType": {
108 | "kind": "SCALAR",
109 | "name": "String",
110 | "ofType": null
111 | }
112 | },
113 | "defaultValue": null
114 | }
115 | ],
116 | "name": "CreatePost",
117 | "description": null,
118 | "interfaces": null,
119 | "enumValues": null,
120 | "fields": null,
121 | "kind": "INPUT_OBJECT",
122 | "possibleTypes": null
123 | },
124 | {
125 | "inputFields": null,
126 | "name": "Mutation",
127 | "description": null,
128 | "interfaces": [],
129 | "enumValues": null,
130 | "fields": [
131 | {
132 | "name": "createPost",
133 | "description": null,
134 | "isDeprecated": false,
135 | "deprecationReason": null,
136 | "args": [
137 | {
138 | "name": "imageUrl",
139 | "description": null,
140 | "type": {
141 | "kind": "NON_NULL",
142 | "name": null,
143 | "ofType": {
144 | "kind": "SCALAR",
145 | "name": "String",
146 | "ofType": null
147 | }
148 | },
149 | "defaultValue": null
150 | },
151 | {
152 | "name": "description",
153 | "description": null,
154 | "type": {
155 | "kind": "NON_NULL",
156 | "name": null,
157 | "ofType": {
158 | "kind": "SCALAR",
159 | "name": "String",
160 | "ofType": null
161 | }
162 | },
163 | "defaultValue": null
164 | }
165 | ],
166 | "type": {
167 | "kind": "OBJECT",
168 | "name": "Post",
169 | "ofType": null
170 | }
171 | },
172 | {
173 | "name": "updatePost",
174 | "description": null,
175 | "isDeprecated": false,
176 | "deprecationReason": null,
177 | "args": [
178 | {
179 | "name": "id",
180 | "description": null,
181 | "type": {
182 | "kind": "NON_NULL",
183 | "name": null,
184 | "ofType": {
185 | "kind": "SCALAR",
186 | "name": "ID",
187 | "ofType": null
188 | }
189 | },
190 | "defaultValue": null
191 | },
192 | {
193 | "name": "imageUrl",
194 | "description": null,
195 | "type": {
196 | "kind": "SCALAR",
197 | "name": "String",
198 | "ofType": null
199 | },
200 | "defaultValue": null
201 | },
202 | {
203 | "name": "description",
204 | "description": null,
205 | "type": {
206 | "kind": "SCALAR",
207 | "name": "String",
208 | "ofType": null
209 | },
210 | "defaultValue": null
211 | }
212 | ],
213 | "type": {
214 | "kind": "OBJECT",
215 | "name": "Post",
216 | "ofType": null
217 | }
218 | },
219 | {
220 | "name": "updateOrCreatePost",
221 | "description": null,
222 | "isDeprecated": false,
223 | "deprecationReason": null,
224 | "args": [
225 | {
226 | "name": "update",
227 | "description": null,
228 | "type": {
229 | "kind": "NON_NULL",
230 | "name": null,
231 | "ofType": {
232 | "kind": "INPUT_OBJECT",
233 | "name": "UpdatePost",
234 | "ofType": null
235 | }
236 | },
237 | "defaultValue": null
238 | },
239 | {
240 | "name": "create",
241 | "description": null,
242 | "type": {
243 | "kind": "NON_NULL",
244 | "name": null,
245 | "ofType": {
246 | "kind": "INPUT_OBJECT",
247 | "name": "CreatePost",
248 | "ofType": null
249 | }
250 | },
251 | "defaultValue": null
252 | }
253 | ],
254 | "type": {
255 | "kind": "OBJECT",
256 | "name": "Post",
257 | "ofType": null
258 | }
259 | },
260 | {
261 | "name": "deletePost",
262 | "description": null,
263 | "isDeprecated": false,
264 | "deprecationReason": null,
265 | "args": [
266 | {
267 | "name": "id",
268 | "description": null,
269 | "type": {
270 | "kind": "NON_NULL",
271 | "name": null,
272 | "ofType": {
273 | "kind": "SCALAR",
274 | "name": "ID",
275 | "ofType": null
276 | }
277 | },
278 | "defaultValue": null
279 | }
280 | ],
281 | "type": {
282 | "kind": "OBJECT",
283 | "name": "Post",
284 | "ofType": null
285 | }
286 | }
287 | ],
288 | "kind": "OBJECT",
289 | "possibleTypes": null
290 | },
291 | {
292 | "inputFields": null,
293 | "name": "PostPreviousValues",
294 | "description": null,
295 | "interfaces": [],
296 | "enumValues": null,
297 | "fields": [
298 | {
299 | "name": "id",
300 | "description": null,
301 | "isDeprecated": false,
302 | "deprecationReason": null,
303 | "args": [],
304 | "type": {
305 | "kind": "NON_NULL",
306 | "name": null,
307 | "ofType": {
308 | "kind": "SCALAR",
309 | "name": "ID",
310 | "ofType": null
311 | }
312 | }
313 | },
314 | {
315 | "name": "imageUrl",
316 | "description": null,
317 | "isDeprecated": false,
318 | "deprecationReason": null,
319 | "args": [],
320 | "type": {
321 | "kind": "NON_NULL",
322 | "name": null,
323 | "ofType": {
324 | "kind": "SCALAR",
325 | "name": "String",
326 | "ofType": null
327 | }
328 | }
329 | },
330 | {
331 | "name": "description",
332 | "description": null,
333 | "isDeprecated": false,
334 | "deprecationReason": null,
335 | "args": [],
336 | "type": {
337 | "kind": "NON_NULL",
338 | "name": null,
339 | "ofType": {
340 | "kind": "SCALAR",
341 | "name": "String",
342 | "ofType": null
343 | }
344 | }
345 | }
346 | ],
347 | "kind": "OBJECT",
348 | "possibleTypes": null
349 | },
350 | {
351 | "inputFields": [
352 | {
353 | "name": "AND",
354 | "description": "Logical AND on all given filters.",
355 | "type": {
356 | "kind": "LIST",
357 | "name": null,
358 | "ofType": {
359 | "kind": "NON_NULL",
360 | "name": null,
361 | "ofType": {
362 | "kind": "INPUT_OBJECT",
363 | "name": "PostSubscriptionFilter",
364 | "ofType": null
365 | }
366 | }
367 | },
368 | "defaultValue": null
369 | },
370 | {
371 | "name": "OR",
372 | "description": "Logical OR on all given filters.",
373 | "type": {
374 | "kind": "LIST",
375 | "name": null,
376 | "ofType": {
377 | "kind": "NON_NULL",
378 | "name": null,
379 | "ofType": {
380 | "kind": "INPUT_OBJECT",
381 | "name": "PostSubscriptionFilter",
382 | "ofType": null
383 | }
384 | }
385 | },
386 | "defaultValue": null
387 | },
388 | {
389 | "name": "mutation_in",
390 | "description": "The subscription event gets dispatched when it's listed in mutation_in",
391 | "type": {
392 | "kind": "LIST",
393 | "name": null,
394 | "ofType": {
395 | "kind": "NON_NULL",
396 | "name": null,
397 | "ofType": {
398 | "kind": "ENUM",
399 | "name": "_ModelMutationType",
400 | "ofType": null
401 | }
402 | }
403 | },
404 | "defaultValue": null
405 | },
406 | {
407 | "name": "updatedFields_contains",
408 | "description": "The subscription event gets only dispatched when one of the updated fields names is included in this list",
409 | "type": {
410 | "kind": "SCALAR",
411 | "name": "String",
412 | "ofType": null
413 | },
414 | "defaultValue": null
415 | },
416 | {
417 | "name": "updatedFields_contains_every",
418 | "description": "The subscription event gets only dispatched when all of the field names included in this list have been updated",
419 | "type": {
420 | "kind": "LIST",
421 | "name": null,
422 | "ofType": {
423 | "kind": "NON_NULL",
424 | "name": null,
425 | "ofType": {
426 | "kind": "SCALAR",
427 | "name": "String",
428 | "ofType": null
429 | }
430 | }
431 | },
432 | "defaultValue": null
433 | },
434 | {
435 | "name": "updatedFields_contains_some",
436 | "description": "The subscription event gets only dispatched when some of the field names included in this list have been updated",
437 | "type": {
438 | "kind": "LIST",
439 | "name": null,
440 | "ofType": {
441 | "kind": "NON_NULL",
442 | "name": null,
443 | "ofType": {
444 | "kind": "SCALAR",
445 | "name": "String",
446 | "ofType": null
447 | }
448 | }
449 | },
450 | "defaultValue": null
451 | },
452 | {
453 | "name": "node",
454 | "description": null,
455 | "type": {
456 | "kind": "INPUT_OBJECT",
457 | "name": "PostSubscriptionFilterNode",
458 | "ofType": null
459 | },
460 | "defaultValue": null
461 | }
462 | ],
463 | "name": "PostSubscriptionFilter",
464 | "description": null,
465 | "interfaces": null,
466 | "enumValues": null,
467 | "fields": null,
468 | "kind": "INPUT_OBJECT",
469 | "possibleTypes": null
470 | },
471 | {
472 | "inputFields": [
473 | {
474 | "name": "id",
475 | "description": "",
476 | "type": {
477 | "kind": "SCALAR",
478 | "name": "ID",
479 | "ofType": null
480 | },
481 | "defaultValue": null
482 | },
483 | {
484 | "name": "id_not",
485 | "description": "All values that are not equal to given value.",
486 | "type": {
487 | "kind": "SCALAR",
488 | "name": "ID",
489 | "ofType": null
490 | },
491 | "defaultValue": null
492 | },
493 | {
494 | "name": "id_in",
495 | "description": "All values that are contained in given list.",
496 | "type": {
497 | "kind": "LIST",
498 | "name": null,
499 | "ofType": {
500 | "kind": "NON_NULL",
501 | "name": null,
502 | "ofType": {
503 | "kind": "SCALAR",
504 | "name": "ID",
505 | "ofType": null
506 | }
507 | }
508 | },
509 | "defaultValue": null
510 | },
511 | {
512 | "name": "id_not_in",
513 | "description": "All values that are not contained in given list.",
514 | "type": {
515 | "kind": "LIST",
516 | "name": null,
517 | "ofType": {
518 | "kind": "NON_NULL",
519 | "name": null,
520 | "ofType": {
521 | "kind": "SCALAR",
522 | "name": "ID",
523 | "ofType": null
524 | }
525 | }
526 | },
527 | "defaultValue": null
528 | },
529 | {
530 | "name": "id_lt",
531 | "description": "All values less than the given value.",
532 | "type": {
533 | "kind": "SCALAR",
534 | "name": "ID",
535 | "ofType": null
536 | },
537 | "defaultValue": null
538 | },
539 | {
540 | "name": "id_lte",
541 | "description": "All values less than or equal the given value.",
542 | "type": {
543 | "kind": "SCALAR",
544 | "name": "ID",
545 | "ofType": null
546 | },
547 | "defaultValue": null
548 | },
549 | {
550 | "name": "id_gt",
551 | "description": "All values greater than the given value.",
552 | "type": {
553 | "kind": "SCALAR",
554 | "name": "ID",
555 | "ofType": null
556 | },
557 | "defaultValue": null
558 | },
559 | {
560 | "name": "id_gte",
561 | "description": "All values greater than or equal the given value.",
562 | "type": {
563 | "kind": "SCALAR",
564 | "name": "ID",
565 | "ofType": null
566 | },
567 | "defaultValue": null
568 | },
569 | {
570 | "name": "id_contains",
571 | "description": "All values containing the given string.",
572 | "type": {
573 | "kind": "SCALAR",
574 | "name": "ID",
575 | "ofType": null
576 | },
577 | "defaultValue": null
578 | },
579 | {
580 | "name": "id_not_contains",
581 | "description": "All values not containing the given string.",
582 | "type": {
583 | "kind": "SCALAR",
584 | "name": "ID",
585 | "ofType": null
586 | },
587 | "defaultValue": null
588 | },
589 | {
590 | "name": "id_starts_with",
591 | "description": "All values starting with the given string.",
592 | "type": {
593 | "kind": "SCALAR",
594 | "name": "ID",
595 | "ofType": null
596 | },
597 | "defaultValue": null
598 | },
599 | {
600 | "name": "id_not_starts_with",
601 | "description": "All values not starting with the given string.",
602 | "type": {
603 | "kind": "SCALAR",
604 | "name": "ID",
605 | "ofType": null
606 | },
607 | "defaultValue": null
608 | },
609 | {
610 | "name": "id_ends_with",
611 | "description": "All values ending with the given string.",
612 | "type": {
613 | "kind": "SCALAR",
614 | "name": "ID",
615 | "ofType": null
616 | },
617 | "defaultValue": null
618 | },
619 | {
620 | "name": "id_not_ends_with",
621 | "description": "All values not ending with the given string.",
622 | "type": {
623 | "kind": "SCALAR",
624 | "name": "ID",
625 | "ofType": null
626 | },
627 | "defaultValue": null
628 | },
629 | {
630 | "name": "imageUrl",
631 | "description": "",
632 | "type": {
633 | "kind": "SCALAR",
634 | "name": "String",
635 | "ofType": null
636 | },
637 | "defaultValue": null
638 | },
639 | {
640 | "name": "imageUrl_not",
641 | "description": "All values that are not equal to given value.",
642 | "type": {
643 | "kind": "SCALAR",
644 | "name": "String",
645 | "ofType": null
646 | },
647 | "defaultValue": null
648 | },
649 | {
650 | "name": "imageUrl_in",
651 | "description": "All values that are contained in given list.",
652 | "type": {
653 | "kind": "LIST",
654 | "name": null,
655 | "ofType": {
656 | "kind": "NON_NULL",
657 | "name": null,
658 | "ofType": {
659 | "kind": "SCALAR",
660 | "name": "String",
661 | "ofType": null
662 | }
663 | }
664 | },
665 | "defaultValue": null
666 | },
667 | {
668 | "name": "imageUrl_not_in",
669 | "description": "All values that are not contained in given list.",
670 | "type": {
671 | "kind": "LIST",
672 | "name": null,
673 | "ofType": {
674 | "kind": "NON_NULL",
675 | "name": null,
676 | "ofType": {
677 | "kind": "SCALAR",
678 | "name": "String",
679 | "ofType": null
680 | }
681 | }
682 | },
683 | "defaultValue": null
684 | },
685 | {
686 | "name": "imageUrl_lt",
687 | "description": "All values less than the given value.",
688 | "type": {
689 | "kind": "SCALAR",
690 | "name": "String",
691 | "ofType": null
692 | },
693 | "defaultValue": null
694 | },
695 | {
696 | "name": "imageUrl_lte",
697 | "description": "All values less than or equal the given value.",
698 | "type": {
699 | "kind": "SCALAR",
700 | "name": "String",
701 | "ofType": null
702 | },
703 | "defaultValue": null
704 | },
705 | {
706 | "name": "imageUrl_gt",
707 | "description": "All values greater than the given value.",
708 | "type": {
709 | "kind": "SCALAR",
710 | "name": "String",
711 | "ofType": null
712 | },
713 | "defaultValue": null
714 | },
715 | {
716 | "name": "imageUrl_gte",
717 | "description": "All values greater than or equal the given value.",
718 | "type": {
719 | "kind": "SCALAR",
720 | "name": "String",
721 | "ofType": null
722 | },
723 | "defaultValue": null
724 | },
725 | {
726 | "name": "imageUrl_contains",
727 | "description": "All values containing the given string.",
728 | "type": {
729 | "kind": "SCALAR",
730 | "name": "String",
731 | "ofType": null
732 | },
733 | "defaultValue": null
734 | },
735 | {
736 | "name": "imageUrl_not_contains",
737 | "description": "All values not containing the given string.",
738 | "type": {
739 | "kind": "SCALAR",
740 | "name": "String",
741 | "ofType": null
742 | },
743 | "defaultValue": null
744 | },
745 | {
746 | "name": "imageUrl_starts_with",
747 | "description": "All values starting with the given string.",
748 | "type": {
749 | "kind": "SCALAR",
750 | "name": "String",
751 | "ofType": null
752 | },
753 | "defaultValue": null
754 | },
755 | {
756 | "name": "imageUrl_not_starts_with",
757 | "description": "All values not starting with the given string.",
758 | "type": {
759 | "kind": "SCALAR",
760 | "name": "String",
761 | "ofType": null
762 | },
763 | "defaultValue": null
764 | },
765 | {
766 | "name": "imageUrl_ends_with",
767 | "description": "All values ending with the given string.",
768 | "type": {
769 | "kind": "SCALAR",
770 | "name": "String",
771 | "ofType": null
772 | },
773 | "defaultValue": null
774 | },
775 | {
776 | "name": "imageUrl_not_ends_with",
777 | "description": "All values not ending with the given string.",
778 | "type": {
779 | "kind": "SCALAR",
780 | "name": "String",
781 | "ofType": null
782 | },
783 | "defaultValue": null
784 | },
785 | {
786 | "name": "description",
787 | "description": "",
788 | "type": {
789 | "kind": "SCALAR",
790 | "name": "String",
791 | "ofType": null
792 | },
793 | "defaultValue": null
794 | },
795 | {
796 | "name": "description_not",
797 | "description": "All values that are not equal to given value.",
798 | "type": {
799 | "kind": "SCALAR",
800 | "name": "String",
801 | "ofType": null
802 | },
803 | "defaultValue": null
804 | },
805 | {
806 | "name": "description_in",
807 | "description": "All values that are contained in given list.",
808 | "type": {
809 | "kind": "LIST",
810 | "name": null,
811 | "ofType": {
812 | "kind": "NON_NULL",
813 | "name": null,
814 | "ofType": {
815 | "kind": "SCALAR",
816 | "name": "String",
817 | "ofType": null
818 | }
819 | }
820 | },
821 | "defaultValue": null
822 | },
823 | {
824 | "name": "description_not_in",
825 | "description": "All values that are not contained in given list.",
826 | "type": {
827 | "kind": "LIST",
828 | "name": null,
829 | "ofType": {
830 | "kind": "NON_NULL",
831 | "name": null,
832 | "ofType": {
833 | "kind": "SCALAR",
834 | "name": "String",
835 | "ofType": null
836 | }
837 | }
838 | },
839 | "defaultValue": null
840 | },
841 | {
842 | "name": "description_lt",
843 | "description": "All values less than the given value.",
844 | "type": {
845 | "kind": "SCALAR",
846 | "name": "String",
847 | "ofType": null
848 | },
849 | "defaultValue": null
850 | },
851 | {
852 | "name": "description_lte",
853 | "description": "All values less than or equal the given value.",
854 | "type": {
855 | "kind": "SCALAR",
856 | "name": "String",
857 | "ofType": null
858 | },
859 | "defaultValue": null
860 | },
861 | {
862 | "name": "description_gt",
863 | "description": "All values greater than the given value.",
864 | "type": {
865 | "kind": "SCALAR",
866 | "name": "String",
867 | "ofType": null
868 | },
869 | "defaultValue": null
870 | },
871 | {
872 | "name": "description_gte",
873 | "description": "All values greater than or equal the given value.",
874 | "type": {
875 | "kind": "SCALAR",
876 | "name": "String",
877 | "ofType": null
878 | },
879 | "defaultValue": null
880 | },
881 | {
882 | "name": "description_contains",
883 | "description": "All values containing the given string.",
884 | "type": {
885 | "kind": "SCALAR",
886 | "name": "String",
887 | "ofType": null
888 | },
889 | "defaultValue": null
890 | },
891 | {
892 | "name": "description_not_contains",
893 | "description": "All values not containing the given string.",
894 | "type": {
895 | "kind": "SCALAR",
896 | "name": "String",
897 | "ofType": null
898 | },
899 | "defaultValue": null
900 | },
901 | {
902 | "name": "description_starts_with",
903 | "description": "All values starting with the given string.",
904 | "type": {
905 | "kind": "SCALAR",
906 | "name": "String",
907 | "ofType": null
908 | },
909 | "defaultValue": null
910 | },
911 | {
912 | "name": "description_not_starts_with",
913 | "description": "All values not starting with the given string.",
914 | "type": {
915 | "kind": "SCALAR",
916 | "name": "String",
917 | "ofType": null
918 | },
919 | "defaultValue": null
920 | },
921 | {
922 | "name": "description_ends_with",
923 | "description": "All values ending with the given string.",
924 | "type": {
925 | "kind": "SCALAR",
926 | "name": "String",
927 | "ofType": null
928 | },
929 | "defaultValue": null
930 | },
931 | {
932 | "name": "description_not_ends_with",
933 | "description": "All values not ending with the given string.",
934 | "type": {
935 | "kind": "SCALAR",
936 | "name": "String",
937 | "ofType": null
938 | },
939 | "defaultValue": null
940 | }
941 | ],
942 | "name": "PostSubscriptionFilterNode",
943 | "description": null,
944 | "interfaces": null,
945 | "enumValues": null,
946 | "fields": null,
947 | "kind": "INPUT_OBJECT",
948 | "possibleTypes": null
949 | },
950 | {
951 | "inputFields": null,
952 | "name": "PostSubscriptionPayload",
953 | "description": null,
954 | "interfaces": [],
955 | "enumValues": null,
956 | "fields": [
957 | {
958 | "name": "mutation",
959 | "description": null,
960 | "isDeprecated": false,
961 | "deprecationReason": null,
962 | "args": [],
963 | "type": {
964 | "kind": "NON_NULL",
965 | "name": null,
966 | "ofType": {
967 | "kind": "ENUM",
968 | "name": "_ModelMutationType",
969 | "ofType": null
970 | }
971 | }
972 | },
973 | {
974 | "name": "node",
975 | "description": null,
976 | "isDeprecated": false,
977 | "deprecationReason": null,
978 | "args": [],
979 | "type": {
980 | "kind": "OBJECT",
981 | "name": "Post",
982 | "ofType": null
983 | }
984 | },
985 | {
986 | "name": "updatedFields",
987 | "description": null,
988 | "isDeprecated": false,
989 | "deprecationReason": null,
990 | "args": [],
991 | "type": {
992 | "kind": "LIST",
993 | "name": null,
994 | "ofType": {
995 | "kind": "NON_NULL",
996 | "name": null,
997 | "ofType": {
998 | "kind": "SCALAR",
999 | "name": "String",
1000 | "ofType": null
1001 | }
1002 | }
1003 | }
1004 | },
1005 | {
1006 | "name": "previousValues",
1007 | "description": null,
1008 | "isDeprecated": false,
1009 | "deprecationReason": null,
1010 | "args": [],
1011 | "type": {
1012 | "kind": "OBJECT",
1013 | "name": "PostPreviousValues",
1014 | "ofType": null
1015 | }
1016 | }
1017 | ],
1018 | "kind": "OBJECT",
1019 | "possibleTypes": null
1020 | },
1021 | {
1022 | "inputFields": null,
1023 | "name": "Subscription",
1024 | "description": null,
1025 | "interfaces": [],
1026 | "enumValues": null,
1027 | "fields": [
1028 | {
1029 | "name": "Post",
1030 | "description": null,
1031 | "isDeprecated": false,
1032 | "deprecationReason": null,
1033 | "args": [
1034 | {
1035 | "name": "filter",
1036 | "description": "",
1037 | "type": {
1038 | "kind": "INPUT_OBJECT",
1039 | "name": "PostSubscriptionFilter",
1040 | "ofType": null
1041 | },
1042 | "defaultValue": null
1043 | }
1044 | ],
1045 | "type": {
1046 | "kind": "OBJECT",
1047 | "name": "PostSubscriptionPayload",
1048 | "ofType": null
1049 | }
1050 | }
1051 | ],
1052 | "kind": "OBJECT",
1053 | "possibleTypes": null
1054 | },
1055 | {
1056 | "inputFields": [
1057 | {
1058 | "name": "id",
1059 | "description": "",
1060 | "type": {
1061 | "kind": "NON_NULL",
1062 | "name": null,
1063 | "ofType": {
1064 | "kind": "SCALAR",
1065 | "name": "ID",
1066 | "ofType": null
1067 | }
1068 | },
1069 | "defaultValue": null
1070 | },
1071 | {
1072 | "name": "imageUrl",
1073 | "description": "",
1074 | "type": {
1075 | "kind": "SCALAR",
1076 | "name": "String",
1077 | "ofType": null
1078 | },
1079 | "defaultValue": null
1080 | },
1081 | {
1082 | "name": "description",
1083 | "description": "",
1084 | "type": {
1085 | "kind": "SCALAR",
1086 | "name": "String",
1087 | "ofType": null
1088 | },
1089 | "defaultValue": null
1090 | }
1091 | ],
1092 | "name": "UpdatePost",
1093 | "description": null,
1094 | "interfaces": null,
1095 | "enumValues": null,
1096 | "fields": null,
1097 | "kind": "INPUT_OBJECT",
1098 | "possibleTypes": null
1099 | },
1100 | {
1101 | "inputFields": null,
1102 | "name": "_ModelMutationType",
1103 | "description": null,
1104 | "interfaces": null,
1105 | "enumValues": [
1106 | {
1107 | "name": "CREATED",
1108 | "description": null,
1109 | "isDeprecated": false,
1110 | "deprecationReason": null
1111 | },
1112 | {
1113 | "name": "UPDATED",
1114 | "description": null,
1115 | "isDeprecated": false,
1116 | "deprecationReason": null
1117 | },
1118 | {
1119 | "name": "DELETED",
1120 | "description": null,
1121 | "isDeprecated": false,
1122 | "deprecationReason": null
1123 | }
1124 | ],
1125 | "fields": null,
1126 | "kind": "ENUM",
1127 | "possibleTypes": null
1128 | },
1129 | {
1130 | "inputFields": null,
1131 | "name": "HelloPayload",
1132 | "description": "HelloPayload",
1133 | "interfaces": [],
1134 | "enumValues": null,
1135 | "fields": [
1136 | {
1137 | "name": "message",
1138 | "description": null,
1139 | "isDeprecated": false,
1140 | "deprecationReason": null,
1141 | "args": [],
1142 | "type": {
1143 | "kind": "NON_NULL",
1144 | "name": null,
1145 | "ofType": {
1146 | "kind": "SCALAR",
1147 | "name": "String",
1148 | "ofType": null
1149 | }
1150 | }
1151 | }
1152 | ],
1153 | "kind": "OBJECT",
1154 | "possibleTypes": null
1155 | },
1156 | {
1157 | "inputFields": null,
1158 | "name": "Node",
1159 | "description": "An object with an ID",
1160 | "interfaces": null,
1161 | "enumValues": null,
1162 | "fields": [
1163 | {
1164 | "name": "id",
1165 | "description": "The id of the object.",
1166 | "isDeprecated": false,
1167 | "deprecationReason": null,
1168 | "args": [],
1169 | "type": {
1170 | "kind": "NON_NULL",
1171 | "name": null,
1172 | "ofType": {
1173 | "kind": "SCALAR",
1174 | "name": "ID",
1175 | "ofType": null
1176 | }
1177 | }
1178 | }
1179 | ],
1180 | "kind": "INTERFACE",
1181 | "possibleTypes": [
1182 | {
1183 | "kind": "OBJECT",
1184 | "name": "Post",
1185 | "ofType": null
1186 | }
1187 | ]
1188 | },
1189 | {
1190 | "inputFields": null,
1191 | "name": "Post",
1192 | "description": null,
1193 | "interfaces": [
1194 | {
1195 | "kind": "INTERFACE",
1196 | "name": "Node",
1197 | "ofType": null
1198 | }
1199 | ],
1200 | "enumValues": null,
1201 | "fields": [
1202 | {
1203 | "name": "id",
1204 | "description": null,
1205 | "isDeprecated": false,
1206 | "deprecationReason": null,
1207 | "args": [],
1208 | "type": {
1209 | "kind": "NON_NULL",
1210 | "name": null,
1211 | "ofType": {
1212 | "kind": "SCALAR",
1213 | "name": "ID",
1214 | "ofType": null
1215 | }
1216 | }
1217 | },
1218 | {
1219 | "name": "imageUrl",
1220 | "description": null,
1221 | "isDeprecated": false,
1222 | "deprecationReason": null,
1223 | "args": [],
1224 | "type": {
1225 | "kind": "NON_NULL",
1226 | "name": null,
1227 | "ofType": {
1228 | "kind": "SCALAR",
1229 | "name": "String",
1230 | "ofType": null
1231 | }
1232 | }
1233 | },
1234 | {
1235 | "name": "description",
1236 | "description": null,
1237 | "isDeprecated": false,
1238 | "deprecationReason": null,
1239 | "args": [],
1240 | "type": {
1241 | "kind": "NON_NULL",
1242 | "name": null,
1243 | "ofType": {
1244 | "kind": "SCALAR",
1245 | "name": "String",
1246 | "ofType": null
1247 | }
1248 | }
1249 | }
1250 | ],
1251 | "kind": "OBJECT",
1252 | "possibleTypes": null
1253 | },
1254 | {
1255 | "inputFields": [
1256 | {
1257 | "name": "AND",
1258 | "description": "Logical AND on all given filters.",
1259 | "type": {
1260 | "kind": "LIST",
1261 | "name": null,
1262 | "ofType": {
1263 | "kind": "NON_NULL",
1264 | "name": null,
1265 | "ofType": {
1266 | "kind": "INPUT_OBJECT",
1267 | "name": "PostFilter",
1268 | "ofType": null
1269 | }
1270 | }
1271 | },
1272 | "defaultValue": null
1273 | },
1274 | {
1275 | "name": "OR",
1276 | "description": "Logical OR on all given filters.",
1277 | "type": {
1278 | "kind": "LIST",
1279 | "name": null,
1280 | "ofType": {
1281 | "kind": "NON_NULL",
1282 | "name": null,
1283 | "ofType": {
1284 | "kind": "INPUT_OBJECT",
1285 | "name": "PostFilter",
1286 | "ofType": null
1287 | }
1288 | }
1289 | },
1290 | "defaultValue": null
1291 | },
1292 | {
1293 | "name": "id",
1294 | "description": "",
1295 | "type": {
1296 | "kind": "SCALAR",
1297 | "name": "ID",
1298 | "ofType": null
1299 | },
1300 | "defaultValue": null
1301 | },
1302 | {
1303 | "name": "id_not",
1304 | "description": "All values that are not equal to given value.",
1305 | "type": {
1306 | "kind": "SCALAR",
1307 | "name": "ID",
1308 | "ofType": null
1309 | },
1310 | "defaultValue": null
1311 | },
1312 | {
1313 | "name": "id_in",
1314 | "description": "All values that are contained in given list.",
1315 | "type": {
1316 | "kind": "LIST",
1317 | "name": null,
1318 | "ofType": {
1319 | "kind": "NON_NULL",
1320 | "name": null,
1321 | "ofType": {
1322 | "kind": "SCALAR",
1323 | "name": "ID",
1324 | "ofType": null
1325 | }
1326 | }
1327 | },
1328 | "defaultValue": null
1329 | },
1330 | {
1331 | "name": "id_not_in",
1332 | "description": "All values that are not contained in given list.",
1333 | "type": {
1334 | "kind": "LIST",
1335 | "name": null,
1336 | "ofType": {
1337 | "kind": "NON_NULL",
1338 | "name": null,
1339 | "ofType": {
1340 | "kind": "SCALAR",
1341 | "name": "ID",
1342 | "ofType": null
1343 | }
1344 | }
1345 | },
1346 | "defaultValue": null
1347 | },
1348 | {
1349 | "name": "id_lt",
1350 | "description": "All values less than the given value.",
1351 | "type": {
1352 | "kind": "SCALAR",
1353 | "name": "ID",
1354 | "ofType": null
1355 | },
1356 | "defaultValue": null
1357 | },
1358 | {
1359 | "name": "id_lte",
1360 | "description": "All values less than or equal the given value.",
1361 | "type": {
1362 | "kind": "SCALAR",
1363 | "name": "ID",
1364 | "ofType": null
1365 | },
1366 | "defaultValue": null
1367 | },
1368 | {
1369 | "name": "id_gt",
1370 | "description": "All values greater than the given value.",
1371 | "type": {
1372 | "kind": "SCALAR",
1373 | "name": "ID",
1374 | "ofType": null
1375 | },
1376 | "defaultValue": null
1377 | },
1378 | {
1379 | "name": "id_gte",
1380 | "description": "All values greater than or equal the given value.",
1381 | "type": {
1382 | "kind": "SCALAR",
1383 | "name": "ID",
1384 | "ofType": null
1385 | },
1386 | "defaultValue": null
1387 | },
1388 | {
1389 | "name": "id_contains",
1390 | "description": "All values containing the given string.",
1391 | "type": {
1392 | "kind": "SCALAR",
1393 | "name": "ID",
1394 | "ofType": null
1395 | },
1396 | "defaultValue": null
1397 | },
1398 | {
1399 | "name": "id_not_contains",
1400 | "description": "All values not containing the given string.",
1401 | "type": {
1402 | "kind": "SCALAR",
1403 | "name": "ID",
1404 | "ofType": null
1405 | },
1406 | "defaultValue": null
1407 | },
1408 | {
1409 | "name": "id_starts_with",
1410 | "description": "All values starting with the given string.",
1411 | "type": {
1412 | "kind": "SCALAR",
1413 | "name": "ID",
1414 | "ofType": null
1415 | },
1416 | "defaultValue": null
1417 | },
1418 | {
1419 | "name": "id_not_starts_with",
1420 | "description": "All values not starting with the given string.",
1421 | "type": {
1422 | "kind": "SCALAR",
1423 | "name": "ID",
1424 | "ofType": null
1425 | },
1426 | "defaultValue": null
1427 | },
1428 | {
1429 | "name": "id_ends_with",
1430 | "description": "All values ending with the given string.",
1431 | "type": {
1432 | "kind": "SCALAR",
1433 | "name": "ID",
1434 | "ofType": null
1435 | },
1436 | "defaultValue": null
1437 | },
1438 | {
1439 | "name": "id_not_ends_with",
1440 | "description": "All values not ending with the given string.",
1441 | "type": {
1442 | "kind": "SCALAR",
1443 | "name": "ID",
1444 | "ofType": null
1445 | },
1446 | "defaultValue": null
1447 | },
1448 | {
1449 | "name": "imageUrl",
1450 | "description": "",
1451 | "type": {
1452 | "kind": "SCALAR",
1453 | "name": "String",
1454 | "ofType": null
1455 | },
1456 | "defaultValue": null
1457 | },
1458 | {
1459 | "name": "imageUrl_not",
1460 | "description": "All values that are not equal to given value.",
1461 | "type": {
1462 | "kind": "SCALAR",
1463 | "name": "String",
1464 | "ofType": null
1465 | },
1466 | "defaultValue": null
1467 | },
1468 | {
1469 | "name": "imageUrl_in",
1470 | "description": "All values that are contained in given list.",
1471 | "type": {
1472 | "kind": "LIST",
1473 | "name": null,
1474 | "ofType": {
1475 | "kind": "NON_NULL",
1476 | "name": null,
1477 | "ofType": {
1478 | "kind": "SCALAR",
1479 | "name": "String",
1480 | "ofType": null
1481 | }
1482 | }
1483 | },
1484 | "defaultValue": null
1485 | },
1486 | {
1487 | "name": "imageUrl_not_in",
1488 | "description": "All values that are not contained in given list.",
1489 | "type": {
1490 | "kind": "LIST",
1491 | "name": null,
1492 | "ofType": {
1493 | "kind": "NON_NULL",
1494 | "name": null,
1495 | "ofType": {
1496 | "kind": "SCALAR",
1497 | "name": "String",
1498 | "ofType": null
1499 | }
1500 | }
1501 | },
1502 | "defaultValue": null
1503 | },
1504 | {
1505 | "name": "imageUrl_lt",
1506 | "description": "All values less than the given value.",
1507 | "type": {
1508 | "kind": "SCALAR",
1509 | "name": "String",
1510 | "ofType": null
1511 | },
1512 | "defaultValue": null
1513 | },
1514 | {
1515 | "name": "imageUrl_lte",
1516 | "description": "All values less than or equal the given value.",
1517 | "type": {
1518 | "kind": "SCALAR",
1519 | "name": "String",
1520 | "ofType": null
1521 | },
1522 | "defaultValue": null
1523 | },
1524 | {
1525 | "name": "imageUrl_gt",
1526 | "description": "All values greater than the given value.",
1527 | "type": {
1528 | "kind": "SCALAR",
1529 | "name": "String",
1530 | "ofType": null
1531 | },
1532 | "defaultValue": null
1533 | },
1534 | {
1535 | "name": "imageUrl_gte",
1536 | "description": "All values greater than or equal the given value.",
1537 | "type": {
1538 | "kind": "SCALAR",
1539 | "name": "String",
1540 | "ofType": null
1541 | },
1542 | "defaultValue": null
1543 | },
1544 | {
1545 | "name": "imageUrl_contains",
1546 | "description": "All values containing the given string.",
1547 | "type": {
1548 | "kind": "SCALAR",
1549 | "name": "String",
1550 | "ofType": null
1551 | },
1552 | "defaultValue": null
1553 | },
1554 | {
1555 | "name": "imageUrl_not_contains",
1556 | "description": "All values not containing the given string.",
1557 | "type": {
1558 | "kind": "SCALAR",
1559 | "name": "String",
1560 | "ofType": null
1561 | },
1562 | "defaultValue": null
1563 | },
1564 | {
1565 | "name": "imageUrl_starts_with",
1566 | "description": "All values starting with the given string.",
1567 | "type": {
1568 | "kind": "SCALAR",
1569 | "name": "String",
1570 | "ofType": null
1571 | },
1572 | "defaultValue": null
1573 | },
1574 | {
1575 | "name": "imageUrl_not_starts_with",
1576 | "description": "All values not starting with the given string.",
1577 | "type": {
1578 | "kind": "SCALAR",
1579 | "name": "String",
1580 | "ofType": null
1581 | },
1582 | "defaultValue": null
1583 | },
1584 | {
1585 | "name": "imageUrl_ends_with",
1586 | "description": "All values ending with the given string.",
1587 | "type": {
1588 | "kind": "SCALAR",
1589 | "name": "String",
1590 | "ofType": null
1591 | },
1592 | "defaultValue": null
1593 | },
1594 | {
1595 | "name": "imageUrl_not_ends_with",
1596 | "description": "All values not ending with the given string.",
1597 | "type": {
1598 | "kind": "SCALAR",
1599 | "name": "String",
1600 | "ofType": null
1601 | },
1602 | "defaultValue": null
1603 | },
1604 | {
1605 | "name": "description",
1606 | "description": "",
1607 | "type": {
1608 | "kind": "SCALAR",
1609 | "name": "String",
1610 | "ofType": null
1611 | },
1612 | "defaultValue": null
1613 | },
1614 | {
1615 | "name": "description_not",
1616 | "description": "All values that are not equal to given value.",
1617 | "type": {
1618 | "kind": "SCALAR",
1619 | "name": "String",
1620 | "ofType": null
1621 | },
1622 | "defaultValue": null
1623 | },
1624 | {
1625 | "name": "description_in",
1626 | "description": "All values that are contained in given list.",
1627 | "type": {
1628 | "kind": "LIST",
1629 | "name": null,
1630 | "ofType": {
1631 | "kind": "NON_NULL",
1632 | "name": null,
1633 | "ofType": {
1634 | "kind": "SCALAR",
1635 | "name": "String",
1636 | "ofType": null
1637 | }
1638 | }
1639 | },
1640 | "defaultValue": null
1641 | },
1642 | {
1643 | "name": "description_not_in",
1644 | "description": "All values that are not contained in given list.",
1645 | "type": {
1646 | "kind": "LIST",
1647 | "name": null,
1648 | "ofType": {
1649 | "kind": "NON_NULL",
1650 | "name": null,
1651 | "ofType": {
1652 | "kind": "SCALAR",
1653 | "name": "String",
1654 | "ofType": null
1655 | }
1656 | }
1657 | },
1658 | "defaultValue": null
1659 | },
1660 | {
1661 | "name": "description_lt",
1662 | "description": "All values less than the given value.",
1663 | "type": {
1664 | "kind": "SCALAR",
1665 | "name": "String",
1666 | "ofType": null
1667 | },
1668 | "defaultValue": null
1669 | },
1670 | {
1671 | "name": "description_lte",
1672 | "description": "All values less than or equal the given value.",
1673 | "type": {
1674 | "kind": "SCALAR",
1675 | "name": "String",
1676 | "ofType": null
1677 | },
1678 | "defaultValue": null
1679 | },
1680 | {
1681 | "name": "description_gt",
1682 | "description": "All values greater than the given value.",
1683 | "type": {
1684 | "kind": "SCALAR",
1685 | "name": "String",
1686 | "ofType": null
1687 | },
1688 | "defaultValue": null
1689 | },
1690 | {
1691 | "name": "description_gte",
1692 | "description": "All values greater than or equal the given value.",
1693 | "type": {
1694 | "kind": "SCALAR",
1695 | "name": "String",
1696 | "ofType": null
1697 | },
1698 | "defaultValue": null
1699 | },
1700 | {
1701 | "name": "description_contains",
1702 | "description": "All values containing the given string.",
1703 | "type": {
1704 | "kind": "SCALAR",
1705 | "name": "String",
1706 | "ofType": null
1707 | },
1708 | "defaultValue": null
1709 | },
1710 | {
1711 | "name": "description_not_contains",
1712 | "description": "All values not containing the given string.",
1713 | "type": {
1714 | "kind": "SCALAR",
1715 | "name": "String",
1716 | "ofType": null
1717 | },
1718 | "defaultValue": null
1719 | },
1720 | {
1721 | "name": "description_starts_with",
1722 | "description": "All values starting with the given string.",
1723 | "type": {
1724 | "kind": "SCALAR",
1725 | "name": "String",
1726 | "ofType": null
1727 | },
1728 | "defaultValue": null
1729 | },
1730 | {
1731 | "name": "description_not_starts_with",
1732 | "description": "All values not starting with the given string.",
1733 | "type": {
1734 | "kind": "SCALAR",
1735 | "name": "String",
1736 | "ofType": null
1737 | },
1738 | "defaultValue": null
1739 | },
1740 | {
1741 | "name": "description_ends_with",
1742 | "description": "All values ending with the given string.",
1743 | "type": {
1744 | "kind": "SCALAR",
1745 | "name": "String",
1746 | "ofType": null
1747 | },
1748 | "defaultValue": null
1749 | },
1750 | {
1751 | "name": "description_not_ends_with",
1752 | "description": "All values not ending with the given string.",
1753 | "type": {
1754 | "kind": "SCALAR",
1755 | "name": "String",
1756 | "ofType": null
1757 | },
1758 | "defaultValue": null
1759 | }
1760 | ],
1761 | "name": "PostFilter",
1762 | "description": null,
1763 | "interfaces": null,
1764 | "enumValues": null,
1765 | "fields": null,
1766 | "kind": "INPUT_OBJECT",
1767 | "possibleTypes": null
1768 | },
1769 | {
1770 | "inputFields": null,
1771 | "name": "PostOrderBy",
1772 | "description": null,
1773 | "interfaces": null,
1774 | "enumValues": [
1775 | {
1776 | "name": "id_ASC",
1777 | "description": null,
1778 | "isDeprecated": false,
1779 | "deprecationReason": null
1780 | },
1781 | {
1782 | "name": "id_DESC",
1783 | "description": null,
1784 | "isDeprecated": false,
1785 | "deprecationReason": null
1786 | },
1787 | {
1788 | "name": "imageUrl_ASC",
1789 | "description": null,
1790 | "isDeprecated": false,
1791 | "deprecationReason": null
1792 | },
1793 | {
1794 | "name": "imageUrl_DESC",
1795 | "description": null,
1796 | "isDeprecated": false,
1797 | "deprecationReason": null
1798 | },
1799 | {
1800 | "name": "description_ASC",
1801 | "description": null,
1802 | "isDeprecated": false,
1803 | "deprecationReason": null
1804 | },
1805 | {
1806 | "name": "description_DESC",
1807 | "description": null,
1808 | "isDeprecated": false,
1809 | "deprecationReason": null
1810 | }
1811 | ],
1812 | "fields": null,
1813 | "kind": "ENUM",
1814 | "possibleTypes": null
1815 | },
1816 | {
1817 | "inputFields": null,
1818 | "name": "Query",
1819 | "description": null,
1820 | "interfaces": [],
1821 | "enumValues": null,
1822 | "fields": [
1823 | {
1824 | "name": "allPosts",
1825 | "description": null,
1826 | "isDeprecated": false,
1827 | "deprecationReason": null,
1828 | "args": [
1829 | {
1830 | "name": "filter",
1831 | "description": "",
1832 | "type": {
1833 | "kind": "INPUT_OBJECT",
1834 | "name": "PostFilter",
1835 | "ofType": null
1836 | },
1837 | "defaultValue": null
1838 | },
1839 | {
1840 | "name": "orderBy",
1841 | "description": null,
1842 | "type": {
1843 | "kind": "ENUM",
1844 | "name": "PostOrderBy",
1845 | "ofType": null
1846 | },
1847 | "defaultValue": null
1848 | },
1849 | {
1850 | "name": "skip",
1851 | "description": null,
1852 | "type": {
1853 | "kind": "SCALAR",
1854 | "name": "Int",
1855 | "ofType": null
1856 | },
1857 | "defaultValue": null
1858 | },
1859 | {
1860 | "name": "after",
1861 | "description": null,
1862 | "type": {
1863 | "kind": "SCALAR",
1864 | "name": "String",
1865 | "ofType": null
1866 | },
1867 | "defaultValue": null
1868 | },
1869 | {
1870 | "name": "before",
1871 | "description": null,
1872 | "type": {
1873 | "kind": "SCALAR",
1874 | "name": "String",
1875 | "ofType": null
1876 | },
1877 | "defaultValue": null
1878 | },
1879 | {
1880 | "name": "first",
1881 | "description": null,
1882 | "type": {
1883 | "kind": "SCALAR",
1884 | "name": "Int",
1885 | "ofType": null
1886 | },
1887 | "defaultValue": null
1888 | },
1889 | {
1890 | "name": "last",
1891 | "description": null,
1892 | "type": {
1893 | "kind": "SCALAR",
1894 | "name": "Int",
1895 | "ofType": null
1896 | },
1897 | "defaultValue": null
1898 | }
1899 | ],
1900 | "type": {
1901 | "kind": "NON_NULL",
1902 | "name": null,
1903 | "ofType": {
1904 | "kind": "LIST",
1905 | "name": null,
1906 | "ofType": {
1907 | "kind": "NON_NULL",
1908 | "name": null,
1909 | "ofType": {
1910 | "kind": "OBJECT",
1911 | "name": "Post",
1912 | "ofType": null
1913 | }
1914 | }
1915 | }
1916 | }
1917 | },
1918 | {
1919 | "name": "_allPostsMeta",
1920 | "description": null,
1921 | "isDeprecated": false,
1922 | "deprecationReason": null,
1923 | "args": [
1924 | {
1925 | "name": "filter",
1926 | "description": "",
1927 | "type": {
1928 | "kind": "INPUT_OBJECT",
1929 | "name": "PostFilter",
1930 | "ofType": null
1931 | },
1932 | "defaultValue": null
1933 | },
1934 | {
1935 | "name": "orderBy",
1936 | "description": null,
1937 | "type": {
1938 | "kind": "ENUM",
1939 | "name": "PostOrderBy",
1940 | "ofType": null
1941 | },
1942 | "defaultValue": null
1943 | },
1944 | {
1945 | "name": "skip",
1946 | "description": null,
1947 | "type": {
1948 | "kind": "SCALAR",
1949 | "name": "Int",
1950 | "ofType": null
1951 | },
1952 | "defaultValue": null
1953 | },
1954 | {
1955 | "name": "after",
1956 | "description": null,
1957 | "type": {
1958 | "kind": "SCALAR",
1959 | "name": "String",
1960 | "ofType": null
1961 | },
1962 | "defaultValue": null
1963 | },
1964 | {
1965 | "name": "before",
1966 | "description": null,
1967 | "type": {
1968 | "kind": "SCALAR",
1969 | "name": "String",
1970 | "ofType": null
1971 | },
1972 | "defaultValue": null
1973 | },
1974 | {
1975 | "name": "first",
1976 | "description": null,
1977 | "type": {
1978 | "kind": "SCALAR",
1979 | "name": "Int",
1980 | "ofType": null
1981 | },
1982 | "defaultValue": null
1983 | },
1984 | {
1985 | "name": "last",
1986 | "description": null,
1987 | "type": {
1988 | "kind": "SCALAR",
1989 | "name": "Int",
1990 | "ofType": null
1991 | },
1992 | "defaultValue": null
1993 | }
1994 | ],
1995 | "type": {
1996 | "kind": "NON_NULL",
1997 | "name": null,
1998 | "ofType": {
1999 | "kind": "OBJECT",
2000 | "name": "_QueryMeta",
2001 | "ofType": null
2002 | }
2003 | }
2004 | },
2005 | {
2006 | "name": "Post",
2007 | "description": null,
2008 | "isDeprecated": false,
2009 | "deprecationReason": null,
2010 | "args": [
2011 | {
2012 | "name": "id",
2013 | "description": "",
2014 | "type": {
2015 | "kind": "SCALAR",
2016 | "name": "ID",
2017 | "ofType": null
2018 | },
2019 | "defaultValue": null
2020 | }
2021 | ],
2022 | "type": {
2023 | "kind": "OBJECT",
2024 | "name": "Post",
2025 | "ofType": null
2026 | }
2027 | },
2028 | {
2029 | "name": "hello",
2030 | "description": "hello",
2031 | "isDeprecated": false,
2032 | "deprecationReason": null,
2033 | "args": [
2034 | {
2035 | "name": "name",
2036 | "description": null,
2037 | "type": {
2038 | "kind": "SCALAR",
2039 | "name": "String",
2040 | "ofType": null
2041 | },
2042 | "defaultValue": null
2043 | }
2044 | ],
2045 | "type": {
2046 | "kind": "OBJECT",
2047 | "name": "HelloPayload",
2048 | "ofType": null
2049 | }
2050 | },
2051 | {
2052 | "name": "node",
2053 | "description": "Fetches an object given its ID",
2054 | "isDeprecated": false,
2055 | "deprecationReason": null,
2056 | "args": [
2057 | {
2058 | "name": "id",
2059 | "description": "The ID of an object",
2060 | "type": {
2061 | "kind": "NON_NULL",
2062 | "name": null,
2063 | "ofType": {
2064 | "kind": "SCALAR",
2065 | "name": "ID",
2066 | "ofType": null
2067 | }
2068 | },
2069 | "defaultValue": null
2070 | }
2071 | ],
2072 | "type": {
2073 | "kind": "INTERFACE",
2074 | "name": "Node",
2075 | "ofType": null
2076 | }
2077 | }
2078 | ],
2079 | "kind": "OBJECT",
2080 | "possibleTypes": null
2081 | },
2082 | {
2083 | "inputFields": null,
2084 | "name": "_QueryMeta",
2085 | "description": "Meta information about the query.",
2086 | "interfaces": [],
2087 | "enumValues": null,
2088 | "fields": [
2089 | {
2090 | "name": "count",
2091 | "description": null,
2092 | "isDeprecated": false,
2093 | "deprecationReason": null,
2094 | "args": [],
2095 | "type": {
2096 | "kind": "NON_NULL",
2097 | "name": null,
2098 | "ofType": {
2099 | "kind": "SCALAR",
2100 | "name": "Int",
2101 | "ofType": null
2102 | }
2103 | }
2104 | }
2105 | ],
2106 | "kind": "OBJECT",
2107 | "possibleTypes": null
2108 | },
2109 | {
2110 | "inputFields": null,
2111 | "name": "__Directive",
2112 | "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL’s execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.",
2113 | "interfaces": [],
2114 | "enumValues": null,
2115 | "fields": [
2116 | {
2117 | "name": "name",
2118 | "description": null,
2119 | "isDeprecated": false,
2120 | "deprecationReason": null,
2121 | "args": [],
2122 | "type": {
2123 | "kind": "NON_NULL",
2124 | "name": null,
2125 | "ofType": {
2126 | "kind": "SCALAR",
2127 | "name": "String",
2128 | "ofType": null
2129 | }
2130 | }
2131 | },
2132 | {
2133 | "name": "description",
2134 | "description": null,
2135 | "isDeprecated": false,
2136 | "deprecationReason": null,
2137 | "args": [],
2138 | "type": {
2139 | "kind": "SCALAR",
2140 | "name": "String",
2141 | "ofType": null
2142 | }
2143 | },
2144 | {
2145 | "name": "locations",
2146 | "description": null,
2147 | "isDeprecated": false,
2148 | "deprecationReason": null,
2149 | "args": [],
2150 | "type": {
2151 | "kind": "NON_NULL",
2152 | "name": null,
2153 | "ofType": {
2154 | "kind": "LIST",
2155 | "name": null,
2156 | "ofType": {
2157 | "kind": "NON_NULL",
2158 | "name": null,
2159 | "ofType": {
2160 | "kind": "ENUM",
2161 | "name": "__DirectiveLocation",
2162 | "ofType": null
2163 | }
2164 | }
2165 | }
2166 | }
2167 | },
2168 | {
2169 | "name": "args",
2170 | "description": null,
2171 | "isDeprecated": false,
2172 | "deprecationReason": null,
2173 | "args": [],
2174 | "type": {
2175 | "kind": "NON_NULL",
2176 | "name": null,
2177 | "ofType": {
2178 | "kind": "LIST",
2179 | "name": null,
2180 | "ofType": {
2181 | "kind": "NON_NULL",
2182 | "name": null,
2183 | "ofType": {
2184 | "kind": "OBJECT",
2185 | "name": "__InputValue",
2186 | "ofType": null
2187 | }
2188 | }
2189 | }
2190 | }
2191 | },
2192 | {
2193 | "name": "onOperation",
2194 | "description": null,
2195 | "isDeprecated": true,
2196 | "deprecationReason": "Use `locations`.",
2197 | "args": [],
2198 | "type": {
2199 | "kind": "NON_NULL",
2200 | "name": null,
2201 | "ofType": {
2202 | "kind": "SCALAR",
2203 | "name": "Boolean",
2204 | "ofType": null
2205 | }
2206 | }
2207 | },
2208 | {
2209 | "name": "onFragment",
2210 | "description": null,
2211 | "isDeprecated": true,
2212 | "deprecationReason": "Use `locations`.",
2213 | "args": [],
2214 | "type": {
2215 | "kind": "NON_NULL",
2216 | "name": null,
2217 | "ofType": {
2218 | "kind": "SCALAR",
2219 | "name": "Boolean",
2220 | "ofType": null
2221 | }
2222 | }
2223 | },
2224 | {
2225 | "name": "onField",
2226 | "description": null,
2227 | "isDeprecated": true,
2228 | "deprecationReason": "Use `locations`.",
2229 | "args": [],
2230 | "type": {
2231 | "kind": "NON_NULL",
2232 | "name": null,
2233 | "ofType": {
2234 | "kind": "SCALAR",
2235 | "name": "Boolean",
2236 | "ofType": null
2237 | }
2238 | }
2239 | }
2240 | ],
2241 | "kind": "OBJECT",
2242 | "possibleTypes": null
2243 | },
2244 | {
2245 | "inputFields": null,
2246 | "name": "__DirectiveLocation",
2247 | "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",
2248 | "interfaces": null,
2249 | "enumValues": [
2250 | {
2251 | "name": "QUERY",
2252 | "description": "Location adjacent to a query operation.",
2253 | "isDeprecated": false,
2254 | "deprecationReason": null
2255 | },
2256 | {
2257 | "name": "MUTATION",
2258 | "description": "Location adjacent to a mutation operation.",
2259 | "isDeprecated": false,
2260 | "deprecationReason": null
2261 | },
2262 | {
2263 | "name": "SUBSCRIPTION",
2264 | "description": "Location adjacent to a subscription operation.",
2265 | "isDeprecated": false,
2266 | "deprecationReason": null
2267 | },
2268 | {
2269 | "name": "FIELD",
2270 | "description": "Location adjacent to a field.",
2271 | "isDeprecated": false,
2272 | "deprecationReason": null
2273 | },
2274 | {
2275 | "name": "FRAGMENT_DEFINITION",
2276 | "description": "Location adjacent to a fragment definition.",
2277 | "isDeprecated": false,
2278 | "deprecationReason": null
2279 | },
2280 | {
2281 | "name": "FRAGMENT_SPREAD",
2282 | "description": "Location adjacent to a fragment spread.",
2283 | "isDeprecated": false,
2284 | "deprecationReason": null
2285 | },
2286 | {
2287 | "name": "INLINE_FRAGMENT",
2288 | "description": "Location adjacent to an inline fragment.",
2289 | "isDeprecated": false,
2290 | "deprecationReason": null
2291 | },
2292 | {
2293 | "name": "SCHEMA",
2294 | "description": "Location adjacent to a schema definition.",
2295 | "isDeprecated": false,
2296 | "deprecationReason": null
2297 | },
2298 | {
2299 | "name": "SCALAR",
2300 | "description": "Location adjacent to a scalar definition.",
2301 | "isDeprecated": false,
2302 | "deprecationReason": null
2303 | },
2304 | {
2305 | "name": "OBJECT",
2306 | "description": "Location adjacent to an object type definition.",
2307 | "isDeprecated": false,
2308 | "deprecationReason": null
2309 | },
2310 | {
2311 | "name": "FIELD_DEFINITION",
2312 | "description": "Location adjacent to a field definition.",
2313 | "isDeprecated": false,
2314 | "deprecationReason": null
2315 | },
2316 | {
2317 | "name": "ARGUMENT_DEFINITION",
2318 | "description": "Location adjacent to an argument definition.",
2319 | "isDeprecated": false,
2320 | "deprecationReason": null
2321 | },
2322 | {
2323 | "name": "INTERFACE",
2324 | "description": "Location adjacent to an interface definition.",
2325 | "isDeprecated": false,
2326 | "deprecationReason": null
2327 | },
2328 | {
2329 | "name": "UNION",
2330 | "description": "Location adjacent to a union definition.",
2331 | "isDeprecated": false,
2332 | "deprecationReason": null
2333 | },
2334 | {
2335 | "name": "ENUM",
2336 | "description": "Location adjacent to an enum definition.",
2337 | "isDeprecated": false,
2338 | "deprecationReason": null
2339 | },
2340 | {
2341 | "name": "ENUM_VALUE",
2342 | "description": "Location adjacent to an enum value definition.",
2343 | "isDeprecated": false,
2344 | "deprecationReason": null
2345 | },
2346 | {
2347 | "name": "INPUT_OBJECT",
2348 | "description": "INPUT_OBJECT",
2349 | "isDeprecated": false,
2350 | "deprecationReason": null
2351 | },
2352 | {
2353 | "name": "INPUT_FIELD_DEFINITION",
2354 | "description": "Location adjacent to an input object field definition.",
2355 | "isDeprecated": false,
2356 | "deprecationReason": null
2357 | }
2358 | ],
2359 | "fields": null,
2360 | "kind": "ENUM",
2361 | "possibleTypes": null
2362 | },
2363 | {
2364 | "inputFields": null,
2365 | "name": "__EnumValue",
2366 | "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",
2367 | "interfaces": [],
2368 | "enumValues": null,
2369 | "fields": [
2370 | {
2371 | "name": "name",
2372 | "description": null,
2373 | "isDeprecated": false,
2374 | "deprecationReason": null,
2375 | "args": [],
2376 | "type": {
2377 | "kind": "NON_NULL",
2378 | "name": null,
2379 | "ofType": {
2380 | "kind": "SCALAR",
2381 | "name": "String",
2382 | "ofType": null
2383 | }
2384 | }
2385 | },
2386 | {
2387 | "name": "description",
2388 | "description": null,
2389 | "isDeprecated": false,
2390 | "deprecationReason": null,
2391 | "args": [],
2392 | "type": {
2393 | "kind": "SCALAR",
2394 | "name": "String",
2395 | "ofType": null
2396 | }
2397 | },
2398 | {
2399 | "name": "isDeprecated",
2400 | "description": null,
2401 | "isDeprecated": false,
2402 | "deprecationReason": null,
2403 | "args": [],
2404 | "type": {
2405 | "kind": "NON_NULL",
2406 | "name": null,
2407 | "ofType": {
2408 | "kind": "SCALAR",
2409 | "name": "Boolean",
2410 | "ofType": null
2411 | }
2412 | }
2413 | },
2414 | {
2415 | "name": "deprecationReason",
2416 | "description": null,
2417 | "isDeprecated": false,
2418 | "deprecationReason": null,
2419 | "args": [],
2420 | "type": {
2421 | "kind": "SCALAR",
2422 | "name": "String",
2423 | "ofType": null
2424 | }
2425 | }
2426 | ],
2427 | "kind": "OBJECT",
2428 | "possibleTypes": null
2429 | },
2430 | {
2431 | "inputFields": null,
2432 | "name": "__Field",
2433 | "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",
2434 | "interfaces": [],
2435 | "enumValues": null,
2436 | "fields": [
2437 | {
2438 | "name": "name",
2439 | "description": null,
2440 | "isDeprecated": false,
2441 | "deprecationReason": null,
2442 | "args": [],
2443 | "type": {
2444 | "kind": "NON_NULL",
2445 | "name": null,
2446 | "ofType": {
2447 | "kind": "SCALAR",
2448 | "name": "String",
2449 | "ofType": null
2450 | }
2451 | }
2452 | },
2453 | {
2454 | "name": "description",
2455 | "description": null,
2456 | "isDeprecated": false,
2457 | "deprecationReason": null,
2458 | "args": [],
2459 | "type": {
2460 | "kind": "SCALAR",
2461 | "name": "String",
2462 | "ofType": null
2463 | }
2464 | },
2465 | {
2466 | "name": "args",
2467 | "description": null,
2468 | "isDeprecated": false,
2469 | "deprecationReason": null,
2470 | "args": [],
2471 | "type": {
2472 | "kind": "NON_NULL",
2473 | "name": null,
2474 | "ofType": {
2475 | "kind": "LIST",
2476 | "name": null,
2477 | "ofType": {
2478 | "kind": "NON_NULL",
2479 | "name": null,
2480 | "ofType": {
2481 | "kind": "OBJECT",
2482 | "name": "__InputValue",
2483 | "ofType": null
2484 | }
2485 | }
2486 | }
2487 | }
2488 | },
2489 | {
2490 | "name": "type",
2491 | "description": null,
2492 | "isDeprecated": false,
2493 | "deprecationReason": null,
2494 | "args": [],
2495 | "type": {
2496 | "kind": "NON_NULL",
2497 | "name": null,
2498 | "ofType": {
2499 | "kind": "OBJECT",
2500 | "name": "__Type",
2501 | "ofType": null
2502 | }
2503 | }
2504 | },
2505 | {
2506 | "name": "isDeprecated",
2507 | "description": null,
2508 | "isDeprecated": false,
2509 | "deprecationReason": null,
2510 | "args": [],
2511 | "type": {
2512 | "kind": "NON_NULL",
2513 | "name": null,
2514 | "ofType": {
2515 | "kind": "SCALAR",
2516 | "name": "Boolean",
2517 | "ofType": null
2518 | }
2519 | }
2520 | },
2521 | {
2522 | "name": "deprecationReason",
2523 | "description": null,
2524 | "isDeprecated": false,
2525 | "deprecationReason": null,
2526 | "args": [],
2527 | "type": {
2528 | "kind": "SCALAR",
2529 | "name": "String",
2530 | "ofType": null
2531 | }
2532 | }
2533 | ],
2534 | "kind": "OBJECT",
2535 | "possibleTypes": null
2536 | },
2537 | {
2538 | "inputFields": null,
2539 | "name": "__InputValue",
2540 | "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",
2541 | "interfaces": [],
2542 | "enumValues": null,
2543 | "fields": [
2544 | {
2545 | "name": "name",
2546 | "description": null,
2547 | "isDeprecated": false,
2548 | "deprecationReason": null,
2549 | "args": [],
2550 | "type": {
2551 | "kind": "NON_NULL",
2552 | "name": null,
2553 | "ofType": {
2554 | "kind": "SCALAR",
2555 | "name": "String",
2556 | "ofType": null
2557 | }
2558 | }
2559 | },
2560 | {
2561 | "name": "description",
2562 | "description": null,
2563 | "isDeprecated": false,
2564 | "deprecationReason": null,
2565 | "args": [],
2566 | "type": {
2567 | "kind": "SCALAR",
2568 | "name": "String",
2569 | "ofType": null
2570 | }
2571 | },
2572 | {
2573 | "name": "type",
2574 | "description": null,
2575 | "isDeprecated": false,
2576 | "deprecationReason": null,
2577 | "args": [],
2578 | "type": {
2579 | "kind": "NON_NULL",
2580 | "name": null,
2581 | "ofType": {
2582 | "kind": "OBJECT",
2583 | "name": "__Type",
2584 | "ofType": null
2585 | }
2586 | }
2587 | },
2588 | {
2589 | "name": "defaultValue",
2590 | "description": "A GraphQL-formatted string representing the default value for this input value.",
2591 | "isDeprecated": false,
2592 | "deprecationReason": null,
2593 | "args": [],
2594 | "type": {
2595 | "kind": "SCALAR",
2596 | "name": "String",
2597 | "ofType": null
2598 | }
2599 | }
2600 | ],
2601 | "kind": "OBJECT",
2602 | "possibleTypes": null
2603 | },
2604 | {
2605 | "inputFields": null,
2606 | "name": "__Schema",
2607 | "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",
2608 | "interfaces": [],
2609 | "enumValues": null,
2610 | "fields": [
2611 | {
2612 | "name": "types",
2613 | "description": "A list of all types supported by this server.",
2614 | "isDeprecated": false,
2615 | "deprecationReason": null,
2616 | "args": [],
2617 | "type": {
2618 | "kind": "NON_NULL",
2619 | "name": null,
2620 | "ofType": {
2621 | "kind": "LIST",
2622 | "name": null,
2623 | "ofType": {
2624 | "kind": "NON_NULL",
2625 | "name": null,
2626 | "ofType": {
2627 | "kind": "OBJECT",
2628 | "name": "__Type",
2629 | "ofType": null
2630 | }
2631 | }
2632 | }
2633 | }
2634 | },
2635 | {
2636 | "name": "queryType",
2637 | "description": "The type that query operations will be rooted at.",
2638 | "isDeprecated": false,
2639 | "deprecationReason": null,
2640 | "args": [],
2641 | "type": {
2642 | "kind": "NON_NULL",
2643 | "name": null,
2644 | "ofType": {
2645 | "kind": "OBJECT",
2646 | "name": "__Type",
2647 | "ofType": null
2648 | }
2649 | }
2650 | },
2651 | {
2652 | "name": "mutationType",
2653 | "description": "If this server supports mutation, the type that mutation operations will be rooted at.",
2654 | "isDeprecated": false,
2655 | "deprecationReason": null,
2656 | "args": [],
2657 | "type": {
2658 | "kind": "OBJECT",
2659 | "name": "__Type",
2660 | "ofType": null
2661 | }
2662 | },
2663 | {
2664 | "name": "subscriptionType",
2665 | "description": "If this server support subscription, the type that subscription operations will be rooted at.",
2666 | "isDeprecated": false,
2667 | "deprecationReason": null,
2668 | "args": [],
2669 | "type": {
2670 | "kind": "OBJECT",
2671 | "name": "__Type",
2672 | "ofType": null
2673 | }
2674 | },
2675 | {
2676 | "name": "directives",
2677 | "description": "A list of all directives supported by this server.",
2678 | "isDeprecated": false,
2679 | "deprecationReason": null,
2680 | "args": [],
2681 | "type": {
2682 | "kind": "NON_NULL",
2683 | "name": null,
2684 | "ofType": {
2685 | "kind": "LIST",
2686 | "name": null,
2687 | "ofType": {
2688 | "kind": "NON_NULL",
2689 | "name": null,
2690 | "ofType": {
2691 | "kind": "OBJECT",
2692 | "name": "__Directive",
2693 | "ofType": null
2694 | }
2695 | }
2696 | }
2697 | }
2698 | }
2699 | ],
2700 | "kind": "OBJECT",
2701 | "possibleTypes": null
2702 | },
2703 | {
2704 | "inputFields": null,
2705 | "name": "__Type",
2706 | "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",
2707 | "interfaces": [],
2708 | "enumValues": null,
2709 | "fields": [
2710 | {
2711 | "name": "kind",
2712 | "description": null,
2713 | "isDeprecated": false,
2714 | "deprecationReason": null,
2715 | "args": [],
2716 | "type": {
2717 | "kind": "NON_NULL",
2718 | "name": null,
2719 | "ofType": {
2720 | "kind": "ENUM",
2721 | "name": "__TypeKind",
2722 | "ofType": null
2723 | }
2724 | }
2725 | },
2726 | {
2727 | "name": "name",
2728 | "description": null,
2729 | "isDeprecated": false,
2730 | "deprecationReason": null,
2731 | "args": [],
2732 | "type": {
2733 | "kind": "SCALAR",
2734 | "name": "String",
2735 | "ofType": null
2736 | }
2737 | },
2738 | {
2739 | "name": "description",
2740 | "description": null,
2741 | "isDeprecated": false,
2742 | "deprecationReason": null,
2743 | "args": [],
2744 | "type": {
2745 | "kind": "SCALAR",
2746 | "name": "String",
2747 | "ofType": null
2748 | }
2749 | },
2750 | {
2751 | "name": "fields",
2752 | "description": null,
2753 | "isDeprecated": false,
2754 | "deprecationReason": null,
2755 | "args": [
2756 | {
2757 | "name": "includeDeprecated",
2758 | "description": null,
2759 | "type": {
2760 | "kind": "SCALAR",
2761 | "name": "Boolean",
2762 | "ofType": null
2763 | },
2764 | "defaultValue": "false"
2765 | }
2766 | ],
2767 | "type": {
2768 | "kind": "LIST",
2769 | "name": null,
2770 | "ofType": {
2771 | "kind": "NON_NULL",
2772 | "name": null,
2773 | "ofType": {
2774 | "kind": "OBJECT",
2775 | "name": "__Field",
2776 | "ofType": null
2777 | }
2778 | }
2779 | }
2780 | },
2781 | {
2782 | "name": "interfaces",
2783 | "description": null,
2784 | "isDeprecated": false,
2785 | "deprecationReason": null,
2786 | "args": [],
2787 | "type": {
2788 | "kind": "LIST",
2789 | "name": null,
2790 | "ofType": {
2791 | "kind": "NON_NULL",
2792 | "name": null,
2793 | "ofType": {
2794 | "kind": "OBJECT",
2795 | "name": "__Type",
2796 | "ofType": null
2797 | }
2798 | }
2799 | }
2800 | },
2801 | {
2802 | "name": "possibleTypes",
2803 | "description": null,
2804 | "isDeprecated": false,
2805 | "deprecationReason": null,
2806 | "args": [],
2807 | "type": {
2808 | "kind": "LIST",
2809 | "name": null,
2810 | "ofType": {
2811 | "kind": "NON_NULL",
2812 | "name": null,
2813 | "ofType": {
2814 | "kind": "OBJECT",
2815 | "name": "__Type",
2816 | "ofType": null
2817 | }
2818 | }
2819 | }
2820 | },
2821 | {
2822 | "name": "enumValues",
2823 | "description": null,
2824 | "isDeprecated": false,
2825 | "deprecationReason": null,
2826 | "args": [
2827 | {
2828 | "name": "includeDeprecated",
2829 | "description": null,
2830 | "type": {
2831 | "kind": "SCALAR",
2832 | "name": "Boolean",
2833 | "ofType": null
2834 | },
2835 | "defaultValue": "false"
2836 | }
2837 | ],
2838 | "type": {
2839 | "kind": "LIST",
2840 | "name": null,
2841 | "ofType": {
2842 | "kind": "NON_NULL",
2843 | "name": null,
2844 | "ofType": {
2845 | "kind": "OBJECT",
2846 | "name": "__EnumValue",
2847 | "ofType": null
2848 | }
2849 | }
2850 | }
2851 | },
2852 | {
2853 | "name": "inputFields",
2854 | "description": null,
2855 | "isDeprecated": false,
2856 | "deprecationReason": null,
2857 | "args": [],
2858 | "type": {
2859 | "kind": "LIST",
2860 | "name": null,
2861 | "ofType": {
2862 | "kind": "NON_NULL",
2863 | "name": null,
2864 | "ofType": {
2865 | "kind": "OBJECT",
2866 | "name": "__InputValue",
2867 | "ofType": null
2868 | }
2869 | }
2870 | }
2871 | },
2872 | {
2873 | "name": "ofType",
2874 | "description": null,
2875 | "isDeprecated": false,
2876 | "deprecationReason": null,
2877 | "args": [],
2878 | "type": {
2879 | "kind": "OBJECT",
2880 | "name": "__Type",
2881 | "ofType": null
2882 | }
2883 | }
2884 | ],
2885 | "kind": "OBJECT",
2886 | "possibleTypes": null
2887 | },
2888 | {
2889 | "inputFields": null,
2890 | "name": "__TypeKind",
2891 | "description": "An enum describing what kind of type a given `__Type` is.",
2892 | "interfaces": null,
2893 | "enumValues": [
2894 | {
2895 | "name": "SCALAR",
2896 | "description": "Indicates this type is a scalar.",
2897 | "isDeprecated": false,
2898 | "deprecationReason": null
2899 | },
2900 | {
2901 | "name": "OBJECT",
2902 | "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.",
2903 | "isDeprecated": false,
2904 | "deprecationReason": null
2905 | },
2906 | {
2907 | "name": "INTERFACE",
2908 | "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.",
2909 | "isDeprecated": false,
2910 | "deprecationReason": null
2911 | },
2912 | {
2913 | "name": "UNION",
2914 | "description": "Indicates this type is a union. `possibleTypes` is a valid field.",
2915 | "isDeprecated": false,
2916 | "deprecationReason": null
2917 | },
2918 | {
2919 | "name": "ENUM",
2920 | "description": "Indicates this type is an enum. `enumValues` is a valid field.",
2921 | "isDeprecated": false,
2922 | "deprecationReason": null
2923 | },
2924 | {
2925 | "name": "INPUT_OBJECT",
2926 | "description": "Indicates this type is an input object. `inputFields` is a valid field.",
2927 | "isDeprecated": false,
2928 | "deprecationReason": null
2929 | },
2930 | {
2931 | "name": "LIST",
2932 | "description": "Indicates this type is a list. `ofType` is a valid field.",
2933 | "isDeprecated": false,
2934 | "deprecationReason": null
2935 | },
2936 | {
2937 | "name": "NON_NULL",
2938 | "description": "Indicates this type is a non-null. `ofType` is a valid field.",
2939 | "isDeprecated": false,
2940 | "deprecationReason": null
2941 | }
2942 | ],
2943 | "fields": null,
2944 | "kind": "ENUM",
2945 | "possibleTypes": null
2946 | },
2947 | {
2948 | "inputFields": null,
2949 | "name": "Boolean",
2950 | "description": "The `Boolean` scalar type represents `true` or `false`.",
2951 | "interfaces": null,
2952 | "enumValues": null,
2953 | "fields": null,
2954 | "kind": "SCALAR",
2955 | "possibleTypes": null
2956 | },
2957 | {
2958 | "inputFields": null,
2959 | "name": "ID",
2960 | "description": "The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.",
2961 | "interfaces": null,
2962 | "enumValues": null,
2963 | "fields": null,
2964 | "kind": "SCALAR",
2965 | "possibleTypes": null
2966 | },
2967 | {
2968 | "inputFields": null,
2969 | "name": "Int",
2970 | "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",
2971 | "interfaces": null,
2972 | "enumValues": null,
2973 | "fields": null,
2974 | "kind": "SCALAR",
2975 | "possibleTypes": null
2976 | },
2977 | {
2978 | "inputFields": null,
2979 | "name": "String",
2980 | "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.",
2981 | "interfaces": null,
2982 | "enumValues": null,
2983 | "fields": null,
2984 | "kind": "SCALAR",
2985 | "possibleTypes": null
2986 | }
2987 | ]
2988 | }
2989 | }
2990 |
--------------------------------------------------------------------------------