Download the PHP package bhaveshsoni26/laravel-postman-sync without Composer
On this page you can find all versions of the php package bhaveshsoni26/laravel-postman-sync. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download bhaveshsoni26/laravel-postman-sync
More information about bhaveshsoni26/laravel-postman-sync
Files in bhaveshsoni26/laravel-postman-sync
Package laravel-postman-sync
Short Description Automatically scan Laravel API routes and generate a Postman Collection, environment, docs and tests.
License MIT
Informations about the package laravel-postman-sync
Laravel Postman Sync
Turn your Laravel API routes into a complete, importable Postman Collection โ docs, examples, tests, environments, and one-command push โ with zero manual annotations.
๐ Documentation ยท Packagist ยท Issues
That's it. The package scans every API route, reads your controllers and FormRequest classes, and writes a Postman Collection v2.1 (with embedded docs and test scripts), per-stage environment files, and an OpenAPI document โ then, with --push, syncs it straight to your Postman workspace.
๐ Full documentation, guides and examples: postman-sync.bhaveshdev.in
Why
Keeping a Postman collection in step with a growing API is tedious and always out of date. This package makes the collection a build artifact: re-run one command and your routes, request bodies, auth, examples, docs, and tests regenerate deterministically. Add 10 new endpoints and --push appends just those โ without clobbering the manual edits your team made in Postman.
Features
- ๐ Automatic route scanning โ every
GET/POST/PUT/PATCH/DELETE,apiResource, andresource; derives version, group, controller, and middleware. - ๐งฌ Reflection-based analysis โ finds each controller's
FormRequestand reads itsrules(); no annotations required. - ๐งพ Typed request bodies + examples โ
required|email|min:8|in:โฆ|confirmed|nullable|fileโฆ mapped to types and realistic example values, including nested/wildcard keys. - ๐ Auth detection โ
auth:<guard>โ Bearer{{guard_token}}; collection-level auth with per-request overrides; public routes setnoauth. - ๐ฆ Postman Collection v2.1 โ folder-grouped, fully variable-driven (
{{base_url}},:idpath vars) โ no hardcoded hosts or secrets. - ๐ Docs in Postman โ endpoint summary, field table, and example responses embedded in each request's Docs tab (plus folder/collection descriptions).
- ๐งช Generated test scripts โ status / response-time / JSON assertions, login-token capture into the environment, and validation/CRUD stubs.
- ๐ฑ Environment files โ one per stage (
local/staging/production) with secret-typed guard tokens. - ๐ OpenAPI 3.0.3 โ
openapi.jsongenerated alongside. - ๐ One-command push โ
--pushuploads to the Postman API with incremental merge (append new, regenerate changed, preserve unchanged + manual edits) or--freshfull replace. - ๐ Never breaks your build โ closures, missing FormRequests, and bad controllers degrade gracefully with warnings; exits
0.
Requirements
| PHP | 8.2+ |
| Laravel | 10, 11, or 12 |
Installation
The service provider auto-registers via package discovery. Publish the config:
Not on Packagist yet? Install from a local path repository โ see INSTALLATION.md for the one-time
repositoriessetup.
Quick start
Import storage/app/postman/collection.json and an environment file into Postman, fill in the token variables, and send.
What it generates
Command reference
| Command | Result |
|---|---|
postman:sync |
collection + environments + openapi (default) |
postman:sync --only=collection |
only collection.json |
postman:sync --only=environment |
only the environment file(s) |
postman:sync --only=openapi |
only openapi.json |
postman:sync --docs-files |
also write standalone Markdown to <output>/docs/ |
postman:sync --output=build/postman |
custom output directory |
postman:sync --push |
generate, then merge into the Postman collection |
postman:sync --push --fresh |
full replace of the remote collection |
Push to Postman
Incremental merge appends new routes, regenerates changed ones, and leaves unchanged requests โ including manual edits to their docs/tests โ untouched. Use --fresh to overwrite the whole collection.
Getting your Postman credentials
You only need the API key to push. The collection ID and workspace ID are optional (see notes below).
1. API key โ POSTMAN_API_KEY (required)
- Sign in to Postman and open go.postman.co/settings/me/api-keys (or: click your avatar, top-right โ Settings โ API keys).
- Click Generate API Key, give it a name (e.g.
laravel-postman-sync), and Generate. -
Copy the key โ it starts with
PMAK-โ and put it in.env:Treat it like a password. You can only see it once; regenerate if you lose it.
2. Collection ID โ POSTMAN_COLLECTION_ID (optional)
Leave this empty the first time โ --push creates a new collection and prints its ID:
Copy that ID into .env so future pushes update the same collection instead of creating duplicates:
To target a collection that already exists, fetch its exact API uid (not the short id shown in the app) โ list them with your key:
Use the uid value from the response (looks like 12345678-...).
3. Workspace ID โ POSTMAN_WORKSPACE_ID (optional)
Only used when creating a new collection, to place it in a specific workspace. Omit it to use your default workspace.
- From the app: open the workspace, then look at the browser URL:
https://go.postman.co/workspace/My-Team~<workspace-id>/...โ the ID is the part after the~. - Via the API: list your workspaces and copy the
id:
After editing
.env, runphp artisan config:clearso Laravel picks up the new values, thenphp artisan postman:sync --push.
Configuration
Key options in config/postman-sync.php:
Full configuration reference and a multi-guard (CRM-style) example are in INSTALLATION.md.
How it works
A one-directional pipeline of immutable DTOs; each stage is interface-backed and independently tested.
Testing
All Postman API calls go through Laravel's Http facade and are mocked with Http::fake() โ the test suite needs no real API key or network.
Contributing
Issues and PRs welcome. Please run composer test && composer stan && composer lint before submitting. New code uses declare(strict_types=1) and Sorbet-style full type hints; tests are written in Pest.
License
MIT.
All versions of laravel-postman-sync with dependencies
illuminate/console Version ^10.0|^11.0|^12.0
illuminate/http Version ^10.0|^11.0|^12.0
illuminate/routing Version ^10.0|^11.0|^12.0
illuminate/support Version ^10.0|^11.0|^12.0
illuminate/validation Version ^10.0|^11.0|^12.0