{"id":13501520,"url":"https://github.com/scanapi/scanapi","last_synced_at":"2025-05-14T00:03:24.131Z","repository":{"id":38035824,"uuid":"197915529","full_name":"scanapi/scanapi","owner":"scanapi","description":"Automated Integration Testing and Live Documentation for your API","archived":false,"fork":false,"pushed_at":"2025-01-13T03:27:21.000Z","size":2443,"stargazers_count":1392,"open_issues_count":32,"forks_count":84,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-05-07T00:34:09.821Z","etag":null,"topics":["api","autodoc","integration-testing","json","pypi-packages","python-package","python3","rest-api","scanapi","testing","yaml"],"latest_commit_sha":null,"homepage":"https://scanapi.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scanapi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["scanapi","camilamaia"]}},"created_at":"2019-07-20T10:31:47.000Z","updated_at":"2025-04-28T18:29:51.000Z","dependencies_parsed_at":"2023-11-08T00:35:02.419Z","dependency_job_id":"c1aa24a9-b179-4b92-9d6b-9c9f83c093a9","html_url":"https://github.com/scanapi/scanapi","commit_stats":{"total_commits":503,"total_committers":55,"mean_commits":9.145454545454545,"dds":0.4552683896620279,"last_synced_commit":"84a45877a1a7658810e22e38a77d39f8d342aee3"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scanapi%2Fscanapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scanapi%2Fscanapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scanapi%2Fscanapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scanapi%2Fscanapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scanapi","download_url":"https://codeload.github.com/scanapi/scanapi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254043267,"owners_count":22004913,"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":["api","autodoc","integration-testing","json","pypi-packages","python-package","python3","rest-api","scanapi","testing","yaml"],"created_at":"2024-07-31T22:01:40.334Z","updated_at":"2025-05-14T00:03:24.053Z","avatar_url":"https://github.com/scanapi.png","language":"Python","readme":"![](https://github.com/scanapi/design/raw/main/images/github-hero-dark.png)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://codecov.io/gh/scanapi/scanapi\"\u003e\n    \u003cimg alt=\"Codecov\" src=\"https://img.shields.io/codecov/c/github/scanapi/scanapi\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://app.circleci.com/pipelines/github/scanapi/scanapi?branch=main\"\u003e\n    \u003cimg alt=\"CircleCI\" src=\"https://img.shields.io/circleci/build/github/scanapi/scanapi\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/scanapi/scanapi/actions/workflows/lint.yml?query=branch%3Amain\"\u003e\n    \u003cimg alt=\"LintCheck\" src=\"https://github.com/scanapi/scanapi/workflows/Lint%20check/badge.svg?event=push\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/scanapi/scanapi/actions/workflows/run-examples.yml?query=branch%3Amain\"\u003e\n    \u003cimg alt=\"Examples\" src=\"https://github.com/scanapi/scanapi/actions/workflows/run-examples.yml/badge.svg?branch=main\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypistats.org/packages/scanapi\"\u003e\n    \u003cimg alt=\"Downloads Per Month\" src=\"https://shields.io/pypi/dm/scanapi\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/scanapi/\"\u003e\n    \u003cimg alt=\"PyPI version\" src=\"https://shields.io/pypi/v/scanapi\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://discord.scanapi.dev\"\u003e\n    \u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/847208162993242162?color=7389D8\u0026label=discord\u0026logo=6A7EC2\u0026logoColor=ffffff\u0026style=flat-square\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nA library for **your API** that provides:\n\n- Automated Integration Testing\n- Automated Live Documentation\n\nGiven an API specification, written in YAML/JSON format, ScanAPI hits the specified\nendpoints, runs the test cases, and generates a detailed report of this execution - which can also\nbe used as the API documentation itself.\n\nWith almost no Python knowledge, the user can define endpoints to be hit, the expected behavior\nfor each response and will receive a full real-time diagnostic report of the API!\n\n## Contents\n\n- [Contents](#contents)\n- [Requirements](#requirements)\n- [How to install](#how-to-install)\n- [Basic Usage](#basic-usage)\n- [Documentation](#documentation)\n- [Examples](#examples)\n- [Contributing](#contributing)\n\n## Requirements\n\n- [pip][pip-installation]\n\n## How to install\n\n```bash\n$ pip install scanapi\n```\n\n## Basic Usage\n\nYou will need to write the API's specification and save it as a **YAML** or **JSON** file.\nFor example:\n\n```yaml\nendpoints:\n  - name: scanapi-demo # The API's name of your API\n    path: http://demo.scanapi.dev/api/v1 # The API's base url\n    requests:\n      - name: list_all_users # The name of the first request\n        path: users/ # The path of the first request\n        method: get # The HTTP method of the first request\n        tests:\n          - name: status_code_is_200 # The name of the first test for this request\n            assert: ${{ response.status_code == 200 }} # The assertion\n```\n\nAnd run the scanapi command\n\n```bash\n$ scanapi run \u003cfile_path\u003e\n```\n\nThen, the lib will hit the specified endpoints and generate a `scanapi-report.html` file with the report results.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg\n    src=\"https://raw.githubusercontent.com/scanapi/scanapi/main/images/report-print-closed.png\"\n    width=\"700\",\n    alt=\"An overview screenshot of the report.\"\n  \u003e\n  \u003cimg\n    src=\"https://raw.githubusercontent.com/scanapi/scanapi/main/images/report-print-opened.png\"\n    width=\"700\"\n    alt=\"A screenshot of the report showing the request details.\"\n  \u003e\n\u003c/p\u003e\n\n## Documentation\n\nThe full documentation is available at [scanapi.dev][website]\n\n## Examples\n\nYou can find complete examples at [scanapi/examples][scanapi-examples]!\n\nThis tutorial helps you to create integration tests for your REST API using ScanAPI\n\n[![Watch the video](https://raw.githubusercontent.com/scanapi/scanapi/main/images/youtube-scanapi-tutorial.png)](https://www.youtube.com/watch?v=JIo4sA8LHco\u0026t=2s)\n\n## Contributing\n\nCollaboration is super welcome! We prepared the [Newcomers Guide][newcomers-guide] to help you in the first steps. Every little bit of help counts! Feel free to create new [GitHub issues][github-issues] and interact here.\n\nLet's build it together 🚀🚀\n\n[github-issues]: https://github.com/scanapi/scanapi/issues\n[newcomers-guide]: https://github.com/scanapi/scanapi/wiki/Newcomers\n[pip-installation]: https://pip.pypa.io/en/stable/installing/\n[scanapi-examples]: https://github.com/scanapi/examples\n[website]: https://scanapi.dev\n","funding_links":["https://github.com/sponsors/scanapi","https://github.com/sponsors/camilamaia"],"categories":["Testing","Python","Uncategorized","Tools"],"sub_categories":["Uncategorized","WebTools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscanapi%2Fscanapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscanapi%2Fscanapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscanapi%2Fscanapi/lists"}