WEBVTT

00:00:00.482 --> 00:00:10.495
Welcome to Getman. This tutorial shows how to use Getman every day… and how our backend and web developers, and their coding agents, hand each other API changes through Git.

00:00:11.457 --> 00:00:17.352
Until now, a backend change reached the web team as a Markdown file… often without tested examples.

00:00:17.829 --> 00:00:28.686
With Getman, it becomes a structured change package, in the same Git repository as the code: the contract diff, request and response examples, migration notes, and evidence from real test runs.

00:00:30.066 --> 00:00:39.034
Coding agents read and write these packages through Getman's local MCP server. Nothing runs in the cloud: no account, no server, no subscription.

00:00:39.435 --> 00:00:50.293
We'll install Getman, do everyday API work, see what it keeps in Git, connect a coding agent, then follow one real API change from backend to web developer, and finish with troubleshooting.

00:00:52.493 --> 00:01:02.162
Everything you'll see is real: Getman's interface and engine, real terminal commands, and a real coding agent. The only data is a small sample Shop API on this machine.

00:01:04.095 --> 00:01:15.524
First, install Getman. Download your system's build from the team's GitHub release. On a Mac, drag it to Applications. The build isn't signed yet, so the first time… right-click Getman and choose Open.

00:01:16.515 --> 00:01:20.419
The command line and coding agents also need Node.js 20 or later.

00:01:22.914 --> 00:01:33.177
Here, we simulate a small team on one machine. This script creates a shared Git repository and two clones: one for Alice, a backend developer, and one for Bob, who builds the web app.

00:01:35.097 --> 00:01:39.504
In real life, you just clone your team's repository. Let's look inside Alice's clone.

00:01:41.051 --> 00:01:46.882
The backend, the web app, and a getman folder: the team's Getman workspace, committed like any other code.

00:01:48.709 --> 00:01:54.184
Alice starts the Shop API on port 4780; node restarts it whenever its code changes.

00:01:59.246 --> 00:02:06.478
Bob opens Getman for the first time. Instead of building requests by hand, he opens the team workspace: the getman folder in his clone.

00:02:08.051 --> 00:02:11.853
Getman loads the project, its environments, and every saved request.

00:02:12.385 --> 00:02:16.484
On the left are the collections, folders and requests the whole team shares.

00:02:16.835 --> 00:02:19.355
At the top: the project, and the active environment.

00:02:20.395 --> 00:02:22.898
The status bar always shows where your requests go.

00:02:24.073 --> 00:02:31.045
Secret values are never stored in Git. The password variable arrives empty… so Bob fills it in once, under Environments.

00:02:31.791 --> 00:02:38.940
He types the demo password. Secrets stay masked, in this computer's secure storage: in the desktop app, the system keychain.

00:02:45.802 --> 00:02:49.398
Everyday work: Bob opens Get order, from the Orders folder.

00:02:50.742 --> 00:02:58.537
The URL uses variables in double braces, like base_url, and a path parameter for the order ID. He presses Send.

00:02:58.887 --> 00:03:05.748
Two hundred, OK. Bob never logged in… yet the request succeeded. That's the project's authentication at work.

00:03:06.099 --> 00:03:13.749
This request's Auth is set to inherit. Auth and headers come from the project, then the collection, then the folder, and any level can override them.

00:03:14.531 --> 00:03:26.734
In Project settings, Access, the project sends a bearer token and an X-Client header with every request. When the token is missing or rejected, Getman runs Login first, saves the new token as a secret, and retries.

00:03:29.529 --> 00:03:34.756
Now, a new request. Bob adds Get current user to the Orders folder, pointing at slash me.

00:03:36.693 --> 00:03:45.801
No assertions yet, so he opens Tests. No-code assertions check status, response time, JSON fields, headers, array lengths, or a JSON schema.

00:03:48.121 --> 00:03:53.822
Extractors copy a response value into a variable for the next request in a run. Here, the user's email.

00:03:55.925 --> 00:04:00.537
To see a failure, Bob expects 201 instead of 200… and sends again.

00:04:02.731 --> 00:04:07.920
The response's Tests tab says exactly what went wrong: expected 201, got 200.

00:04:08.818 --> 00:04:12.327
He sets it back to 200, sends, and saves with Command S.

00:04:13.045 --> 00:04:20.342
Environments switch where requests go. Bob picks Production: the URL now resolves to the production host, as the status bar shows.

00:04:21.052 --> 00:04:28.287
Production is protected. Sending a POST, like Login, asks for confirmation first. Bob cancels, and switches back to Local.

00:04:29.369 --> 00:04:36.589
To run a whole collection: Run collection. Getman runs each request in order, carries variables forward, and shows every assertion.

00:04:39.927 --> 00:04:48.004
Need it in the web app's code? More, Generate code, gives Fetch or Axios code with inherited auth and headers. Secrets stay masked on screen.

00:04:49.434 --> 00:04:57.083
OpenAPI works both ways. Export project writes an OpenAPI 3.1 contract, reporting anything it had to infer or leave out.

00:04:58.205 --> 00:05:03.774
And Import reads OpenAPI, Swagger, Postman collections, cURL commands, and HAR captures.

00:05:07.701 --> 00:05:13.303
What exactly lives in Git? Plain, reviewable YAML. Here's the Local environment, from Bob's clone.

00:05:14.387 --> 00:05:21.612
Base URL and email are shared; password and token are marked secret, with empty values. Secret values never leave your machine.

00:05:22.679 --> 00:05:27.809
Each request is one file, so a pull request shows exactly which request changed… and how.

00:05:28.817 --> 00:05:40.960
The getman folder holds project settings, environments without secret values, one file per request, the current contract, and the change packages. History, open tabs and secret values stay on your machine.

00:05:42.502 --> 00:05:47.510
In the app, Git lives in the Changes view: this icon… or Command Shift G.

00:05:48.226 --> 00:05:54.364
The Git bar shows the branch, its upstream, commits ahead or behind, and uncommitted Getman files.

00:05:54.839 --> 00:06:05.202
Fetch finds teammates' work without changing your files. Pull fast-forwards only, and never merges for you. Commit lets you tick which Getman files to commit; Push sends them.

00:06:05.552 --> 00:06:11.411
Bob tells Getman which consumer he is: web. His Inbox lists the changes web still has to integrate.

00:06:12.591 --> 00:06:23.297
Getman reads, warns and refuses on its own… but nothing commits, pushes or pulls without your click. Merging and conflicts stay in Git, with the tools you already use.

00:06:26.277 --> 00:06:34.735
Now, the coding agent. First, install the command line tool from Project settings, Command line and agents. It also contains the MCP server.

00:06:36.070 --> 00:06:45.442
The repository already has a small MCP config: Claude Code starts getman mcp on its getman folder. No absolute paths, so it works in every clone.

00:06:47.441 --> 00:06:57.145
Secrets reach the agent as environment variables named GETMAN_VAR_, plus the variable's key. Bob exports the demo password in this shell only.

00:06:57.496 --> 00:06:59.850
Let's ask Claude Code what it can see through Getman.

00:07:06.670 --> 00:07:14.908
Through Getman's tools, the agent found the project, its environments and requests. It knows the password is set… but the tools never return its value.

00:07:15.961 --> 00:07:32.659
These are the tools. Agents only see the folders the server was started with, and never secret values. Before any request that changes production data, Getman asks you to approve that one request in the agent's app. The agent can't approve it for you. Read only mode removes the write tools entirely.

00:07:33.948 --> 00:07:41.677
The main event: one API change, from Alice's backend to Bob's web app, with an agent on each side… and Git in between.

00:07:42.262 --> 00:07:44.995
Alice has opened the same team workspace in her Getman.

00:07:47.039 --> 00:07:56.034
Alice's task for her agent: rename total to total cents, add a currency, update the Getman request to match, then package and verify the change through Getman.

00:07:58.890 --> 00:08:02.535
She runs Claude Code in her clone. Watch the Getman tools it calls.

00:08:13.998 --> 00:08:24.213
The agent edited the server, checked the new response, updated the request, and called create change and verify change. Getman wrote the change package… and ran the request for real.

00:08:24.706 --> 00:08:27.991
In Alice's Getman, the Changes view shows the new package.

00:08:29.366 --> 00:08:38.692
It has a stable reference, G T shop 001, the affected endpoint, and the contract diff. Total was removed; total cents and currency were added.

00:08:39.563 --> 00:08:50.425
Getman rates the removal potentially breaking, not breaking… because the response schema was inferred from examples: weak evidence. The rules are documented in Contracts dot M D.

00:08:50.866 --> 00:08:58.503
Below: migration notes for consumers, and evidence from the agent's real run: environment, contract revision, and every assertion.

00:09:00.042 --> 00:09:06.765
Sharing is plain Git: Alice commits the code and Getman files together, and pushes. Getman never does this on its own.

00:09:07.620 --> 00:09:14.222
Bob clicks Fetch. Before anything is pulled, Getman finds an incoming change package and the request files it changed.

00:09:14.651 --> 00:09:20.738
It's in his Inbox, marked not pulled. He pulls, and confirms the changed request may replace his copy.

00:09:21.505 --> 00:09:29.309
Bob now has the complete package: what changed, examples, migration notes, and evidence. No Markdown file required.

00:09:30.254 --> 00:09:34.594
His web client still reads total… so its test fails against the new API.

00:09:35.087 --> 00:09:38.165
Bob gives his agent only the change reference, and a goal.

00:09:47.892 --> 00:09:58.658
The agent read the change through MCP, updated the client and its test, ran the tests, and reported verified. Getman accepted that only after re-running the requests against the new contract.

00:09:59.287 --> 00:10:01.449
Bob's tests pass, and he pushes.

00:10:06.603 --> 00:10:12.499
Back on Alice's side: Fetch, Pull… and the change now says Integration verified, by web.

00:10:12.849 --> 00:10:19.701
From API change to verified integration: structured, tested, and shared through the team's existing Git workflow.

00:10:21.491 --> 00:10:30.605
Finally, the most likely problems. First: a missing secret. Without the password, login fails, and Getman says the token request returned 401.

00:10:32.300 --> 00:10:39.005
Fix it in the app's Environments, or by exporting GETMAN_VAR_password for the command line and agents.

00:10:39.355 --> 00:10:43.627
An unknown environment name stops before anything is sent, with exit code 3.

00:10:44.820 --> 00:10:52.408
In a production environment, mutating requests are skipped, and the run exits with code 4, unless you pass allow mutations on purpose.

00:10:52.948 --> 00:10:58.582
If an agent can't reach Getman, start the M C P server by hand. A wrong folder gives a clear error.

00:10:59.263 --> 00:11:05.447
Git trouble: say a bad merge left conflict markers in a change file. Validate finds it, and says how to recover.

00:11:06.782 --> 00:11:12.911
Getman's Inbox flags the file as needing a fix, and refuses to load it… so nothing is silently overwritten.

00:11:14.205 --> 00:11:18.411
Resolve it with Git as usual. Here, Bob restores the committed file.

00:11:19.355 --> 00:11:26.543
Here's the short list. Everything here, with exact commands, is in the onboarding guide next to this video. Welcome to the team.

