{"id":30240422,"url":"https://github.com/hypothesis/checkmate","last_synced_at":"2025-08-15T04:38:41.438Z","repository":{"id":61169700,"uuid":"311739396","full_name":"hypothesis/checkmate","owner":"hypothesis","description":"Your friendly URL vetting service","archived":false,"fork":false,"pushed_at":"2025-08-04T08:04:01.000Z","size":1076,"stargazers_count":6,"open_issues_count":28,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-04T11:58:39.800Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hypothesis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2020-11-10T17:45:25.000Z","updated_at":"2025-08-04T08:04:03.000Z","dependencies_parsed_at":"2024-01-06T18:29:37.033Z","dependency_job_id":"813167fc-dd91-48d4-a192-9675dce178d2","html_url":"https://github.com/hypothesis/checkmate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hypothesis/checkmate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fcheckmate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fcheckmate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fcheckmate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fcheckmate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hypothesis","download_url":"https://codeload.github.com/hypothesis/checkmate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fcheckmate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270524438,"owners_count":24600195,"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-08-15T02:00:12.559Z","response_time":110,"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":"2025-08-15T04:38:31.201Z","updated_at":"2025-08-15T04:38:41.424Z","avatar_url":"https://github.com/hypothesis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Checkmate\n=========\n\nA service for checking URLs are safe.\n\nInstalling Checkmate in a development environment\n-------------------------------------------------\n\n### You will need\n\n* [Git](https://git-scm.com/)\n\n* [pyenv](https://github.com/pyenv/pyenv)\n  Follow the instructions in the pyenv README to install it.\n  The Homebrew method works best on macOS.\n\n* [Docker](https://docs.docker.com/install/).\n  Follow the [instructions on the Docker website](https://docs.docker.com/install/)\n  to install Docker.\n\n### Clone the Git repo\n\n    git clone https://github.com/hypothesis/checkmate.git\n\nThis will download the code into a `checkmate` directory in your current working\ndirectory. You need to be in the `checkmate` directory from the remainder of the\ninstallation process:\n\n    cd checkmate\n\n### Run the services with Docker Compose\n\nStart the services that Checkmate requires using Docker Compose:\n\n    make services\n\n### Create the development data and settings\n\nCreate the database contents and environment variable settings needed to get\nCheckmate working:\n\n    make devdata\n\n### Start the development server\n\n    make dev\n\nThe first time you run `make dev` it might take a while to start because it'll\nneed to install the application dependencies and build the assets.\n\nThis will start the app on http://localhost:9099.\n\n**That's it!** You’ve finished setting up your Checkmate development environment.\nRun `make help` to see all the commands that are available for running the tests,\nlinting, code formatting, etc.\n\nAPI\n---\n\n### `GET /api/check?url=\u003curl_to_check\u003e`\n\nCheck a specific URL for problems. The return values are in a [JSON:API](https://jsonapi.org/) style.\n\n**Return codes:**\n\n * `200` - The URL has reasons to block (JSON body)\n * `204` - The URL has no reasons to block (no body)\n * `400` - There is something wrong with your request\n\n**Return examples:**\n\nReasons are listed in decreasing order of severity.\n\n```json5\n// 200 OK\n{\n    \"data\": [\n        {\n            \"type\": \"reason\", \"id\": \"malicious\",\n            \"attributes\": {\"severity\": \"mandatory\"}\n        },\n        {\n            \"type\": \"reason\", \"id\": \"high-io\",\n            \"attributes\": {\"severity\": \"advisory\"}\n        }\n    ],\n    \"meta\": {\n        \"maxSeverity\": \"mandatory\"\n    }\n}\n```\n\nIn the case of errors:\n\n```json5\n// 400 Bad Request\n{\n    \"errors\": [\n        {\n            \"id\": \"BadURLParameter\",\n            \"detail\": \"Parameter 'url' is required\",\n            \"source\": {\"parameter\": \"url\"}\n        }\n    ]\n}\n```\n\n### `GET /_status`\n\nCheck the service status\n\n**Return codes:**\n\n * `200` - If the service is up\n\n**Return example:**\n\n```json5\n//200 OK\n{\"status\": \"okay\"}\n```\n\nConfiguration\n-------------\n\nEnvironment variables:\n\n| Name | Effect | Example |\n|------|--------|---------|\n| `CHECKMATE_SECRET` | Secret used for signing URLs | `AB823F97FF2E330C1A20`\n| `PUBLIC_SCHEME` | Scheme used on the public accessible checkmate instance | `https`\n| `PUBLIC_HOST` | Host of the public accessible checkmate instance | `some-domain.com`\n\nFor details of changing the blocklist see:\n\n * https://stackoverflow.com/c/hypothesis/questions/102/250\n\nUsing Checkmate in a development environment\n--------------------------------------------\n\n### Authenticating requests\n\nTo authenticate requests to the dev server you must specify an API key via\nHTTP Basic Authentication. Set the username field to the API key and leave the\npassword blank. In the local development environment a default `dev_api_key` API\nkey is accepted:\n\n\n```sh\ncurl http://dev_api_key@localhost:9099/api/check?url=http://example.com/\n```\n\n### Accessing the admin pages\n\nTo access the admin UI for Checkmate, visit http://localhost:9099/admin.\nYou will need to login using an @hypothes.is Google account.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypothesis%2Fcheckmate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhypothesis%2Fcheckmate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypothesis%2Fcheckmate/lists"}