{"id":31678907,"url":"https://github.com/nahid/apify","last_synced_at":"2025-10-08T06:20:03.493Z","repository":{"id":290000285,"uuid":"973065003","full_name":"nahid/apify","owner":"nahid","description":"A robust command-line tool for API testing and mock-server","archived":false,"fork":false,"pushed_at":"2025-08-07T10:20:45.000Z","size":2624,"stargazers_count":24,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-07T12:12:19.127Z","etag":null,"topics":["api-testing","mock-server","rest-api"],"latest_commit_sha":null,"homepage":"https://apifyapp.com","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nahid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-04-26T07:15:55.000Z","updated_at":"2025-08-07T10:17:10.000Z","dependencies_parsed_at":"2025-05-11T14:23:16.853Z","dependency_job_id":"690b5a0b-57a2-4afa-ab85-b41ac7e53c52","html_url":"https://github.com/nahid/apify","commit_stats":null,"previous_names":["nahid/apitestmaster","nahid/apify"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/nahid/apify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nahid%2Fapify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nahid%2Fapify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nahid%2Fapify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nahid%2Fapify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nahid","download_url":"https://codeload.github.com/nahid/apify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nahid%2Fapify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278899267,"owners_count":26065158,"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-10-08T02:00:06.501Z","response_time":56,"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":["api-testing","mock-server","rest-api"],"created_at":"2025-10-08T06:19:58.510Z","updated_at":"2025-10-08T06:20:03.475Z","avatar_url":"https://github.com/nahid.png","language":"C#","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" alt=\"Apify Logo\" width=\"250\"/\u003e\n\u003c/p\u003e\n\n# Apify App\n\nA powerful CLI application for comprehensive API testing and mocking, enabling developers to streamline API validation and development workflows with rich configuration and execution capabilities.\n\n## Features\n\n- **Comprehensive API Testing**: Define and run detailed API tests.\n    - **Multiple Request Methods**: Support for GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS.\n    - **Rich Payload Types**: JSON, Text, Form Data.\n    - **File Upload Support**: Test multipart/form-data requests with file uploads.\n    - **Detailed Assertions**: Validate response status, headers, body content (JSON properties, arrays, values), and response time.\n- **Integrated Mock Server**: Simulate API endpoints for development and testing.\n    - **Dynamic \u0026 Conditional Responses**: Define mock responses based on request parameters, headers, or body content.\n    - **Template Variables**: Use built-in (random data, timestamps) and custom (request-derived) variables in mock responses.\n    - **File-based Configuration**: Manage mock definitions in simple `.mock.json` files.\n- **Environment Management**: Use different configurations for development, staging, production, etc.\n    - **Variable Overriding**: Project, Environment, and Request-level variable support with clear precedence.\n- **User-Friendly CLI**:\n    - **Interactive Creation**: Commands to interactively create test and mock definitions.\n    - **Detailed Reports**: Comprehensive output with request, response, and assertion details.\n    - **Visual Progress Indicators**: Animated progress display for running multiple tests.\n- **Deployment \u0026 Extensibility**:\n    - **Single File Deployment**: Simplified deployment as a single executable file.\n    - **.NET 8.0 \u0026 .NET 9 Ready**: Built with .NET 8.0, with automatic multi-targeting for .NET 9.0 when available.\n\n## Getting Started\n\n\nThe easiest way to get Apify is to download the pre-built executable from the [GitHub Releases](https://github.com/nahid/apify/releases) page.\n\n1.  Go to the [latest release](https://github.com/nahid/apify/releases/latest).\n2.  Download the appropriate `.zip` file for your operating system and architecture (e.g., `apify-win-x64.zip` for Windows 64-bit, `apify-linux-x64.zip` for Linux 64-bit, `apify-osx-arm64.zip` for macOS ARM64).\n3.  Extract the contents of the `.zip` file to a directory of your choice (e.g., `C:\\Program Files\\Apify` on Windows, `/opt/apify` on Linux/macOS).\n4.  Add the directory where you extracted Apify to your system's PATH environment variable. This allows you to run `apify` from any terminal.\n\n### CLI Installation\n\nFor a quick installation via your command line, use the following platform-specific instructions. Remember to replace `[DOWNLOAD_URL]` with the actual download link for your OS and architecture from the [latest GitHub release](https://github.com/nahid/apify/releases/latest).\n\n#### Linux \u0026 macOS\n\n```bash\n# Download the appropriate zip file and extract it\ncurl -L [DOWNLOAD_URL] -o apify.zip\nunzip apify.zip\n```\n\nThis will extract the `apify` binary (and possibly other files) to your current directory.\n\n```bash\n# Make the binary executable and move it to /usr/local/bin\nchmod a+x apify\nsudo mv apify /usr/local/bin/\n```\n\n```bash\n# Verify installation\napify --version\n```\n\n##### Resolving macOS Security Warnings\n\nOn macOS, you may see a security warning when running the binary for the first time (e.g., \"cannot be opened because the developer cannot be verified\"). To allow execution:\n\n1. Attempt to run `apify` from the terminal. If blocked, note the warning.\n2. Open **System Settings** \u003e **Privacy \u0026 Security**.\n3. Scroll down to the \"Security\" section. You should see a message about `apify` being blocked.\n4. Click **Allow Anyway**.\n5. Run `apify` again from the terminal. If prompted, click **Open** in the dialog.\n\nAlternatively, you can remove the quarantine attribute via terminal:\n\n```bash\nsudo xattr -rd com.apple.quarantine /usr/local/bin/apify\n```\n\nThis will allow the binary to run without further security prompts.\n\n\n#### Windows (PowerShell)\n\n1. Download the appropriate `.zip` file for Windows from the [latest release](https://github.com/nahid/apify/releases/latest) and extract it using File Explorer or a tool like WinRAR. Inside the extracted folder, you'll find `apify.exe`.\n\n2. Create a new folder for Apify in `Program Files` (run PowerShell as Administrator):\n\n    ```powershell\n    New-Item -ItemType Directory -Force -Path \"$env:ProgramFiles\\Apify\"\n    ```\n\n3. Move `apify.exe` to the new folder:\n\n    ```powershell\n    Move-Item -Path \".\\apify\\apify.exe\" -Destination \"$env:ProgramFiles\\Apify\"\n    ```\n\n4. Add Apify to your user PATH environment variable:\n\n    ```powershell\n    [Environment]::SetEnvironmentVariable(\"PATH\", $env:PATH + \";C:\\Program Files\\Apify\", \"User\")\n    ```\n\n5. Restart your terminal, then verify the installation:\n\n    ```powershell\n    apify --version\n    ```\n\n\u003e Ensure you run PowerShell as Administrator for steps that modify `Program Files`.\n\n\nAlternatively, you can build Apify from source:\n\n### Build from Source\n\nApify supports Native AOT (Ahead-of-Time) compilation, which produces a self-contained executable with no dependency on the .NET runtime. This results in:\n\n- Faster startup time\n- Smaller deployment size\n- No dependency on the .NET runtime\n- Improved performance\n\nTo build the Native AOT version:\n\n```bash\n# Using the build script\n./build-native.sh\n\n# Or manually\ndotnet publish -c Release -r linux-x64 --self-contained true -p:PublishAot=true\n```\n\nThe resulting executable will be located at:\n`bin/Release/net8.0/linux-x64/publish/apify`\n\nYou can run it directly without needing the .NET runtime:\n\n```bash\n./bin/Release/net8.0/linux-x64/publish/apify\n```\n\n#### Platform-Specific Builds\n\nFor other platforms, replace `linux-x64` with your target platform:\n\n- Windows: `win-x64`\n- macOS: `osx-x64`\n- ARM64: `linux-arm64` or `osx-arm64`\n\n\u003e For documentation, please see the following files:\n\u003e - [Getting Started](docs/get-started.md)\n\u003e - [Import Postman Collection](docs/import-postman.md)\n\n## Development\nTo contribute to Apify or build it from source, follow these steps:\n\n### Prerequisites\n\n- .NET 8.0 SDK (required)\n- .NET 9.0 SDK (optional, for building with .NET 9.0 when available)\n\n### Cloning the Repository\n\n```bash\ngit clone git@github.com:nahid/apify.git\n```\n\n### Building the Project\nNavigate to the project directory and run:\n\n```bash\ncd apify\ndotnet build\n```\n\n### Running Tests\nTo run the tests, use:\n\n```bash\ndotnet test\n```\n\n\n## CI/CD with GitHub Actions\n\nThis project includes GitHub Actions workflows for continuous integration and releases.\n\n### Continuous Integration\n\nThe CI workflow (if included in your project, typically in `.github/workflows/ci.yml`) runs on every push to the main branch and pull requests. It usually:\n1. Builds the project.\n2. Runs API tests (e.g., `apify tests --env ci`) to verify functionality against a deployed or mocked environment.\n\n### Release Process\n\nTo create a release (if configured, typically in `.github/workflows/release.yml`):\n1. **Tag-based release**: Create and push a new tag: `git tag -a v1.0.0 -m \"Version 1.0.0\" \u0026\u0026 git push origin v1.0.0`\n2. **Manual release**: Via GitHub Actions UI.\n\nThis process typically builds single file executables for various platforms and attaches them to a GitHub release.\n\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. (Ensure you have a LICENSE file).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnahid%2Fapify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnahid%2Fapify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnahid%2Fapify/lists"}