Google Drive Archiving
When a supplier has connected Google Drive (Settings → Integrations → Google Drive), every signed waiver/form is archived to their chosen Drive folder automatically — the generated PDF(s) plus any customer-uploaded files. These endpoints let you read the connection status, trigger a manual re-archive of a single response, and disconnect.
Connecting is an OAuth (browser) flow and is not an API action.
Requires the Google Drive Archiving plan feature (Growth and above).
Get connection status
GET /api/v1/settings/drive
Scope: drive:read
{
"data": {
"connected": true,
"account_email": "shop@example.com",
"folder_name": "Signed Records",
"folder_url": "https://drive.google.com/drive/folders/abc123",
"folder_structure": "booking",
"folder_structure_label": "A folder per reservation",
"last_archived_at": "2026-06-17T14:05:00+00:00"
},
"meta": { "request_id": "..." }
}
When Google Drive is not connected, connected is false and the other fields are null.
folder_structure is how signed records are organized inside the chosen folder. One of:
| Value | Meaning |
|---|---|
flat | Everything saved straight into the chosen folder. |
booking | A sub-folder per reservation, e.g. Booking #123 — Jane Doe. |
customer | A sub-folder per customer. |
month | A sub-folder per month, e.g. 2026-06 June. |
Set how records are organized
PATCH /api/v1/settings/drive
Scope: drive:write
{
"folder_structure": "booking"
}
folder_structure is required and must be one of flat, booking, customer, month (otherwise 422). Returns the updated connection status (same shape as Get connection status). Changing this affects new signings — records already saved stay where they are. Returns 422 with error.code = drive_not_connected if Google Drive isn't connected.
Re-archive a response
Queues a (re-)archive of one response — useful to back-fill a record signed before the integration was connected, or to force the saved copy to refresh.
POST /api/v1/settings/drive/responses/{formResponse}/archive
Scope: drive:write
The {formResponse} must belong to the authenticated supplier, otherwise a 404 is returned. The archive runs asynchronously.
{
"data": { "queued": true, "form_response_id": 4821 },
"meta": { "request_id": "..." }
}
If Google Drive isn't connected, returns 422 with error.code = drive_not_connected.
Disconnect
DELETE /api/v1/settings/drive
Scope: drive:write
{
"data": { "connected": false },
"meta": { "request_id": "..." }
}
Records already saved stay in the supplier's Drive; no new records are archived until Google Drive is reconnected from the Settings UI.