Skip to main content

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:

ValueMeaning
flatEverything saved straight into the chosen folder.
bookingA sub-folder per reservation, e.g. Booking #123 — Jane Doe.
customerA sub-folder per customer.
monthA 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.