BUSINESS · COMMERCE & FINANCE
Clients, estimates, invoices and tracked hours from their own practice.
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
clientary_delete_api_v2_clients_client_id_payment_profiles_idWRITEDelete a payment profile via DELETE /api/v2/clients/{client_id}/payment_profiles/{id}
clientary_delete_api_v2_clients_idWRITEDelete a client via DELETE /api/v2/clients/{id}
clientary_delete_api_v2_contacts_idWRITEDelete a contact via DELETE /api/v2/contacts/{id}
clientary_delete_api_v2_estimates_idWRITEDelete an estimate via DELETE /api/v2/estimates/{id}
clientary_delete_api_v2_expenses_idWRITEDelete an expense via DELETE /api/v2/expenses/{id}
clientary_delete_api_v2_hours_idWRITEDelete an entry via DELETE /api/v2/hours/{id}
clientary_delete_api_v2_invoices_idWRITEDelete an invoice via DELETE /api/v2/invoices/{id}
clientary_delete_api_v2_invoices_invoice_id_payments_idWRITEDelete a payment via DELETE /api/v2/invoices/{invoice_id}/payments/{id}
clientary_delete_api_v2_leads_idWRITEDelete a lead via DELETE /api/v2/leads/{id}
clientary_delete_api_v2_projects_idWRITEDelete a project via DELETE /api/v2/projects/{id}
clientary_delete_api_v2_recurring_idWRITEDelete a recurring schedule via DELETE /api/v2/recurring/{id}
clientary_delete_api_v2_tasks_idWRITEDelete a task via DELETE /api/v2/tasks/{id}
clientary_get_api_v2_clientsREADGet all clients via GET /api/v2/clients
clientary_get_api_v2_clients_client_id_contactsREADGet contacts for client via GET /api/v2/clients/{client_id}/contacts
clientary_get_api_v2_clients_client_id_estimatesREADGet estimates for client via GET /api/v2/clients/{client_id}/estimates
clientary_get_api_v2_clients_client_id_expensesREADGet expenses for client via GET /api/v2/clients/{client_id}/expenses
clientary_get_api_v2_clients_client_id_invoicesREADGet invoices for client via GET /api/v2/clients/{client_id}/invoices
clientary_get_api_v2_clients_client_id_payment_profilesREADGet payment profiles for client via GET /api/v2/clients/{client_id}/payment_profiles
clientary_get_api_v2_clients_client_id_projectsREADGet projects for client via GET /api/v2/clients/{client_id}/projects
clientary_get_api_v2_clients_idREADGet a client via GET /api/v2/clients/{id}
clientary_get_api_v2_contactsREADGet all contacts via GET /api/v2/contacts
clientary_get_api_v2_contacts_idREADGet a contact via GET /api/v2/contacts/{id}
clientary_get_api_v2_estimatesREADGet all estimates via GET /api/v2/estimates
clientary_get_api_v2_estimates_idREADGet an estimate via GET /api/v2/estimates/{id}
clientary_get_api_v2_expensesREADGet expenses by date via GET /api/v2/expenses
clientary_get_api_v2_expenses_idREADGet an expense via GET /api/v2/expenses/{id}
clientary_get_api_v2_hours_idREADGet a specific entry via GET /api/v2/hours/{id}
clientary_get_api_v2_invoicesREADGet all invoices via GET /api/v2/invoices
clientary_get_api_v2_invoices_idREADGet an invoice via GET /api/v2/invoices/{id}
clientary_get_api_v2_leadsREADGet all leads via GET /api/v2/leads
clientary_get_api_v2_leads_idREADGet a lead via GET /api/v2/leads/{id}
clientary_get_api_v2_paymentsREADGet all payments via GET /api/v2/payments
clientary_get_api_v2_projectsREADGet all projects via GET /api/v2/projects
clientary_get_api_v2_projects_idREADGet a project via GET /api/v2/projects/{id}
clientary_get_api_v2_projects_project_id_estimatesREADGet estimates for project via GET /api/v2/projects/{project_id}/estimates
clientary_get_api_v2_projects_project_id_expensesREADGet expenses for project via GET /api/v2/projects/{project_id}/expenses
clientary_get_api_v2_projects_project_id_hoursREADGet hours for project via GET /api/v2/projects/{project_id}/hours
clientary_get_api_v2_projects_project_id_invoicesREADGet invoices for project via GET /api/v2/projects/{project_id}/invoices
clientary_get_api_v2_recurringREADGet all recurring schedules via GET /api/v2/recurring
clientary_get_api_v2_recurring_idREADGet a recurring schedule via GET /api/v2/recurring/{id}
clientary_get_api_v2_recurring_id_invoicesREADGet invoices for recurring schedule via GET /api/v2/recurring/{id}/invoices
clientary_get_api_v2_tasksREADGet tasks via GET /api/v2/tasks
clientary_get_api_v2_tasks_idREADGet a task via GET /api/v2/tasks/{id}
clientary_get_projects_project_id_tasksREADGet tasks for project via GET /projects/{project_id}/tasks
clientary_get_staffREADGet all staff via GET /staff
clientary_get_staff_idREADGet a staff user via GET /staff/{id}
clientary_post_api_v2_clientsWRITECreate a new client via POST /api/v2/clients
clientary_post_api_v2_clients_client_id_contactsWRITECreate a new contact via POST /api/v2/clients/{client_id}/contacts
clientary_post_api_v2_clients_client_id_invoicesWRITECreate a new invoice for client via POST /api/v2/clients/{client_id}/invoices
clientary_post_api_v2_clients_client_id_payment_profilesWRITECreate a payment profile via POST /api/v2/clients/{client_id}/payment_profiles
clientary_post_api_v2_estimatesWRITECreate a new estimate via POST /api/v2/estimates
clientary_post_api_v2_estimates_id_messagesWRITESend an estimate via POST /api/v2/estimates/{id}/messages
clientary_post_api_v2_expensesWRITECreate a new expense via POST /api/v2/expenses
clientary_post_api_v2_invoicesWRITECreate a new invoice via POST /api/v2/invoices
clientary_post_api_v2_invoices_id_messagesWRITESend an invoice via POST /api/v2/invoices/{id}/messages
clientary_post_api_v2_invoices_invoice_id_paymentsWRITEPost a new invoice payment via POST /api/v2/invoices/{invoice_id}/payments
clientary_post_api_v2_leadWRITECreate a new lead via POST /api/v2/Lead
clientary_post_api_v2_projectsWRITECreate a new project via POST /api/v2/projects
clientary_post_api_v2_projects_project_id_hoursWRITECreate a new entry via POST /api/v2/projects/{project_id}/hours
clientary_post_api_v2_recurringWRITECreate a new recurring schedule via POST /api/v2/recurring
clientary_post_api_v2_taskWRITECreate a new task via POST /api/v2/task
clientary_put_api_v2_clients_idWRITEUpdate a client via PUT /api/v2/clients/{id}
clientary_put_api_v2_contacts_idWRITEUpdate a contact via PUT /api/v2/contacts/{id}
clientary_put_api_v2_estimates_idWRITEUpdate an estimate via PUT /api/v2/estimates/{id}
clientary_put_api_v2_expenses_idWRITEUpdate an expense via PUT /api/v2/expenses/{id}
clientary_put_api_v2_hours_idWRITEUpdate an entry via PUT /api/v2/hours/{id}
clientary_put_api_v2_invoice_idWRITEUpdate an invoice via PUT /api/v2/invoice/{id}
clientary_put_api_v2_leads_idWRITEUpdate a lead via PUT /api/v2/leads/{id}
clientary_put_api_v2_projects_idWRITEUpdate a project via PUT /api/v2/projects/{id}
clientary_put_api_v2_recurring_idWRITEUpdate a recurring schedule via PUT /api/v2/recurring/{id}
clientary_put_api_v2_tasks_idWRITEUpdate a task via PUT /api/v2/tasks/{id}
Put Clientary behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.