Managing provider assignments, requests, and counter-offers.
When you are ready to commit to a provider, you Assign them. This is the contract step.
Binding Contract: Assigning a provider creates a financial obligation (funds are held or verified) and a legal agreement to perform the work.
user_id).POST /workorders/{id}/assignee?clientPayTermsAccepted=true
{
"user": { "id": 12345 }
}{
"id": 1001,
"status": "Assigned",
"assignee": {
"id": 12345,
"first_name": "John",
"last_name": "Smith",
"rating": 4.8
}
}Remove the current provider from the work order.
DELETE /workorders/{id}/assignee
Unassigning after the provider has started work may require providing a reason and could affect your company's metrics.
When you route a work order, providers can Request it. You can view and manage these requests.
GET /workorders/{id}/requests
{
"results": [
{
"id": 501,
"user": { "id": 12345, "name": "John Smith" },
"status": "pending",
"counter_offer": null,
"created": { "utc": "2026-01-15 10:00:00" }
}
]
}POST /workorders/{id}/requests/{request_id}/accept
DELETE /workorders/{id}/requests/{request_id}
Providers can submit a counter-offer with different pay terms.
{
"id": 501,
"user": { "id": 12345 },
"counter_offer": {
"pay": {
"type": "fixed",
"base": { "amount": 175.00 }
},
"note": "Travel distance is significant"
}
}POST /workorders/{id}/requests/{request_id}/accept
Accepting a counter-offer assigns the provider at their requested rate.
DELETE /workorders/{id}/requests/{request_id}
You can reject and continue routing to other providers.
When a work order is assigned to a service company, that company's admin may want one of their own technicians to do the work. They raise a swap request naming the proposed provider, and you decide whether to allow it.
Pending swaps appear in the swaps collection on the work order:
{
"swaps": {
"results": [
{
"id": 456,
"status": "pending",
"actions": ["accept", "deny"],
"from": { "id": 12345, "name": "John Smith" },
"to": { "id": 67890, "name": "Dana Lee" },
"requestor": { "id": 12345, "name": "John Smith" }
}
]
}
}PUT /workorders/{id}/swaps/{swap_id}
curl -X PUT "https://api.fieldnation.com/api/rest/v2/workorders/458212/swaps/456?access_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "status": "accepted" }'The work order is reassigned to the proposed provider. Add "ignored_missing_qualifications": true to approve even when the proposed provider lacks a qualification the work order requires.
curl -X PUT "https://api.fieldnation.com/api/rest/v2/workorders/458212/swaps/456?access_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "status": "denied" }'The original provider stays assigned and the request is closed.
Both return the full updated work order. Read back the swaps collection to confirm the decision was applied — the swap moves from pending to accepted or denied.
View all past assignments for a work order.
GET /workorders/{id}/assignments
{
"results": [
{
"id": 1,
"user": { "id": 12345, "name": "John Smith" },
"status": "completed",
"assigned_at": { "utc": "2026-01-15 10:00:00" }
}
]
}Last updated on