Private preview of the new site. Not live.

hub.view

The customer hub for the signed-in customer: their quotes, jobs, invoices with what is still owed, upcoming visits with any change request, and requests with this shop. state is ok, gone (revoked, expired or unknown) or wrong_person (signed in with an email the shop does not have for this customer). Hosted page only.

WhoHosted page only (a person does it in the browser)
RESTGET /v1/hub/view
MCP toolNot an MCP tool
Writesno
AreaCustomer hub, requests and customer emails

When to use it

Give a customer one page with everything they have with the shop: hub.createLink makes a link for one customer (shown once; send it yourself, Doing Work sends nothing). On it the customer sees their quotes, jobs, invoices with what is still owed, upcoming visits and requests, opens a quote, pays an invoice, asks to move or cancel a visit, and asks for new work (it arrives as a portal request).

What to tell the owner

Send the person the link. They finish this step themselves on the page; you never do it for them.

Input

FieldTypeRequired
kstringyes

Example

GET https://doingwork.work/v1/hub/view?k=...

Output

FieldTypeAlways there
statestringyes
link_idstring (uuid)no
shop_idstring (uuid)no
customer_idstring (uuid)no
shopstringno
customerstringno
time_zonestringno
expires_atstring (date-time)no
propertiesarrayno
properties[].property_idstring (uuid)yes
properties[].label['string', 'null']yes
properties[].addressstringyes
jobsarrayno
jobs[].job_idstring (uuid)yes
jobs[].summary['string', 'null']yes
jobs[].statusstringyes
jobs[].created_atstring (date-time)yes
quotesarrayno
quotes[].quote_idstring (uuid)yes
quotes[].job_idstring (uuid)yes
quotes[].summary['string', 'null']yes
quotes[].statusstringyes
quotes[].versionintegeryes
quotes[].total_minorintegeryes
quotes[].currencystringyes
quotes[].can_openbooleanyes
invoicesarrayno
invoices[].invoice_idstring (uuid)yes
invoices[].job_idstring (uuid)yes
invoices[].summary['string', 'null']yes
invoices[].statusstringyes
invoices[].total_minorintegeryes
invoices[].balance_minorintegeryes
invoices[].currencystringyes
invoices[].can_paybooleanyes
visitsarrayno
visits[].visit_idstring (uuid)yes
visits[].job_idstring (uuid)yes
visits[].summary['string', 'null']yes
visits[].title['string', 'null']yes
visits[].starts_atstring (date-time)yes
visits[].ends_atstring (date-time)yes
visits[].statusstringyes
visits[].can_ask_changebooleanyes
visits[].change['object', 'null']yes
requestsarrayno
requests[].request_idstring (uuid)yes
requests[].titlestringyes
requests[].stagestringyes
requests[].created_atstring (date-time)yes
{
  "state": "..."
}

Errors

CodeStatusWhat to do
invalid_input, invalid_token, rate_limitedCan happen on any call. See errors.