Smileline
Build an app

Scopes

The permission areas a developer app can request, what each covers, and which webhook events it admits.

A developer app asks for areas of practice data, each as .read or .write. Write includes read. A token's scopes cap what the authorising member's role allows — they never widen it — and an area never reaches the clinical record, billing, the account, or the platform admin surfaces.

Practices see the requested areas on the consent screen. Ask for what the app needs and no more; a reviewer will ask why otherwise.

AreaCoversWebhook events it admits
patientsPatients and their activity timelinepatient.*, pms_patient.link_changed
appointmentsAppointments, locations, practitioners, the waitlistappointment.*
journeysJourneys (enquiries and treatment pipelines), pipelines, leadsjourney.*, lead_ad_submission.*
tasksTaskstask.*
conversationsConversations and messagesconversation.*, message.*
treatmentsThe treatment cataloguepms_treatment_plan.updated
campaignsCampaigns, message templates, automation sequences
depositsDeposit requests and payment settingsdeposit_request.*, pms_invoice.updated, pms_payment.updated
reputationReview requests, feedback, reviews and repliesreputation_*
reportsReports and report subscriptions
webhooksThe practice's outbound webhook endpoints
settingsPractice settingslead_ad_connection.health_changed, pms_connection.health_changed, pms_sync.review_required, channel_connection.health_changed

Add offline_access to receive a refresh token. Without it a connection ends when its one-hour access token expires.

How a scope is checked

Every request is checked twice:

  1. The route family must belong to one of the token's areas, so an area token never reaches an unrelated part of the API at all.
  2. The route's own permission (for example patient:create) must be covered by a held area of the right class, and then by the authorising member's role.

A request outside the token's scopes answers 403 with code: "INSUFFICIENT_SCOPE". A request the member's role forbids answers the usual 403 permission error.

Scope strings

The scope parameter is a space-separated list, for example patients.read appointments.write offline_access. An app can only request the areas it was published with; anything else answers invalid_scope at the authorise step.

On this page