Skip to content

Commit a958d57

Browse files
committed
feat: honeytoken (canary) relations with in-band trip enforcement (#1206)
Synced from sferarc/pgbeam@b69b69f
1 parent c47344d commit a958d57

12 files changed

Lines changed: 639 additions & 0 deletions

src/generated/describe-map.gen.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ export const describeByOperationId: Record<string, DescribeEndpoint> = {
6767
"deleteCustomDomain": {"operationId":"deleteCustomDomain","method":"DELETE","path":"/v1/projects/{project_id}/domains/{domain_id}","summary":"Delete a custom domain","description":"Removes a custom domain from the project and revokes its TLS certificate.","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."},{"name":"domain_id","in":"path","required":true,"type":"string","description":"Unique custom domain identifier (prefixed, e.g. dom_xxx)."}],"requestBodyType":"","requestBodyRequired":false,"responseType":"","responseStatus":"204"},
6868
"verifyCustomDomain": {"operationId":"verifyCustomDomain","method":"POST","path":"/v1/projects/{project_id}/domains/{domain_id}/verify","summary":"Verify custom domain DNS","description":"Checks DNS TXT record to verify domain ownership. Updates domain status on success. Requires a Scale or Enterprise plan.","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."},{"name":"domain_id","in":"path","required":true,"type":"string","description":"Unique custom domain identifier (prefixed, e.g. dom_xxx)."}],"requestBodyType":"","requestBodyRequired":false,"responseType":"{ domain?: { created_at: string; dns_instructions?: { acme_cname_host?: string; acme_cname_target?: string; cname_host?: string; cname_target?: string; txt_host?: string; txt_value?: string }; dns_verification_token: string; domain: string; id: string; project_id: string; tls_cert_expiry?: string; updated_at: string; verified: boolean; verified_at?: string }; error?: string; verified: boolean }","responseStatus":"200"},
6969
"getHealth": {"operationId":"getHealth","method":"GET","path":"/v1/health","summary":"Health check","description":"Returns the health status of the API server.","parameters":[],"requestBodyType":"","requestBodyRequired":false,"responseType":"{ image_sha: string; status: \"ok\" | \"degraded\"; timestamp?: string; version: string }","responseStatus":"200"},
70+
"listHoneytokens": {"operationId":"listHoneytokens","method":"GET","path":"/v1/projects/{project_id}/honeytokens","summary":"List honeytokens","description":"Lists the project's honeytokens.","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."},{"name":"page_size","in":"query","required":false,"type":"number","description":"Maximum number of items to return (1-100, default 20)."},{"name":"page_token","in":"query","required":false,"type":"string","description":"Opaque token for cursor-based pagination."}],"requestBodyType":"","requestBodyRequired":false,"responseType":"{ honeytokens: ({ action: \"audit_only\" | \"kill\"; created_at: string; id: string; project_id: string; relation_name: string; schema_name?: string; updated_at: string })[]; next_page_token?: string }","responseStatus":"200"},
71+
"createHoneytoken": {"operationId":"createHoneytoken","method":"POST","path":"/v1/projects/{project_id}/honeytokens","summary":"Register a honeytoken","description":"Registers a decoy (canary) relation for the project. Any agent statement\nthat references it is blocked and recorded as a canary_tripped audit event.\n","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."}],"requestBodyType":"{ action: \"audit_only\" | \"kill\"; relation_name: string; schema_name?: string }","requestBodyRequired":true,"responseType":"{ action: \"audit_only\" | \"kill\"; created_at: string; id: string; project_id: string; relation_name: string; schema_name?: string; updated_at: string }","responseStatus":"201"},
72+
"getHoneytoken": {"operationId":"getHoneytoken","method":"GET","path":"/v1/projects/{project_id}/honeytokens/{honeytoken_id}","summary":"Get a honeytoken","description":"Returns a single honeytoken by ID.","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."},{"name":"honeytoken_id","in":"path","required":true,"type":"string","description":"Unique honeytoken identifier (prefixed, e.g. hnt_xxx)."}],"requestBodyType":"","requestBodyRequired":false,"responseType":"{ action: \"audit_only\" | \"kill\"; created_at: string; id: string; project_id: string; relation_name: string; schema_name?: string; updated_at: string }","responseStatus":"200"},
73+
"updateHoneytoken": {"operationId":"updateHoneytoken","method":"PUT","path":"/v1/projects/{project_id}/honeytokens/{honeytoken_id}","summary":"Update a honeytoken","description":"Updates a honeytoken's relation or action.","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."},{"name":"honeytoken_id","in":"path","required":true,"type":"string","description":"Unique honeytoken identifier (prefixed, e.g. hnt_xxx)."}],"requestBodyType":"{ action: \"audit_only\" | \"kill\"; relation_name: string; schema_name?: string }","requestBodyRequired":true,"responseType":"{ action: \"audit_only\" | \"kill\"; created_at: string; id: string; project_id: string; relation_name: string; schema_name?: string; updated_at: string }","responseStatus":"200"},
74+
"deleteHoneytoken": {"operationId":"deleteHoneytoken","method":"DELETE","path":"/v1/projects/{project_id}/honeytokens/{honeytoken_id}","summary":"Delete a honeytoken","description":"Removes a honeytoken from the project.","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."},{"name":"honeytoken_id","in":"path","required":true,"type":"string","description":"Unique honeytoken identifier (prefixed, e.g. hnt_xxx)."}],"requestBodyType":"","requestBodyRequired":false,"responseType":"","responseStatus":"204"},
7075
"getProjectInsights": {"operationId":"getProjectInsights","method":"GET","path":"/v1/projects/{project_id}/insights","summary":"Get query insights for a project","description":"Returns aggregated query-level analytics for a project including top queries\nby count, cache hit/miss summary, and latency statistics.\n","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."},{"name":"range","in":"query","required":false,"type":"\"1h\" | \"6h\" | \"24h\" | \"7d\"","description":"Time range to query. Defaults to 24h."},{"name":"limit","in":"query","required":false,"type":"number","description":"Maximum number of top queries to return (1-100)."}],"requestBodyType":"","requestBodyRequired":false,"responseType":"{ cache: { hit_rate: number; total_hits: number; total_misses: number }; latency: { avg_ms: number; p99_ms: number }; queries: ({ avg_latency_ms: number; p99_latency_ms: number; query_hash: string; query_pattern: string; total_cache_hits: number; total_cache_misses: number; total_count: number })[] }","responseStatus":"200"},
7176
"lintMigration": {"operationId":"lintMigration","method":"POST","path":"/v1/projects/{project_id}/migrations:lint","summary":"Lint a migration","description":"Analyzes a migration script for unsafe schema changes and returns findings.","parameters":[{"name":"project_id","in":"path","required":true,"type":"string","description":"Unique project identifier (prefixed, e.g. prj_xxx)."}],"requestBodyType":"{ database_id?: string; sql: string }","requestBodyRequired":true,"responseType":"{ findings: ({ hint?: string; message: string; rule: string; severity: \"info\" | \"warning\" | \"error\"; statement?: string })[]; safe: boolean }","responseStatus":"200"},
7277
"getOnboardingProgress": {"operationId":"getOnboardingProgress","method":"GET","path":"/v1/organizations/{org_id}/onboarding","summary":"Get onboarding progress","description":"Returns the onboarding checklist progress for an organization.","parameters":[{"name":"org_id","in":"path","required":true,"type":"string","description":"Unique organization identifier."}],"requestBodyType":"","requestBodyRequired":false,"responseType":"{ agent_credential_created: boolean; completed: boolean; completed_at?: string; connection_string_copied: boolean; connection_tested: boolean; database_added: boolean; dismissed: boolean; first_query_run: boolean; org_created: boolean; organization_id: string; project_created: boolean; steps_completed: number; steps_total: number }","responseStatus":"200"},

0 commit comments

Comments
 (0)