{"openapi":"3.1.0","info":{"title":"tracevero private monitoring","version":"2026-09-07.1"},"servers":[{"url":"https://api.tracevero.com/v2/monitoring"}],"components":{"securitySchemes":{"projectKey":{"type":"http","scheme":"bearer","description":"Project access key returned once on creation. No provider token is accepted."}}},"paths":{"/status":{"get":{"responses":{"200":{"description":"Worker heartbeat; no private project details."}}}},"/projects":{"post":{"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"object","properties":{"task_id":{"type":"string","enum":["file-invoices","invoice-amounts","email-calendar","meeting-tasks","orders-erp","save-research","gmail-attachments-drive","outlook-attachments-onedrive","gmail-attachments-dropbox","outlook-attachments-drive","gmail-find","outlook-find","gmail-read","outlook-read","gmail-draft","outlook-draft","gmail-send","outlook-send","drive-search","onedrive-search","dropbox-search","drive-upload","onedrive-upload","dropbox-upload","drive-to-onedrive","dropbox-to-drive","drive-to-dropbox","onedrive-to-dropbox","google-events","microsoft-events","google-event-create","microsoft-event-create","google-availability","microsoft-availability","google-event-update","microsoft-event-update","sheets-append","excel-append","sheets-read","excel-read","sheets-update","excel-update","sheets-to-excel","excel-to-sheets","sheets-create","github-issues","github-issue-read","github-issue-create","github-releases","github-issues-sheet"]},"query":{"type":"string","maxLength":500,"default":""},"apps":{"type":"array","items":{"type":"string","enum":["gmail","google-drive","google-calendar","google-sheets","outlook","onedrive","microsoft-calendar","excel","dropbox","github"]},"maxItems":10,"default":[]},"read_only":{"type":"boolean","default":false},"runtime":{"type":"string","enum":["any","local","remote"],"default":"any"},"granted_scopes":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":50,"default":[]},"evidence":{"type":"boolean","default":false}},"additionalProperties":false},"interval_seconds":{"type":"integer","minimum":3600,"maximum":604800,"default":86400}},"required":["plan"],"additionalProperties":false}}}},"responses":{"201":{"description":"Project plus one-time access_key; store it locally."},"400":{"description":"invalid_request or invalid_report"},"429":{"description":"creation_rate_limit"},"503":{"description":"capacity_reached"}}}},"/projects/{id}":{"get":{"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"responses":{"200":{"description":"Private project or accepted runner report. Reports remain attributed to the project runner."},"400":{"description":"invalid_request or invalid_report"},"404":{"description":"project_unavailable"},"409":{"description":"run_id_conflict"},"413":{"description":"request_too_large"}}},"patch":{"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paused":{"type":"boolean"},"interval_seconds":{"type":"integer","minimum":3600,"maximum":604800},"acknowledge_catalog":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Private project or accepted runner report. Reports remain attributed to the project runner."},"400":{"description":"invalid_request or invalid_report"},"404":{"description":"project_unavailable"},"409":{"description":"run_id_conflict"},"413":{"description":"request_too_large"}}},"delete":{"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"responses":{"204":{"description":"Project, measurements and events deleted."},"404":{"description":"project_unavailable"}}}},"/recover":{"post":{"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$"},"recovery_key":{"type":"string","minLength":43,"maxLength":43}},"required":["id","recovery_key"],"additionalProperties":false}}}},"responses":{"200":{"description":"Private project or accepted runner report. Reports remain attributed to the project runner."},"400":{"description":"invalid_request or invalid_report"},"404":{"description":"project_unavailable"},"409":{"description":"run_id_conflict"},"413":{"description":"request_too_large"}}}},"/projects/{id}/recovery":{"post":{"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Private project or accepted runner report. Reports remain attributed to the project runner."},"400":{"description":"invalid_request or invalid_report"},"404":{"description":"project_unavailable"},"409":{"description":"run_id_conflict"},"413":{"description":"request_too_large"}}}},"/projects/{id}/notifications":{"get":{"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"responses":{"200":{"description":"Private project or accepted runner report. Reports remain attributed to the project runner."},"400":{"description":"invalid_request or invalid_report"},"404":{"description":"project_unavailable"},"409":{"description":"run_id_conflict"},"413":{"description":"request_too_large"}}},"put":{"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"Private project or accepted runner report. Reports remain attributed to the project runner."},"400":{"description":"invalid_request or invalid_report"},"404":{"description":"project_unavailable"},"409":{"description":"run_id_conflict"},"413":{"description":"request_too_large"}}}},"/projects/{id}/export":{"get":{"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"responses":{"200":{"description":"Private project or accepted runner report. Reports remain attributed to the project runner."},"400":{"description":"invalid_request or invalid_report"},"404":{"description":"project_unavailable"},"409":{"description":"run_id_conflict"},"413":{"description":"request_too_large"}}}},"/projects/{id}/measurements":{"post":{"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string","const":"tracevero-run/1"},"run_id":{"type":"string","format":"uuid"},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":"string","format":"date-time"},"mode":{"type":"string","enum":["provider_test_account","protocol_fixture"]},"scenario":{"type":"string","enum":["mail-file-table","file-table-migration"]},"providers":{"type":"array","items":{"type":"string","enum":["google","microsoft"]},"minItems":1,"maxItems":2},"runner_version":{"type":"string","const":"2026-09-07.1"},"status":{"type":"string","enum":["passed","failed","blocked","not_measured"]},"checks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["mail.fixture.create","mail.search","attachment.read","attachment.bytes.match","invoice.extract","invoice.amount.match","file.upload","file.readback","table.create","table.write","table.readback","migration.file.copy","migration.file.readback","migration.table.create","migration.table.copy","migration.table.readback","migration.retry.same_file","migration.retry.same_table","migration.retry.rows","migration.retry.no_extra_rows","migration.source.unchanged","cleanup.google","cleanup.microsoft","credentials.google","credentials.microsoft"]},"status":{"type":"string","enum":["passed","failed","blocked","not_measured"]},"duration_ms":{"type":"integer","minimum":0,"maximum":3600000},"error_code":{"type":"string","enum":["http_error","permission_denied","rate_limited","timeout","invalid_response","assertion_failed","credentials_missing","cleanup_failed","uncertain_write","configuration_invalid"]},"http_status":{"type":"integer","minimum":100,"maximum":599}},"required":["name","status","duration_ms"],"additionalProperties":false},"minItems":1,"maxItems":60},"cleanup":{"type":"string","enum":["complete","incomplete","not_needed"]},"assertion_version":{"type":"string","const":"invoice-fixture/1"}},"required":["format","run_id","started_at","finished_at","mode","scenario","providers","runner_version","status","checks","cleanup","assertion_version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Private project or accepted runner report. Reports remain attributed to the project runner."},"400":{"description":"invalid_request or invalid_report"},"404":{"description":"project_unavailable"},"409":{"description":"run_id_conflict"},"413":{"description":"request_too_large"}}}}}}