handOffBid
Requires permission biddesk:bid:update.
Moves an open bid to another stage as a hand-off: marks the finished stage done, keeps the checklist as counted now, replaces any pending hand-off of the bid, and tells the members holding the receiving role. Refused with BID_CLOSED on a closed bid and HANDOFF_NO_RECIPIENT when nobody holds the role; VERSION_CONFLICT when the bid changed. Requires Bid Desk and permission to update bids.
Errors: a failed call returns a GraphQL errors entry, not a field on the result, and data may be null or partial. Read the entry's extensions.code and message; every shape and code is in the Error reference.
Example:
- GraphQL
- cURL
mutation HandOffBid($input: HandOffBidInput!) {
handOffBid(input: $input) {
id
bidNumber
sentByName
status
createdAt
acceptedAt
checklist {
clear
count
key
}
}
}
curl -X POST "https://<api-host>/graphql" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
--data @- <<'EOF'
{
"query": "mutation HandOffBid($input: HandOffBidInput!) {\n handOffBid(input: $input) {\n id\n bidNumber\n sentByName\n status\n createdAt\n acceptedAt\n checklist {\n clear\n count\n key\n }\n }\n}",
"variables": {
"input": {
"bidId": "id",
"expectedVersion": 0,
"toStage": "APPROVAL"
}
}
}
EOF
Variables:
{
"input": {
"bidId": "id",
"expectedVersion": 0,
"toStage": "APPROVAL"
}
}
Response:
{
"data": {
"handOffBid": {
"id": "id",
"bidNumber": "string",
"sentByName": "string",
"status": "ACCEPTED",
"createdAt": "2025-01-15T00:00:00Z",
"acceptedAt": "2025-01-15T00:00:00Z",
"checklist": [
{
"clear": true,
"count": 0,
"key": "DEVIATIONS"
}
]
}
}
}
handOffBid(
input: HandOffBidInput!
): BidHandoff!
Arguments
handOffBid.input ● HandOffBidInput! non-null input
The bid, the stage, the receiving role and a note.
Type
BidHandoff object
A bid handed from one stage to the next team, with its checklist.