{"id":13579127,"url":"https://github.com/contentacms/contenta_jsonapi","last_synced_at":"2026-01-13T23:44:14.027Z","repository":{"id":47467139,"uuid":"90281625","full_name":"contentacms/contenta_jsonapi","owner":"contentacms","description":"Contenta CMS, the decoupled Drupal","archived":true,"fork":false,"pushed_at":"2024-04-17T08:20:09.000Z","size":47250,"stargazers_count":330,"open_issues_count":0,"forks_count":101,"subscribers_count":28,"default_branch":"8.x-3.x","last_synced_at":"2025-10-02T17:58:14.224Z","etag":null,"topics":["api-first","decoupled","drupal","drupal-8","drupal-distribution","installation-profile"],"latest_commit_sha":null,"homepage":"http://www.contentacms.org/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/contentacms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2017-05-04T15:48:26.000Z","updated_at":"2025-09-24T13:51:08.000Z","dependencies_parsed_at":"2024-01-16T20:28:53.856Z","dependency_job_id":"f677dd36-da6b-4188-b26b-2e6a0d522e43","html_url":"https://github.com/contentacms/contenta_jsonapi","commit_stats":{"total_commits":434,"total_committers":36,"mean_commits":"12.055555555555555","dds":0.5368663594470047,"last_synced_commit":"e8ffb72313898525f35d2cca08ddfa0e2d25f931"},"previous_names":[],"tags_count":74,"template":false,"template_full_name":null,"purl":"pkg:github/contentacms/contenta_jsonapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentacms%2Fcontenta_jsonapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentacms%2Fcontenta_jsonapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentacms%2Fcontenta_jsonapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentacms%2Fcontenta_jsonapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/contentacms","download_url":"https://codeload.github.com/contentacms/contenta_jsonapi/tar.gz/refs/heads/8.x-3.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentacms%2Fcontenta_jsonapi/sbom","scorecard":{"id":303388,"data":{"date":"2025-08-11","repo":{"name":"github.com/contentacms/contenta_jsonapi","commit":"cdd1ff6341254fc5694c96200812e6217f8c88c4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Code-Review","score":3,"reason":"Found 9/30 approved changesets -- score normalized to 3","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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"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":"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":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"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":"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.0.680 not signed: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/17279519","Warn: release artifact v3.0.679 not signed: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/17103745","Warn: release artifact v3.0.666 not signed: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/15576470","Warn: release artifact v3.0.665 not signed: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/15576413","Warn: release artifact v3.0.664 not signed: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/15340941","Warn: release artifact v3.0.680 does not have provenance: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/17279519","Warn: release artifact v3.0.679 does not have provenance: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/17103745","Warn: release artifact v3.0.666 does not have provenance: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/15576470","Warn: release artifact v3.0.665 does not have provenance: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/15576413","Warn: release artifact v3.0.664 does not have provenance: https://api.github.com/repos/contentacms/contenta_jsonapi/releases/15340941"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 9 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-17T21:21:02.898Z","repository_id":47467139,"created_at":"2025-08-17T21:21:02.898Z","updated_at":"2025-08-17T21:21:02.898Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28405175,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T21:51:37.118Z","status":"ssl_error","status_checked_at":"2026-01-13T21:45:14.585Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api-first","decoupled","drupal","drupal-8","drupal-distribution","installation-profile"],"created_at":"2024-08-01T15:01:36.764Z","updated_at":"2026-01-13T23:44:14.004Z","avatar_url":"https://github.com/contentacms.png","language":"PHP","readme":"\u003ch1 id=\"contenta-cms\"\u003e\n  Contenta CMS\n  \u003cimg align=\"right\" src=\"./logo.svg\" alt=\"Contenta logo\" title=\"Contenta logo\" width=\"100\"\u003e\n\u003c/h1\u003e\n\n---\n\n**DEPRECATED**. Contenta CMS was an educational distribution to show examples of best practices for decoupled projects. Decoupled Drupal has been stable for a long time and the relevance of this project has dwindled over the years. Additionally, since no one has stepped up to fill the maintainer role, I have decided to archive this project. Thanks to everyone who participated to this project over the years.\n\n---\n\n**LOOKING FOR HELP TO MAINTAIN CONTENTA**. It has been a while since I have found the motivation to keep Contenta CMS up-to-date and improved. I don't anticipate this changing in the near future. Please reach out if you would like to step up as a new maintainer of this project.\n\nContenta is a content API and CMS based on Drupal 8. It provides a standard, jsonapi-based platform for building decoupled applications and websites.\n\n## Install\n\nFollow the [documentation instructions](http://contentacms.org/#install) to install Contenta CMS.\n\n### CURL\n\nOnce your site is running locally, you might want to use Curl to examine the pre-installed content:\n\n```bash\ncurl --header 'Accept: application/vnd.api+json' http://127.0.0.1:8888/api/recipes\n```\n\nThe result will be a list of recipes. Note that:\n\n- The Drupal implementation of the jsonapi uses entity uuids to identify individual content resources. Append a `/{{uuid}}` to the URL above to fetch a single recipe. \n- Contenta uses the [JSON API Extras](https://www.drupal.org/project/jsonapi_extras) module to customize the URL to resources: `/api/recipes` instead of `/jsonapi/node/recipes`, for example. Contenta also configures JSON API Extras to customize the output of the request to eliminate unnecessary fields.\n\n### CORS\n\nWhen you actually build a front-end you will likely have [CORS (Cross-Origin Resource Sharing)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)\nissues.\n\nIn order to allow browsers to request the contenta back-end you need to:\n\n* Copy sites/default/default.services.yml to sites/default/services.yml\n* Allow your app to access it, by replacing the end of this configuration file.\n```\n  cors.config:\n    enabled: true\n    allowedHeaders:\n      - '*'\n    allowedMethods:\n      - '*'\n    allowedOrigins:\n       # Note: you need to specify the host + port where your app will run.\n      - localhost:8000\n    exposedHeaders: false\n    maxAge: false\n    supportsCredentials: false\n```\n* Run drush: ```cd \u003cDESTINATION\u003e/web \u0026\u0026 ../vendor/bin/drush cr```\n\n## Development\n\nJoin the discussion in the [#contenta Slack channel](https://drupal.slack.com/messages/C5A70F7D1).\n\nFor documention on the development on contenta_jsonapi itself, see [docs/development](https://github.com/contentacms/contenta_jsonapi/blob/8.x-2.x/docs/development.md).\n\n[Code of conduct](https://https://github.com/contentacms/contenta_jsonapi/blob/8.x-2.x/CODE_OF_CONDUCT.md)\n\n### Development Installation\n\n- If you want a setup which allows you to contribute back to Contenta, follow the installation instructions above\n- Replace the \u003cDESTINATION\u003e/web/profiles/contrib/contenta_jsonapi directory with a checkout of this repo\n\n```bash\ncd -DESTINATION-\nrm -rf web/profiles/contrib/contenta_jsonapi\ngit clone git@github.com:contentacms/contenta_jsonapi.git web/profiles/contrib/contenta_jsonapi\n```\n\n### Testing\n\n#### Nightwatch\n\n[Nightwatch](http://nightwatchjs.org/) provides automated browser testing and can be found in the `tests/nightwatch` directory. To install and run locally, you will need [Yarn](https://yarnpkg.com/) and Chrome.\n\n```\nyarn install\nyarn run nightwatch\n```\n\n## Front-ends\n\nThere are a bunch of example consumers, see http://www.contentacms.org/#example-consumers for a list of them.\n\n## Update\n\nContenta CMS is a Fork \u0026 Go solution. There is no supported upgrade path. You may update your Drupal like you usually do.\n\nPlease see documented issues : \n- [Proper way to update contenta cms](https://github.com/contentacms/contenta_jsonapi/issues/269)\n- [Can not update with composer](https://github.com/contentacms/contenta_jsonapi/issues/229)\n\n## Credits\n\nThis work is based upon a couple of contrib modules.\n\nOn top of that the [thunder distrbution](http://www.thunder.org/) was used as sort of a base for this installation profile.\n\nContenta CMS is [built by humans](https://raw.githubusercontent.com/contentacms/contenta_jsonapi/8.x-2.x/humans.txt).\n","funding_links":[],"categories":["PHP"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontentacms%2Fcontenta_jsonapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontentacms%2Fcontenta_jsonapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontentacms%2Fcontenta_jsonapi/lists"}