Google Workspace
Agenda, Drive, Gmail en Contacten, per organisatie gekoppeld met je eigen OAuth-client en per medewerker aangezet.
30 endpoints, verdeeld over 1 groep. Een recht geschreven als module.resource.action:own heeft een bereik: :own dekt rijen die van jou zijn, :any die van iedereen, en :any voldoet aan een controle op :own.
google
Section titled “google”| Endpoint | Recht |
|---|---|
GET /google/calendar/calendars | google.connection.manage |
PUT /google/calendar/calendars | google.connection.manage |
GET /google/calendar/channels | google.calendar.read |
GET /google/calendar/events | google.calendar.read |
POST /google/calendar/webhook | Bewust open |
GET /google/connections | google.settings.manage |
GET /google/connections/me | google.connection.manage |
PATCH /google/connections/me | google.connection.manage |
POST /google/connections/me/disconnect | google.connection.manage |
GET /google/drive/browse | google.drive.read |
DELETE /google/drive/files/{drive_file_id} | google.drive.write |
PUT /google/drive/folder | google.drive.write |
POST /google/drive/folders | google.drive.write |
GET /google/drive/links | google.drive.read |
POST /google/drive/links | google.drive.write |
DELETE /google/drive/links/{link_id} | google.drive.write |
POST /google/drive/provision | google.drive.write |
POST /google/drive/provision-all | google.settings.manage |
GET /google/drive/state | google.drive.read |
POST /google/drive/upload-session | google.drive.write |
POST /google/gmail/import | interactions.interaction.write |
GET /google/gmail/lookup | google.connection.manage |
POST /google/gmail/refresh | google.connection.manage |
GET /google/gmail/search | google.connection.manage |
GET /google/gmail/status | google.connection.manage |
GET /google/gmail/threads/{thread_id} | google.connection.manage |
GET /google/oauth/callback | google.connection.manage |
GET /google/oauth/connect | google.connection.manage |
GET /google/settings | google.settings.manage |
PUT /google/settings | google.settings.manage |
Parameters en schema’s per endpoint
GET /api/v1/google/calendar/calendars
Section titled “GET /api/v1/google/calendar/calendars”Calendar List — The viewer’s own calendarList — the selection UI’s read (#440). Briefly cached; the existing calendar.events scope covers it, so no re-consent is needed.
Recht: google.connection.manage
Antwoord: 200 · CalendarListEntry[]
PUT /api/v1/google/calendar/calendars
Section titled “PUT /api/v1/google/calendar/calendars”Set Calendar Selection — Choose which shared calendars sync for the viewer. Deselecting removes the calendar’s cached events on the spot; selecting queues a sync so the agenda fills without waiting.
Recht: google.connection.manage
Request body: CalendarSelection
Antwoord: 200 · CalendarListEntry[]
GET /api/v1/google/calendar/channels
Section titled “GET /api/v1/google/calendar/channels”Calendar Channels — The viewer’s selection off the database alone — what the Agenda’s feeds menu reads on every open, so it never costs a Google call.
Recht: google.calendar.read
Antwoord: 200 · SelectedCalendar[]
GET /api/v1/google/calendar/events
Section titled “GET /api/v1/google/calendar/events”Calendar Events — The viewer’s own cached Google events. Reads the local cache, never Google live.
Recht: google.calendar.read
Queryparameters:
| Naam | Type | Betekenis |
|---|---|---|
date_from | string · verplicht | |
date_to | string · verplicht |
Antwoord: 200 · CalendarFeedItem[]
POST /api/v1/google/calendar/webhook
Section titled “POST /api/v1/google/calendar/webhook”Calendar Webhook
Recht: Bewust open
Antwoord: 200
GET /api/v1/google/connections
Section titled “GET /api/v1/google/connections”List Connections
Recht: google.settings.manage
Antwoord: 200 · app__integrations__google__schemas__ConnectionRead[]
GET /api/v1/google/connections/me
Section titled “GET /api/v1/google/connections/me”My Connection
Recht: google.connection.manage
Antwoord: 200 · MyConnectionRead
PATCH /api/v1/google/connections/me
Section titled “PATCH /api/v1/google/connections/me”Update My Connection
Recht: google.connection.manage
Request body: MyConnectionUpdate
Antwoord: 200 · MyConnectionRead
POST /api/v1/google/connections/me/disconnect
Section titled “POST /api/v1/google/connections/me/disconnect”Disconnect My Connection
Recht: google.connection.manage
Antwoord: 204
GET /api/v1/google/drive/browse
Section titled “GET /api/v1/google/drive/browse”Browse — Live folder contents as the viewing user — Drive’s permissions are authoritative.
Recht: google.drive.read
Queryparameters:
| Naam | Type | Betekenis |
|---|---|---|
folder_id | string | |
q | string | |
refresh | boolean | (default false) |
Antwoord: 200 · DriveBrowseResult
DELETE /api/v1/google/drive/files/{drive_file_id}
Section titled “DELETE /api/v1/google/drive/files/{drive_file_id}”Trash File — Move a Drive file to Drive’s bin — the other half of unlink (#394).
Recht: google.drive.write
Padparameters: drive_file_id
Antwoord: 204
PUT /api/v1/google/drive/folder
Section titled “PUT /api/v1/google/drive/folder”Set Folder — Point a record at an existing Drive folder — the picker’s target.
Recht: google.drive.write
Request body: DriveFolderSet
Antwoord: 200 · DriveLinkRead
POST /api/v1/google/drive/folders
Section titled “POST /api/v1/google/drive/folders”Create Folder — Create a subfolder inside the folder being browsed, as the viewing user (issue #21).
Recht: google.drive.write
Request body: DriveFolderCreate
Antwoord: 201 · DriveFolder
GET /api/v1/google/drive/links
Section titled “GET /api/v1/google/drive/links”List Links
Recht: google.drive.read
Queryparameters:
| Naam | Type | Betekenis |
|---|---|---|
entity_type | string · verplicht | |
entity_id | string · verplicht | |
rollup | boolean | (default false) |
limit | integer | Cap the page a panel draws (#407); ask for one more than you keep to learn there are more. Absent means every link, which is what the roll-up view needs — a roll-up folds a project’s tasks in after the query and cannot be cut before it. |
Antwoord: 200 · DriveLinkRead[]
POST /api/v1/google/drive/links
Section titled “POST /api/v1/google/drive/links”Create Link
Recht: google.drive.write
Request body: DriveLinkCreate
Antwoord: 201 · DriveLinkRead
DELETE /api/v1/google/drive/links/{link_id}
Section titled “DELETE /api/v1/google/drive/links/{link_id}”Delete Link — Unlink only. The Drive file is never touched (issue #21 — the dialog says so too).
Recht: google.drive.write
Padparameters: link_id
Antwoord: 204
POST /api/v1/google/drive/provision
Section titled “POST /api/v1/google/drive/provision”Provision Entity — Queue one entity’s folder — the panel’s “create folder” button.
Recht: google.drive.write
Request body: DriveProvisionRequest
Antwoord: 202
POST /api/v1/google/drive/provision-all
Section titled “POST /api/v1/google/drive/provision-all”Provision All — Backfill: a folder for every client that has none (Instellingen → Google).
Recht: google.settings.manage
Antwoord: 200 · DriveBulkProvisionResult
GET /api/v1/google/drive/state
Section titled “GET /api/v1/google/drive/state”Drive State — Provisioning readiness + this entity’s folder-job status, for the panels (#444).
Recht: google.drive.read
Queryparameters:
| Naam | Type | Betekenis |
|---|---|---|
entity_type | string | |
entity_id | string |
Antwoord: 200 · DriveStateRead
POST /api/v1/google/drive/upload-session
Section titled “POST /api/v1/google/drive/upload-session”Create Upload Session
Recht: google.drive.write
Request body: DriveUploadSessionCreate
Antwoord: 200 · DriveUploadSession
POST /api/v1/google/gmail/import
Section titled “POST /api/v1/google/gmail/import”Import Gmail Message — Log one message the poller skipped, filed where the caller says.
Recht: interactions.interaction.write
Request body: GmailImportRequest
Antwoord: 201 · GmailImportResult
GET /api/v1/google/gmail/lookup
Section titled “GET /api/v1/google/gmail/lookup”Lookup Gmail Message — Resolve a pasted reference to the message(s) it names, in the caller’s own mailbox.
Recht: google.connection.manage
Queryparameters:
| Naam | Type | Betekenis |
|---|---|---|
reference | string · verplicht | A Gmail link, a message/thread id, or an RFC-822 Message-ID |
Antwoord: 200 · GmailLookupResult
POST /api/v1/google/gmail/refresh
Section titled “POST /api/v1/google/gmail/refresh”Refresh Gmail — Poll this mailbox once, now — rate-limited to one manual poll per minute.
Recht: google.connection.manage
Antwoord: 200 · GmailRefreshResult
GET /api/v1/google/gmail/search
Section titled “GET /api/v1/google/gmail/search”Search Gmail — Find a message in the caller’s own mailbox, by who it was with and when (#372).
Recht: google.connection.manage
Queryparameters:
| Naam | Type | Betekenis |
|---|---|---|
participant | string | |
subject | string | |
after | string | |
before | string |
Antwoord: 200 · GmailSearchResult
GET /api/v1/google/gmail/status
Section titled “GET /api/v1/google/gmail/status”Read Gmail Status — When this mailbox was last polled, and whether asking for another one is worth it.
Recht: google.connection.manage
Antwoord: 200 · GmailSyncStatus
GET /api/v1/google/gmail/threads/{thread_id}
Section titled “GET /api/v1/google/gmail/threads/{thread_id}”Read Gmail Thread — Every message of one conversation, marked with what is already on the timeline.
Recht: google.connection.manage
Padparameters: thread_id
Antwoord: 200 · GmailLookupResult
GET /api/v1/google/oauth/callback
Section titled “GET /api/v1/google/oauth/callback”Google Oauth Callback — Store the grant and land the browser back where the connect started.
Recht: google.connection.manage
Antwoord: 200
GET /api/v1/google/oauth/connect
Section titled “GET /api/v1/google/oauth/connect”Oauth Connect — 302 to Google’s consent screen, asking exactly the enabled surfaces’ scopes.
Recht: google.connection.manage
Queryparameters:
| Naam | Type | Betekenis |
|---|---|---|
include_gmail | boolean | (default false) |
include_marketing | boolean | (default false) |
include_analytics | boolean | (default false) |
include_search_console | boolean | (default false) |
include_ads | boolean | (default false) |
include_tag_manager | boolean | (default false) |
next | string | (default “) |
Antwoord: 200
GET /api/v1/google/settings
Section titled “GET /api/v1/google/settings”Get Settings
Recht: google.settings.manage
Antwoord: 200 · GoogleSettingsRead
PUT /api/v1/google/settings
Section titled “PUT /api/v1/google/settings”Save Settings
Recht: google.settings.manage
Request body: GoogleSettingsWrite
Antwoord: 200 · GoogleSettingsRead