{"id":13408572,"url":"https://github.com/camunda-community-hub/zeeqs","last_synced_at":"2025-10-04T11:21:49.745Z","repository":{"id":37883800,"uuid":"237922743","full_name":"camunda-community-hub/zeeqs","owner":"camunda-community-hub","description":"GraphQL API for Zeebe data","archived":false,"fork":false,"pushed_at":"2024-09-17T08:16:26.000Z","size":1156,"stargazers_count":62,"open_issues_count":18,"forks_count":15,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-09-17T10:52:11.800Z","etag":null,"topics":["data-lake","graphql","zeebe","zeebe-tool"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/camunda-community-hub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-03T08:56:56.000Z","updated_at":"2024-09-17T08:16:28.000Z","dependencies_parsed_at":"2023-09-25T11:24:59.878Z","dependency_job_id":"d8b7402b-ec3f-41f0-952f-99ceb3b42da3","html_url":"https://github.com/camunda-community-hub/zeeqs","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda-community-hub%2Fzeeqs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda-community-hub%2Fzeeqs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda-community-hub%2Fzeeqs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda-community-hub%2Fzeeqs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camunda-community-hub","download_url":"https://codeload.github.com/camunda-community-hub/zeeqs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245020339,"owners_count":20548180,"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","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":["data-lake","graphql","zeebe","zeebe-tool"],"created_at":"2024-07-30T20:00:53.736Z","updated_at":"2025-10-04T11:21:44.696Z","avatar_url":"https://github.com/camunda-community-hub.png","language":"Kotlin","funding_links":[],"categories":["Applications"],"sub_categories":[],"readme":"ZeeQS - Zeebe Query Service\n=========================\n\n[![](https://img.shields.io/badge/Community%20Extension-An%20open%20source%20community%20maintained%20project-FF4700)](https://github.com/camunda-community-hub/community)\n[![](https://img.shields.io/badge/Lifecycle-Unmaintained-lightgrey)](https://github.com/Camunda-Community-Hub/community/blob/main/extension-lifecycle.md#Unmaintained-)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n[![Compatible with: Camunda Platform 8](https://img.shields.io/badge/Compatible%20with-Camunda%20Platform%208-0072Ce)](https://github.com/camunda-community-hub/community/blob/main/extension-lifecycle.md#compatiblilty)\n\n\u003e [!IMPORTANT]\n\u003e This community extension is **unmaintained** and outdated. It may not support new Camunda versions. \n\u003e\n\u003e Thank you to all [contributors](https://github.com/camunda-community-hub/zeeqs/graphs/contributors) for making it a great extension. :tada:\n\nA [Zeebe](https://github.com/camunda/zeebe) community extension that provides a [GraphQL](https://graphql.org/) query\nAPI over Zeebe's\ndata. The data is\nimported from the broker using\nthe [Hazelcast exporter](https://github.com/camunda-community-hub/zeebe-hazelcast-exporter) and aggregated in the\nservice.\n\n![architecture view](assets/ZeeQS.png)\n\n## :rocket: Install\n\n### Docker\n\nThe docker image is published\nto [GitHub Packages](https://github.com/orgs/camunda-community-hub/packages/container/package/zeeqs)\n.\n\nRun the following command to start the application:\n\n```\ndocker run -p 9000:9000 ghcr.io/camunda-community-hub/zeeqs:latest\n```\n\n- Ensure that a Zeebe broker is running with\n  a [Hazelcast exporter](https://github.com/camunda-community-hub/zeebe-hazelcast-exporter)\n- Forward the Hazelcast port to the docker container (default: `5701`)\n- Configure the connection to Hazelcast (default: `localhost:5701`)\n    - `ZEEBE_CLIENT_WORKER_HAZELCAST_CONNECTION` (environment variable)\n    - `zeebe.client.worker.hazelcast.connection` (application.yaml)\n\nOr, if you run it on your local machine (Linux only):\n\n```\ndocker run --network=\"host\" ghcr.io/camunda-community-hub/zeeqs:latest\n```\n\nAfter the application is started, the GraphQL endpoint is available under `http://localhost:9000/graphql`.\n\nGo to http://localhost:9000/graphiql and explore the GraphQL API using [GraphiQL](https://github.com/graphql/graphiql).\n\n### Docker Compose\n\nFor a local setup, the repository contains a [docker-compose file](docker/docker-compose.yml). It\ncontains multiple profiles for different configurations.\n\nUse an in-memory database (H2):\n\n```\ndocker-compose --profile in-memory up\n```\n\nUse a PostgreSQL database:\n\n```\ndocker-compose --profile postgres up\n```\n\nAfter the application is started, the GraphQL endpoint is available under `http://localhost:9000/graphql`.\n\nGo to http://localhost:9000/graphiql and explore the GraphQL API using [GraphiQL](https://github.com/graphql/graphiql).\n\n### Configuration\n\nBy default, the API endpoint is available under the port `9000`. And the database is only in-memory (i.e. not\npersistent).\n\nTo configure the application, look at the [application.yml](app/src/main/resources/application.yml) and\nthe [docker-compose file](docker/docker-compose.yml).\nSee [here](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config)\non how to configure a Spring Boot application in general.\n\n## :sparkles: Usage\n\nThe application provides a GraphQL endpoint under `/graphql`.\n\nYou can query the API via HTTP POST request and a JSON body containing the `query`.\n\nFor example:\n\n```\ncurl \\\n  -X POST \\\n  -H \"Content-Type: application/json\" \\\n  --data '{ \"query\": \"{ processes { nodes { key } } }\" }' \\\n  http://localhost:9000/graphql\n```\n\nThe best way to explore and inspect the GraphQL API is to use the integrated web-based tool [GraphiQL](https://github.com/graphql/graphiql). It is available\nunder http://localhost:9000/graphiql.\n\n### Queries\n\nThe GraphQL API provides the following queries:\n\n- [processes](graphql-api/src/main/resources/graphql/Process.graphqls)\n- [processInstances](graphql-api/src/main/resources/graphql/ProcessInstance.graphqls)\n- [jobs](graphql-api/src/main/resources/graphql/Job.graphqls)\n- [userTasks](graphql-api/src/main/resources/graphql/UserTask.graphqls)\n- [messages](graphql-api/src/main/resources/graphql/Message.graphqls)\n- [incidents](graphql-api/src/main/resources/graphql/Incident.graphqls)\n- [decisions](graphql-api/src/main/resources/graphql/Decision.graphqls)\n- [decisionEvaluations](graphql-api/src/main/resources/graphql/DecisionEvaluation.graphqls)\n- [errors](graphql-api/src/main/resources/graphql/Error.graphqls)\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample query\u003c/summary\u003e\n  \u003cp\u003e\n\nQuery all processes including their number of process instances:\n\n```graphql\n{\n    processes {\n        totalCount\n        nodes {\n            key\n            bpmnProcessId\n            version\n            processInstances {\n                totalCount\n            }\n        }\n    }\n}\n```\n\nResponse:\n\n```json\n{\n  \"data\": {\n    \"processes\": {\n      \"totalCount\": 3,\n      \"nodes\": [\n        {\n          \"key\": \"2251799813685249\",\n          \"bpmnProcessId\": \"demo-process\",\n          \"version\": 1,\n          \"processInstances\": {\n            \"totalCount\": 3\n          }\n        },\n        {\n          \"key\": \"2251799813685251\",\n          \"bpmnProcessId\": \"demo-2\",\n          \"version\": 1,\n          \"processInstances\": {\n            \"totalCount\": 2\n          }\n        },\n        {\n          \"key\": \"2251799813685269\",\n          \"bpmnProcessId\": \"demo-3\",\n          \"version\": 1,\n          \"processInstances\": {\n            \"totalCount\": 1\n          }\n        }\n      ]\n    }\n  }\n}\n```\n\n  \u003c/p\u003e\n\u003c/details\u003e\n\n### Pagination\n\nIn order to limit the response size and the query processing, each list query uses pagination to return only a subset of\nthe data. By default, it returns the first 10 items of the list.\n\nIn addition to the items, the query result contains also the total count of the items.\n\n```graphql\n{\n    processes(perPage: 10, page: 0) {\n        totalCount\n        nodes {\n            key\n        }\n    }\n}\n```\n\n### Filters\n\nSome queries allow to filter the result by passing arguments in the query.\n\n```graphql\n{\n    processInstances(stateIn: [ACTIVATED]) {\n        nodes {\n            key\n        }\n    }\n}\n```\n\n### Subscriptions\n\nThe GraphQL API provides the following subscriptions:\n\n- [processUpdates](graphql-api/src/main/resources/graphql/Process.graphqls)\n- [processInstanceUpdates](graphql-api/src/main/resources/graphql/ProcessInstance.graphqls)\n- [decisionUpdates](graphql-api/src/main/resources/graphql/Decision.graphqls)\n- [decisionEvaluationUpdates](graphql-api/src/main/resources/graphql/DecisionEvaluation.graphqls)\n\nThe subscriptions are exposed via WebSockets over the same endpoint `/graphql`.\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample subscription\u003c/summary\u003e\n  \u003cp\u003e\n\nSubscribe to any updates of process instances:\n\n```graphql\nsubscription {\n    processInstanceUpdates {\n        processInstance {\n            key\n            state\n        }\n        updateType\n    }\n}\n```\n\nResponse:\n\n```json\n{\n  \"data\": {\n    \"processInstanceUpdates\": {\n      \"processInstance\": {\n        \"key\": \"2251799813685251\",\n        \"state\": \"ACTIVATED\"\n      },\n      \"updateType\": \"ELEMENT_INSTANCE\"\n    }\n  }\n}\n```\n\n  \u003c/p\u003e\n\u003c/details\u003e\n\n## Build from Source\n\nBuild with Maven\n\n`mvn clean install`\n\n## Code of Conduct\n\nThis project adheres to the Contributor Covenant [Code of\nConduct](/CODE_OF_CONDUCT.md). By participating, you are expected to uphold\nthis code. Read more about\nthe [Camunda Community Code of Conduct](https://camunda.com/events/code-conduct/) and how to report\nunacceptable behavior.\n\n## License\n\n[Apache License, Version 2.0](/LICENSE) \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamunda-community-hub%2Fzeeqs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamunda-community-hub%2Fzeeqs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamunda-community-hub%2Fzeeqs/lists"}