Skip to content

Accept in person

POST
/quotes/{id}/accept-in-person
curl --request POST \
--url https://example.com/quotes/example/accept-in-person \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0' \
--data '{ "signatureFileId": "example", "signerName": "example", "comment": "example" }'

Who can call it: Owners, Staff and Field users. Staff need the Team right Accept a quote in person (quotes.accept_in_person).

curl -X POST "https://spine.example.com/api/quotes/<id>/accept-in-person" \
  -H "Cookie: better-auth.session_token=<session>" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" -d '{ … }'
id
required
string
Idempotency-Key
required
string format: uuid

A fresh UUID per action. A retry with the same key gets the first answer instead of doing it twice.

Media typeapplication/json
object
signatureFileId
required

File id already uploaded via POST /files.

string
signerName
required

US-QUO-19 — the name the customer typed above their signature.

string
comment
string
nullable

Example generated

{
"signatureFileId": "example",
"signerName": "example",
"comment": "example"
}

Validation failed or a business rule was broken; message says what to change.

No session, or it has expired: sign in again.

The caller’s role, Team rights or ownership don’t allow it, the module is switched off, or their access was removed.

No such record in this business.

The same Idempotency-Key is still being handled, or the record conflicts with one that exists.

Too many requests: wait a minute.

Something went wrong on the server; the response carries the request id to report.