{"id":18948372,"url":"https://github.com/oxid-esales/graphql-configuration-access","last_synced_at":"2025-07-07T16:32:16.192Z","repository":{"id":218691217,"uuid":"685439297","full_name":"OXID-eSales/graphql-configuration-access","owner":"OXID-eSales","description":"OXAPI (GraphQL based) access to configuration settings","archived":false,"fork":false,"pushed_at":"2025-07-01T15:24:25.000Z","size":888,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"b-7.4.x","last_synced_at":"2025-07-01T15:45:07.541Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OXID-eSales.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2023-08-31T08:26:54.000Z","updated_at":"2025-06-11T09:40:37.000Z","dependencies_parsed_at":"2024-05-15T21:06:20.945Z","dependency_job_id":"b77ec5a6-1235-49f9-a1d9-f0779bd36dec","html_url":"https://github.com/OXID-eSales/graphql-configuration-access","commit_stats":null,"previous_names":["oxid-esales/graphql-configuration-access"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/OXID-eSales/graphql-configuration-access","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXID-eSales%2Fgraphql-configuration-access","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXID-eSales%2Fgraphql-configuration-access/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXID-eSales%2Fgraphql-configuration-access/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXID-eSales%2Fgraphql-configuration-access/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OXID-eSales","download_url":"https://codeload.github.com/OXID-eSales/graphql-configuration-access/tar.gz/refs/heads/b-7.4.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OXID-eSales%2Fgraphql-configuration-access/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262996337,"owners_count":23396902,"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":[],"created_at":"2024-11-08T13:13:21.239Z","updated_at":"2025-07-07T16:32:16.184Z","avatar_url":"https://github.com/OXID-eSales.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n[![Development](https://github.com/OXID-eSales/graphql-configuration-access/actions/workflows/trigger.yml/badge.svg?branch=b-7.0.x)](https://github.com/OXID-eSales/graphql-configuration-access/actions/workflows/trigger.yml)\n[![Latest Version](https://img.shields.io/packagist/v/OXID-eSales/graphql-configuration-access?logo=composer\u0026label=latest\u0026include_prereleases\u0026color=orange)](https://packagist.org/packages/oxid-esales/graphql-configuration-access)\n[![PHP Version](https://img.shields.io/packagist/php-v/oxid-esales/graphql-configuration-access)](https://github.com/oxid-esales/graphql-configuration-access)\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=OXID-eSales_graphql-configuration-access\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=OXID-eSales_graphql-configuration-access)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=OXID-eSales_graphql-configuration-access\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=OXID-eSales_graphql-configuration-access)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=OXID-eSales_graphql-configuration-access\u0026metric=sqale_index)](https://sonarcloud.io/dashboard?id=OXID-eSales_graphql-configuration-access)\n\n# graphql-configuration-access\nOXAPI (GraphQL based) access to configuration settings\n\n\n### Why we use this schema\nTo fetch and update the configurations we implemented a different query/mutation per value-type.\nWe have chosen this schema because of GraphQL's strictness which doesn't allow for dynamic types. Without these types,\nthe API consumer would always have to convert the value after queries or before mutations if, for example,\nwe decided to use json encoded strings instead.\n\nTo get the specific type of a configuration, we provide queries like\n`shopSettings`/`moduleSettings`/`themeSettings` to figure out the type for configurations.\nAs a result you get an array of setting types:\n\n```\ntype SettingType {\n  name: string!\n  type: FieldType!\n  isSupported: boolean!\n}\n\nenum FieldType {\n  'str'\n  'select'\n  'bool'\n  'num\n  'arr'\n  'aarr'\n}\n```\n\n## Branch compatibility\n\n* b-7.4.x branch is compatible with OXID eShop compilation b-7.4.x (which uses `graphql-base` b-7.4.x branch)\n* 2.1.x versions (or b-7.3.x branch) are compatible with OXID eShop compilation b-7.3.x (which uses `graphql-base` 11.x version resp. b-7.3.x branch)\n* 1.2.x + 2.0.x versions (or b-7.2.x branch) are compatible with OXID eShop compilation b-7.2.x (which uses `graphql-base` 10.x version resp. b-7.2.x branch)\n* 1.1.x versions (or b-7.1.x branch) are compatible with OXID eShop compilation b-7.1.x (which uses `graphql-base` 9.x version resp. b-7.1.x branch)\n\n## Documentation\n\n* Full documentation can be found [here](https://docs.oxid-esales.com/interfaces/graphql/en/latest/).\n\n### Install\n\nSwitch to the shop root directory (the file `composer.json` and the directories `source/` and `vendor/` are located there).\n\n```bash\n# Install desired version of oxid-esales/graphql-configuration-access module, in this case - latest released 2.x version\n$ composer require oxid-esales/graphql-configuration-access ^2.0.0\n```\n\nIf you didn't have the `oxid-esales/graphql-base` module installed, composer will do that for you.\n\nAfter installing the module, you need to activate it, either via OXID eShop admin or CLI.\n\n```bash\n$ vendor/bin/oe-console oe:module:activate oe_graphql_base\n$ vendor/bin/oe-console oe:module:activate oe_graphql_configuration_access\n```\n\n### How to use\n\nA good starting point is to check the [How to use section in the GraphQL Base Module](https://github.com/OXID-eSales/graphql-base-module/#how-to-use)\n\n## Blocking modules from de/activation via GraphQL\n\nThe file module_blockilst.yaml contains a list of modules which are necessary to handle configurations or de/activate\nmodules via GraphQL or should be blocked for de/activation via GraphQL in general. Modules like ``oe_graphql_base`` and\n``oe_graphql_configuration_access`` are listed there.\n\n## Testing\n\n### Linting, syntax check, static analysis\n\n```bash\n$ composer update\n$ composer static\n```\n\n### Unit/Integration/Acceptance tests\n\n- install this module into a running OXID eShop\n- reset shop's database\n```bash\n$ bin/oe-console oe:database:reset --db-host=db-host --db-port=db-port --db-name=db-name --db-user=db-user --db-password=db-password --force\n```\n\n- run Unit + Integration tests\n```bash\n$ composer phpunit\n```\n\n- run Unit tests\n```bash\n$ ./vendor/bin/phpunit -c vendor/oxid-esales/graphql-configuration-access/tests/phpunit.xml\n```\n- run Integration tests\n```bash\n$ ./vendor/bin/phpunit --bootstrap=./source/bootstrap.php -c vendor/oxid-esales/graphql-configuration-access/tests/phpintegration.xml\n```\n- run Acceptance tests\n```bash\n$ composer codeception\n```\n\n# Development installation on OXID eShop SDK\n\nThe installation instructions below are shown for the current [SDK](https://github.com/OXID-eSales/docker-eshop-sdk)\nfor shop 7.3. Make sure your system meets the requirements of the SDK.\n\n0. Ensure all docker containers are down to avoid port conflicts\n\n1. Clone the SDK for the new project\n```shell\necho MyProject \u0026\u0026 git clone https://github.com/OXID-eSales/docker-eshop-sdk.git $_ \u0026\u0026 cd $_\n```\n\n2. Clone the repository to the source directory\n```shell\ngit clone --recurse-submodules https://github.com/OXID-eSales/graphql-configuration-access.git --branch=b-7.4.x ./source\n```\n\n3. Run the recipe to setup the development environment\n```shell\n./source/recipes/setup-development.sh\n```\n\nYou should be able to access the shop with http://localhost.local and the admin panel with http://localhost.local/admin\n(credentials: noreply@oxid-esales.com / admin)\n\n### Running tests locally\n\nCheck the \"scripts\" section in the `composer.json` file for the available commands. Those commands can be executed\nby connecting to the php container and running the command from there, example:\n\n```shell\nmake php\ncomposer tests-coverage\n```\n\nCommands can be also triggered directly on the container with docker compose, example:\n\n```shell\ndocker compose exec -T php composer tests-coverage\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxid-esales%2Fgraphql-configuration-access","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxid-esales%2Fgraphql-configuration-access","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxid-esales%2Fgraphql-configuration-access/lists"}