Passo Developers
Api

Move a deal to another commercial stage

POST
/deals/{dealId}/moves

Moves a deal to a new commercial stage and records the move. Stages: contracted, active, complete, declined (production — script/video/posting — is tracked per deliverable, not on the deal). Forward moves (including skips, e.g. contracted straight to complete) are allowed and need no reason. A backward move — including reopening a completed or declined deal — requires a reason. declined is reachable from any stage. Body: toStage and an optional reason. Returns the recorded move. 400 if the move is illegal or a backward move omits a reason; 404 if the deal doesn't exist or you can't see it.

Authorization

AuthorizationBearer <token>

A Supabase-issued OAuth user access token. On collection endpoints, pair with a Passo-Workspace header to pick a workspace.

In: header

Path Parameters

dealId*string
Length1 <= length

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/deals/string/moves" \  -H "Content-Type: application/json" \  -d '{    "toStage": "contracted"  }'
{  "id": "string",  "dealId": "string",  "fromStage": "contracted",  "toStage": "contracted",  "reason": "string",  "actorUserId": "string",  "createdAt": "string"}