{"id":13597514,"url":"https://github.com/graphql-java-kickstart/graphql-spring-boot","last_synced_at":"2025-09-28T19:31:39.594Z","repository":{"id":19378564,"uuid":"85368313","full_name":"graphql-java-kickstart/graphql-spring-boot","owner":"graphql-java-kickstart","description":"GraphQL and GraphiQL Spring Framework Boot Starters - Forked from oembedler/graphql-spring-boot due to inactivity.","archived":true,"fork":true,"pushed_at":"2023-12-19T08:55:12.000Z","size":10481,"stargazers_count":1512,"open_issues_count":74,"forks_count":324,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-09-26T03:11:28.904Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.graphql-java-kickstart.com/spring-boot/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"yandooo/graphql-spring-boot","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/graphql-java-kickstart.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-03-18T01:44:34.000Z","updated_at":"2025-09-02T03:49:22.000Z","dependencies_parsed_at":"2023-10-15T13:22:56.299Z","dependency_job_id":"7d317dbb-29e5-44fe-8ccd-6708b95f2bde","html_url":"https://github.com/graphql-java-kickstart/graphql-spring-boot","commit_stats":null,"previous_names":["graphql-java/graphql-spring-boot"],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/graphql-java-kickstart/graphql-spring-boot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphql-java-kickstart%2Fgraphql-spring-boot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphql-java-kickstart%2Fgraphql-spring-boot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphql-java-kickstart%2Fgraphql-spring-boot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphql-java-kickstart%2Fgraphql-spring-boot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/graphql-java-kickstart","download_url":"https://codeload.github.com/graphql-java-kickstart/graphql-spring-boot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphql-java-kickstart%2Fgraphql-spring-boot/sbom","scorecard":{"id":443880,"data":{"date":"2025-08-11","repo":{"name":"github.com/graphql-java-kickstart/graphql-spring-boot","commit":"00b5e3644c5384bc526d60b76f707191703d90c2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 2/13 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/pull-request.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pull-request.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:92: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pull-request.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/graphql-java-kickstart/graphql-spring-boot/release.yml/master?enable=pin","Info:   0 out of  28 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T06:13:25.030Z","repository_id":19378564,"created_at":"2025-08-19T06:13:25.030Z","updated_at":"2025-08-19T06:13:25.030Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277422040,"owners_count":25815336,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-28T02:00:08.834Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T17:00:35.080Z","updated_at":"2025-09-28T19:31:38.676Z","avatar_url":"https://github.com/graphql-java-kickstart.png","language":"Java","readme":"\u003e [!WARNING]\n\u003e ## THIS REPOSITORY HAS BEEN ARCHIVED AND IS NO LONGER BEING MAINTAINED\n\u003e Since Spring now officially supports GraphQL we have decided to archive this project. We encourage you to start using [Spring for GraphQL](https://spring.io/projects/spring-graphql) instead. If you're projects rely on this library and you really require an update and cannot migrate to Spring for GraphQL yet, then you should fork this repository and make the necessary changes on your own.\n\n# GraphQL Spring Boot Starters\n\n[![Maven Central](https://img.shields.io/maven-central/v/com.graphql-java-kickstart/graphql-spring-boot-starter.svg)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java-kickstart/graphql-spring-boot-starter)\n[![Sonatype Snapshot](https://img.shields.io/nexus/s/com.graphql-java-kickstart/graphql-spring-boot-starter?server=https%3A%2F%2Foss.sonatype.org)](#snapshots)\n[![GitHub CI Workflow](https://github.com/graphql-java-kickstart/graphql-spring-boot/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/graphql-java-kickstart/graphql-spring-boot/actions/workflows/ci.yml?query=workflow%3ACI+branch%3Amaster)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=graphql-java-kickstart_graphql-spring-boot\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=graphql-java-kickstart_graphql-spring-boot)\n[![GitHub contributors](https://img.shields.io/github/contributors/graphql-java-kickstart/graphql-spring-boot)](https://github.com/graphql-java-kickstart/graphql-spring-boot/graphs/contributors)\n[![Discuss on GitHub](https://img.shields.io/badge/GitHub-discuss-orange)](https://github.com/graphql-java-kickstart/graphql-spring-boot/discussions)\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n**Table of Contents**\n\n  - [Quick start](#quick-start)\n    - [Using Gradle](#using-gradle)\n    - [Using Maven](#using-maven)\n  - [Documentation](#documentation)\n  - [Requirements and Downloads](#requirements-and-downloads)\n    - [Snapshots](#snapshots)\n- [Enable GraphQL Servlet](#enable-graphql-servlet)\n- [Enable Graph*i*QL](#enable-graphiql)\n- [Enable Altair](#enable-altair)\n- [Enable GraphQL Playground](#enable-graphql-playground)\n  - [Basic settings](#basic-settings)\n  - [CDN](#cdn)\n  - [Custom static resources](#custom-static-resources)\n  - [Customizing GraphQL Playground](#customizing-graphql-playground)\n  - [Tabs](#tabs)\n- [Enable GraphQL Voyager](#enable-graphql-voyager)\n  - [GraphQL Voyager Basic settings](#graphql-voyager-basic-settings)\n  - [GraphQL Voyager CDN](#graphql-voyager-cdn)\n  - [Customizing GraphQL Voyager](#customizing-graphql-voyager)\n- [Supported GraphQL-Java Libraries](#supported-graphql-java-libraries)\n  - [GraphQL Java Tools](#graphql-java-tools)\n  - [GraphQL Annotations](#graphql-annotations)\n    - [Configuration](#configuration)\n    - [Root resolvers, directives, type extensions](#root-resolvers-directives-type-extensions)\n    - [Interfaces](#interfaces)\n    - [Custom scalars and type functions](#custom-scalars-and-type-functions)\n    - [Custom Relay and GraphQL Annotation Processor](#custom-relay-and-graphql-annotation-processor)\n  - [Extended scalars](#extended-scalars)\n  - [Aliased scalars](#aliased-scalars)\n- [Tracing and Metrics](#tracing-and-metrics)\n  - [Usage](#usage)\n  - [FAQs](#faqs)\n    - [WARNING: NoClassDefFoundError when using GraphQL Java Tools \u003e 5.4.x](#warning-noclassdeffounderror-when-using-graphql-java-tools--54x)\n- [Contributions](#contributions)\n- [Licenses](#licenses)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Quick start\n\n### Using Gradle\n\nSet the Kotlin version in your `gradle.properties`\n\n```\nkotlin.version=1.3.70\n```\n\n### Using Maven\n\nSet the Kotlin version in your `\u003cproperties\u003e` section\n\n```xml\n\n\u003cproperties\u003e\n  \u003ckotlin.version\u003e1.3.70\u003c/kotlin.version\u003e\n\u003c/properties\u003e\n```\n\n## Documentation\n\nSee our new [Documentation](https://www.graphql-java-kickstart.com/spring-boot/).\n\n## Requirements and Downloads\n\nRequirements:\n\n* Java 1.8\n* Spring Framework Boot \u003e 2.x.x (web)\n\nGradle:\n\n```gradle\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n  implementation 'com.graphql-java-kickstart:graphql-spring-boot-starter:14.0.0'\n  \n  // testing facilities\n  testImplementation 'com.graphql-java-kickstart:graphql-spring-boot-starter-test:14.0.0'\n}\n```\n\nMaven:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.graphql-java-kickstart\u003c/groupId\u003e\n  \u003cartifactId\u003egraphql-spring-boot-starter\u003c/artifactId\u003e\n  \u003cversion\u003e14.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003c!-- testing facilities --\u003e\n\u003cdependency\u003e\n\u003cgroupId\u003ecom.graphql-java-kickstart\u003c/groupId\u003e\n\u003cartifactId\u003egraphql-spring-boot-starter-test\u003c/artifactId\u003e\n\u003cversion\u003e14.0.0\u003c/version\u003e\n\u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n\n```\n\n### Snapshots\n\n```xml\n\u003crepositories\u003e\n  \u003crepository\u003e\n    \u003cid\u003eosshr-snapshots\u003c/id\u003e\n    \u003cname\u003eosshr-sonatype-snapshots\u003c/name\u003e\n    \u003curl\u003ehttps://oss.sonatype.org/content/repositories/snapshots/\u003c/url\u003e\n  \u003c/repository\u003e\n\u003c/repositories\u003e\n```\n\nFor gradle:\n\n```groovy\nrepositories {\n  maven { url \"https://oss.sonatype.org/content/repositories/snapshots/\" }\n}\n```\n\n# Enable GraphQL Servlet\n\nThe servlet becomes accessible at `/graphql` if `graphql-spring-boot-starter` added as a dependency\nto a boot application and a `GraphQLSchema` bean is present in the application. Check out\nthe [simple example](https://github.com/graphql-java-kickstart/samples/tree/master/editors)\nfor the bare minimum required.\n\nA GraphQL schema can also be automatically created when\na [supported graphql-java schema library](https://github.com/graphql-java-kickstart/graphql-spring-boot/blob/master/README.md#supported-graphql-java-libraries)\nis found on the classpath.\n\nSee\nthe [graphql-java-servlet usage docs](https://github.com/graphql-java-kickstart/graphql-java-servlet#usage)\nfor the avaiable endpoints exposed.\n\nAvailable Spring Boot configuration parameters (either `application.yml`\nor `application.properties`):\n\n```yaml\ngraphql:\n  servlet:\n    # Sets if GraphQL servlet should be created and exposed. If not specified defaults to \"true\".\n    enabled: true\n    # Sets the path where GraphQL servlet will be exposed. If not specified defaults to \"/graphql\"\n    mapping: /graphql\n    cors-enabled: true\n    cors:\n      allowed-origins: http://some.domain.com\n      allowed-methods: GET, HEAD, POST\n    # if you want to @ExceptionHandler annotation for custom GraphQLErrors\n    exception-handlers-enabled: true\n    context-setting: PER_REQUEST_WITH_INSTRUMENTATION\n    # Sets if asynchronous operations are supported for GraphQL requests. If not specified defaults to true.\n    async-mode-enabled: true\n```\n\nBy default a global CORS filter is enabled for `/graphql/**` context. The `corsEnabled` can be set\nto `false` to disable it.\n\n# Enable Graph*i*QL\n\nGraph*i*QL becomes accessible at the root `/graphiql` if the `graphql.graphiql.enabled` property \nis true.\n\nNote that GraphQL server must be available at `/graphql/*` context to be discovered by Graph*i*QL.\n\nAvailable Spring Boot configuration parameters (either `application.yml`\nor `application.properties`):\n\n```yaml\ngraphql:\n  graphiql:\n    mapping: /graphiql\n    endpoint:\n      graphql: /graphql\n      subscriptions: /subscriptions\n    subscriptions:\n      timeout: 30\n      reconnect: false\n    basePath: /\n    enabled: true\n    pageTitle: GraphiQL\n    cdn:\n      enabled: false\n      version: latest\n    props:\n      resources:\n        query: query.graphql\n        defaultQuery: defaultQuery.graphql\n        variables: variables.json\n      variables:\n        editorTheme: \"solarized light\"\n    headers:\n      Authorization: \"Bearer \u003cyour-token\u003e\"\n```\n\nBy default GraphiQL is served from within the package. This can be configured to be served from CDN\ninstead, by setting the property `graphiql.cdn.enabled` to `true`.\n\nYou are able to set the GraphiQL props as well. The `graphiql.props.variables` group can contain any\nof the props as defined at [GraphiQL Usage](https://github.com/graphql/graphiql#usage). Since\nsetting (large) queries in the properties like this isn't very readable, you can use the properties\nin the `graphiql.props.resources` group to set the classpath resources that should be loaded.\n\nHeaders that are used when sending the GraphiQL queries can be set by defining them in\nthe `graphiql.headers` group.\n\n# Enable Altair\n\nAltair becomes accessible at the root `/altair` if the `graphql.altair.enabled` property is true.\n\nNote that GraphQL server must be available at `/graphql/*` context to be discovered by Altair.\n\nAvailable Spring Boot configuration parameters (either `application.yml`\nor `application.properties`):\n\n```yaml\ngraphql:\n  altair:\n    enabled: true\n    mapping: /altair\n    subscriptions:\n      timeout: 30\n      reconnect: false\n    static:\n      base-path: /\n    page-title: Altair\n    cdn:\n      enabled: false\n      version: 4.0.2\n    options:\n      endpoint-url: /graphql\n      subscriptions-endpoint: /subscriptions\n      initial-settings:\n        theme: dracula\n      initial-headers:\n        Authorization: \"Bearer \u003cyour-token\u003e\"\n    resources:\n      initial-query: defaultQuery.graphql\n      initial-variables: variables.graphql\n      initial-pre-request-script: pre-request.graphql\n      initial-post-request-script: post-request.graphql\n```\n\nBy default Altair is served from within the package. This can be configured to be served from CDN\ninstead, by setting the property `graphql.altair.cdn.enabled` to `true`.\n\nYou are able to set the Altair options as well using the `graphql.altair.options` group. Since\nsetting (\nlarge) queries in the properties like this isn't very readable, you can use the properties in\nthe `graphql.altair.resources` group to set the classpath resources that should be loaded.\n\n# Enable GraphQL Playground\n\nGraphQL Playground becomes accessible at root `/playground` (or as configured\nin `graphql.playground.mapping`) if the `graphql.playground.enabled` property is true.\n\nIt uses an embedded `GraphQL Playground React`, in accordance to\nthe [official guide](https://github.com/prisma/graphql-playground#as-html-page), using the 'minimum\nHTML' approach.\n\nAvailable Spring Boot configuration parameters (either `application.yml`\nor `application.properties`):\n\n```yaml\ngraphql:\n  playground:\n    mapping: /playground\n    endpoint: /graphql\n    subscriptionEndpoint: /subscriptions\n    staticPath.base: my-playground-resources-folder\n    enabled: true\n    pageTitle: Playground\n    cdn:\n      enabled: false\n      version: latest\n    settings:\n      editor.cursorShape: line\n      editor.fontFamily: \"'Source Code Pro', 'Consolas', 'Inconsolata', 'Droid Sans Mono', 'Monaco', monospace\"\n      editor.fontSize: 14\n      editor.reuseHeaders: true\n      editor.theme: dark\n      general.betaUpdates: false\n      prettier.printWidth: 80\n      prettier.tabWidth: 2\n      prettier.useTabs: false\n      request.credentials: omit\n      schema.polling.enable: true\n      schema.polling.endpointFilter: \"*localhost*\"\n      schema.polling.interval: 2000\n      schema.disableComments: true\n      tracing.hideTracingResponse: true\n    headers:\n      headerFor: AllTabs\n    tabs:\n      - name: Example Tab\n        query: classpath:exampleQuery.graphql\n        headers:\n          SomeHeader: Some value\n        variables: classpath:variables.json\n        responses:\n          - classpath:exampleResponse1.json\n          - classpath:exampleResponse2.json\n```\n\n## Basic settings\n\n`mapping`, `endpoint` and `subscriptionEndpoint` will default to `/playground`, `/graphql`\nand `/subscriptions`, respectively. Note that these values may not be empty.\n\n`enabled` defaults to `true`, and therefor Playground will be available by default if the dependency\nis added to a Spring Boot Web Application project.\n\n`pageTitle` defaults to `Playground`.\n\n`headers` allows you to specify headers for the default tab. Note that if your are using Spring\nSecurity and CSRF is enabled CSRF, the CSRF token will be automatically added to the headers. These\nheaders will also be added to all the tabs configured under the [Tabs](#tabs) section. If a header\nis defined both in this 'global' header list and the header list of the individual tabs, the 'local'\nversion will be used for that tab.\n\n## CDN\n\nThe currently bundled version is `1.7.20`, which is - as of writing this - the latest release\nof `GraphQL Playground React`. The CDN option uses `jsDelivr` CDN, if enabled. By default, it will\nload the latest available release. Available CDN versions can be found on the project's\n[jsDelivr page](https://www.jsdelivr.com/package/npm/graphql-playground-react). The CDN option is\ndisabled by default.\n\n## Custom static resources\n\nYou can also specify a custom local version of Playground by setting the base path for `Playground`\nresources in the `staticPath.base` property. Under this directory, you have to provide the following\nfiles:\n\n* `static/css/index.css`\n* `static/js/middleware.js`\n* `favicon.png`\n* `logo.png`\n\nThis is identical to the directory structure of the CDN under the `build` subfolder (where these\nfiles can be found).\n\n## Customizing GraphQL Playground\n\nFurther GraphQL Playground settings can be specified under the `settings` group, which are\ndocumented in the official\n[GraphQL Playground readme](https://github.com/prisma/graphql-playground#settings). Note that\nenum-like values are validated against the available options, and your application will not start if\nwrong settings are provided. Similarly there is some basic validation for integer values (they must\nbe valid positive integers).\n\n## Tabs\n\nOptionally, you can specify tabs that will be present when the user first opens GraphQL Playground.\nYou can configure the query, variables, headers and even supply sample responses. Note that `query`\n, `variables` and `responses` are expected to be resources of the appropriate format (GraphQL\nfor `query`, JSON for `variables` and `responses`).\n\n# Enable GraphQL Voyager\n\n**GraphQL Voyager** becomes accessible at root `/voyager` (or as configured in `voyager.mapping`)\nif the `graphql.voyager.enabled` property is true.\n\nAvailable Spring Boot configuration parameters (either `application.yml`\nor `application.properties`):\n\n```yaml\ngraphql:\n  voyager:\n    enabled: true\n    basePath: /\n    mapping: /voyager\n    endpoint: /graphql\n    cdn:\n      enabled: false\n      version: latest\n    pageTitle: Voyager\n    displayOptions:\n      skipRelay: true\n      skipDeprecated: true\n      rootType: Query\n      sortByAlphabet: false\n      showLeafFields: true\n      hideRoot: false\n    hideDocs: false\n    hideSettings: false\n```\n\n## GraphQL Voyager Basic settings\n\n`mapping` and `endpoint` will default to `/voyager` and `/graphql`, respectively. Note that these\nvalues may not be empty.\n\n`enabled` defaults to `true`, and therefor **GraphQL Voyager** will be available by default if the\ndependency is added to a Spring Boot Web Application project.\n\n`pageTitle` defaults to `Voyager`.\n\nAll other properties default to the same as documented on the\nofficial [GraphQL Voyager readme](https://github.com/APIs-guru/graphql-voyager#properties)\n\n## GraphQL Voyager CDN\n\nThe currently bundled version is `1.0.0-rc31`, which is - as of writing this - the latest release\nof **GraphQL Voyager**. The CDN option uses `jsDelivr` CDN, if enabled. By default, it will load the\nlatest available release. Available CDN versions can be found on the project's\n[jsDelivr page](https://www.jsdelivr.com/package/npm/graphql-voyager). The CDN option is disabled by\ndefault.\n\n## Customizing GraphQL Voyager\n\nFurther **GraphQL Voyager** `displayOptions`, `hideDocs` and `hideSettings` customizations can be\nconfigured, as documented in the official\n[GraphQL Voyager readme](https://github.com/APIs-guru/graphql-voyager#properties).\n\n# Supported GraphQL-Java Libraries\n\nThe following libraries have auto-configuration classes for creating a `GraphQLSchema`.\n\n## GraphQL Java Tools\n\n**https://github.com/graphql-java-kickstart/graphql-java-tools**\n\nAll `GraphQLResolver` and `GraphQLScalar` beans, along with a bean of\ntype `SchemaParserDictionary` (to provide all other classes), will be used to create a\nGraphQLSchema. Any files on the classpath named `*.graphqls` will be used to provide the schema\ndefinition. See the [Readme](https://github.com/graphql-java-kickstart/graphql-java-tools#usage) for\nmore info.\n\nAvailable Spring Boot configuration parameters (either `application.yml`\nor `application.properties`):\n\n```yaml\ngraphql:\n  tools:\n    schema-location-pattern: \"**/*.graphqls\"\n    # Enable or disable the introspection query. Disabling it puts your server in contravention of the GraphQL\n    # specification and expectations of most clients, so use this option with caution\n    introspection-enabled: true\n```\n\nBy default GraphQL tools uses the location pattern `**/*.graphqls` to scan for GraphQL schemas on\nthe classpath. Use the `schemaLocationPattern` property to customize this pattern.\n\n## GraphQL Annotations\n\nhttps://github.com/Enigmatis/graphql-java-annotations\n\nTo use GraphQL Annotations library instead of GraphQL Java Tools, set the `graphql.schema-strategy`\nproperty to `annotations`.\n\nThe schema will be built using the GraphQL Annotations library in a code-first approach - instead of\nwriting it manually, the schema will be constructed based on the Java code. Please see the\ndocumentation of the GraphQL Annotations library for a detailed documentation of the available\nannotations. This readme focuses on how GraphQL Annotations - GraphQL Spring Boot Starter\nintegration works.\n\n### Configuration\n\n```\ngraphql:\n    annotations:\n        base-package: com.example.graphl.schema # required\n        always-prettify: true #true is the default value, no need to specify it\n```\n\nThe most important parameter is the base package. The starter will look for schema-relevant classes\nin the specified package and its subpackages. `always-prettify` will \"prettify\" getter/setter\nmethods - the get/set/is prefix will be removed from GraphQL fields automatically.\n\n### Root resolvers, directives, type extensions\n\nThe root resolvers must be marked with the `GraphQLQueryResolver`, `GraphQLMutationResolver`\nand `GraphQLSubscription`\nannotations (not to be confused with the marker interfaces from the GraphQL Java Tools library).\n\n**Important:**\n\nUnlike GraphQL Java Tools, GraphQL Annotations only supports *one* of them each. Furthermore,\nGraphQL Annotations only accepts a *class* as input, *not an instance*. It will either create a new\ninstance of the class itself, or use static methods. This means that Spring dependency injection\nwill not work in the usual way. The companion example project (which can be found in\nthe [samples](https://github.com/graphql-java-kickstart/samples) repository)\ndemonstrates possible workarounds for this issue.\n\n`GraphQLDirectiveDefinition` and `GraphQLTypeExtension`-annotated classes are subject to the same\nlimitation regarding dependency injection - but there can be any number of them.\n\n### Interfaces\n\nInterfaces in the configured package having at least one of their methods marked as `@GraphQLField`\nare considered a GraphQL interface, and their implementations are automatically added to the schema.\nFurthermore, you have to add the following annotation to GraphQL\ninterfaces: `@GraphQLTypeResolver(GraphQLInterfaceTypeResolver.class)`\n\n### Custom scalars and type functions\n\nCustom scalars can be defined in the same way as in the case of using GraphQL Java Tools - just\ndefine the\n`GraphQLScalarType` beans.\n\nThe starter will also pick up `TypeFunction` beans and pass them to the schema builder.\n\nIn these cases the actual beans will be used, not just the classes. Spring dependency injection\nworks as usual.\n\n### Custom Relay and GraphQL Annotation Processor\n\nIt is possible to define a bean implementing `Relay` and/or `GraphQLAnnotations`. If present, these\nwill be passed to the schema builder. Spring dependency injection works as usual. Note that GraphQL\nAnnotations provides default implementation for these which should be sufficient is most cases.\n\n## Extended scalars\n\n[Extended scalars](https://github.com/graphql-java/graphql-java-extended-scalars) can be enabled by\nusing the\n`graphql.extended-scalars` configuration property, e. g.:\n\n```yaml\ngraphql:\n  extended-scalars: BigDecimal, Date\n```\n\nThe available scalars are the following: `BigDecimal`, `BigInteger`, `Byte`, `Char`, `Date`, \n`DateTime`, `JSON`, `LocalTime` *(since 13.0.0)*, `Locale`, `Long`, `NegativeFloat`, `NegativeInt`,\n`NonNegativeFloat`, `NonNegativeInt`, `NonPositiveFloat`,`NonPositiveInt`, `Object`, `PositiveFloat`,\n`PositiveInt`, `Short`, `Time`, `UUID` *(since 13.0.0)*, `Url`.\n\nThis setting works with both the [GraphQL Java Tools](#graphql-java-tools) and the\n[GraphQL Annotations](#graphql-annotations) integration.\n\nWhen using the [GraphQL Java Tools](#graphql-java-tools) integration, the scalars must also be\ndeclared in the GraphQL Schema:\n\n```graphql\nscalar BigDecimal\nscalar Date\n```\n\n## Aliased scalars\n\n*Requires version 13.0.0 or greater*\n\nThe starter also supports [aliased scalars](https://github.com/graphql-java/graphql-java-extended-scalars#alias-scalars).\nYou can define aliases for any standard or extended scalar, as shown in the example below. Note that\n the original extended scalar (`BigDecimal`) will *not* be available.  You have to use \n`graphql.extended-scalars` property to declare it.\n\n```yaml\ngraphql:\n  aliased-scalars:\n    BigDecimal: Number, Decimal\n    String: Text\n```\n\nWhen using the [GraphQL Java Tools](#graphql-java-tools) integration, the aliased scalars must also be\ndeclared in the GraphQL Schema:\n\n```graphql\nscalar Number\nscalar Decimal\nscalar Text\n```\n\n**Note**: *Custom scalar beans cannot be aliased this way. If you need to alias them, you have to\nmanually declare the aliased scalar bean.*\n\n# Tracing and Metrics\n\n[Apollo style tracing](https://github.com/apollographql/apollo-tracing) along with two levels of\nmetrics based on them are currently configurable. Full tracing is based on the GraphQL java\nimplementation, and can be enabled in the application.yml or application.properties file:\n\n```yaml\ngraphql:\n  servlet:\n    tracing-enabled: true\n```\n\nthe default value is false, with \"metrics-only\" being available. Metrics-only does not add the\ntracing extension to the response.\n\nMetrics utilize one of two forms of tracing to feed information to Micrometer. If tracing is\nenabled, or set to \"metrics-only\", full tracing metrics will be collected, otherwise a tracing\nimplementation that does not collect field data will be injected. Metrics can be configured in the\napplication.yml or application.properties to either true or false, with a default of false:\n\n```yaml\ngraphql:\n  servlet:\n    actuator-metrics: true\n```\n\n## Usage\n\nSee [Baeldung Spring Boot Actuators](https://www.baeldung.com/spring-boot-actuators) for the basics\nof using Actuator. Add `spring-boot-starter-actuator` to your project as dependency.\n\nThe following metrics are available for exposure:\n\n* `graphql.timer.query`\n* `graphql.websocket.sessions` - number of active websocket sessions for subscriptions\n* `graphql.websocket.subscriptions` - number of active subscriptions\n\n## FAQs\n\n### WARNING: NoClassDefFoundError when using GraphQL Java Tools \u003e 5.4.x\n\nIf you're using `graphql-java-tools` in combination with Spring Boot 2.1.x or below then you need to\nset the\n`kotlin.version` in your Spring Boot project explicitly to version \u003e= 1.3.70, because Spring Boot\nStarter parent of that Spring Boot version overrides it with a 1.2.* version of Kotlin.\n`graphql-java-tools` requires 1.3.* however because of its coroutine support. If you don't override\nthis version you will run into a `NoClassDefFoundError`.\n\nSpring Boot team has indicated the Kotlin version will be upgraded to 1.3 in Spring Boot 2.2.\n\n# Contributions\n\nContributions are welcome. Please respect\nthe [Code of Conduct](http://contributor-covenant.org/version/1/3/0/).\n\n# Licenses\n\n`graphql-spring-boot-starter` is licensed under the MIT License. See [LICENSE](LICENSE.md) for\ndetails.\n\n[graphql-java License](https://github.com/andimarek/graphql-java/blob/master/LICENSE.md)\n\n[graphiql License](https://github.com/graphql/graphiql/blob/master/LICENSE)\n\n[graphql-js License](https://github.com/graphql/graphql-js/blob/master/LICENSE)\n","funding_links":[],"categories":["Java","Implementations"],"sub_categories":["Java"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphql-java-kickstart%2Fgraphql-spring-boot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgraphql-java-kickstart%2Fgraphql-spring-boot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphql-java-kickstart%2Fgraphql-spring-boot/lists"}