bitcain docs

Analytics & Audit

Analytics & Audit

Event tracking, audit logging, API usage, health checks, and webhook delivery.

27 tables in this group.

analytics_events

Partitioned table for analytics events - monthly partitions by created_at

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
event_namevarcharNo
categoryvarcharNo'user_action'::character varying
priorityvarcharNo'medium'::character varying
propertiesjsonbYes'{}'::jsonb
timestamptimestamptzNonow()
session_idvarcharYes
page_urlvarcharYes
referrervarcharYes
user_agentvarcharYes
user_iduuidYes
client_idvarcharYes
environmentvarcharNo'development'::character varying
created_attimestamptzNonow()

RLS Policies:

  • Users can insert analytics events — INSERT for {public}
  • Users can view own analytics events — SELECT for {public}

audit_logs

ColumnTypeNullableDefault
iduuidNouuid_generate_v4()
user_iduuidNo
actionvarchar(100)No
resource_typevarchar(100)Yes
resource_idvarchar(255)Yes
severityvarchar(20)No'info'::character varying
statusvarchar(20)No'success'::character varying
ip_addressinetNo
user_agenttextYes
request_iduuidYes
session_iduuidYes
geo_countryvarchar(2)Yes
geo_cityvarchar(100)Yes
metadatajsonbYes'{}'::jsonb
changesjsonbYes
error_messagetextYes
created_attimestamptzNonow()

RLS Policies:

  • Service role can insert audit logs — INSERT for {public}
  • rls_audit_logs_select — SELECT for {public}

Indexes:

  • audit_logs_pkey
  • idx_audit_logs_user_created
  • idx_audit_logs_user_id

auth_audit_log

Comprehensive authentication and authorization audit trail

ColumnTypeNullableDefault
idint8No
user_iduuidYes
event_typetextNo
event_statustextNo'success'::text
ip_addresstextNo
user_agenttextYes
request_pathtextYes
request_methodtextYes
detailsjsonbYes'{}'::jsonb
error_messagetextYes
flagged_as_suspiciousboolNofalse
risk_scoreint4Yes0
country_codetextYes
citytextYes
created_attimestamptzNonow()

RLS Policies:

  • Admins or users can view audit logs — SELECT for {public}
  • Auth admin can insert audit logs — INSERT for {supabase_auth_admin}

Indexes:

  • auth_audit_log_pkey
  • idx_auth_audit_log_user_event

admin_audit_log

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
actiontextNo
actor_iduuidYes
actor_emailtextYes
target_typetextYes
target_idtextYes
detailsjsonbYes'{}'::jsonb
ip_addressinetYes
user_agenttextYes
created_attimestamptzNonow()

RLS Policies:

  • Admins can read audit logs — SELECT for {authenticated}
  • Service role can insert audit logs — INSERT for {service_role}
  • Service role can read audit logs — SELECT for {service_role}

Indexes:

  • admin_audit_log_pkey
  • idx_admin_audit_log_action
  • idx_admin_audit_log_actor_id
  • idx_admin_audit_log_created_at

api_usage_log

ColumnTypeNullableDefault
iduuidNouuid_generate_v4()
user_iduuidNo
resourcevarchar(255)No
actionvarchar(255)No
metadatajsonbYes
response_time_msnumericYes
status_codeint4Yes
environmentvarchar(50)Yes'staging'::character varying
created_attimestamptzYesnow()

RLS Policies:

  • Admins can manage usage log — ALL for {public}

Indexes:

  • api_usage_log_pkey
  • idx_api_usage_log_user_id

supabase_audit_logs

ColumnTypeNullableDefault
iduuidNo
user_iduuidNo
operationvarchar(50)No
table_namevarchar(100)Yes
record_iduuidYes
old_valuesjsonYes
new_valuesjsonYes
changed_fieldsjsonYes
ip_addressvarchar(45)Yes
user_agentvarchar(500)Yes
session_iduuidYes
audit_metadatajsonYes
severityvarchar(20)Yes
created_attimestampNo

RLS Policies:

  • supabase_audit_logs_delete_own — DELETE for {public}
  • supabase_audit_logs_insert_own — INSERT for {public}
  • supabase_audit_logs_select_own — SELECT for {public}
  • supabase_audit_logs_update_own — UPDATE for {public}

Indexes:

  • ix_supabase_audit_logs_created_at
  • ix_supabase_audit_logs_operation
  • ix_supabase_audit_logs_user_id
  • supabase_audit_logs_pkey

api_health_checks

ColumnTypeNullableDefault
iduuidNouuid_generate_v4()
created_attimestamptzYesnow()
servicetextNo
statusboolNo
latency_msfloat4No
errortextYes

RLS Policies:

  • Authenticated users can view health checks — SELECT for {authenticated}

Indexes:

  • api_health_checks_pkey

service_health_checks

Health check records. Should be pruned regularly (recommended: keep only 7 days).

ColumnTypeNullableDefault
iduuidNouuid_generate_v4()
service_namevarchar(255)No
platformvarchar(100)No
statusvarchar(50)No
response_time_msnumericYes
status_codeint4Yes
error_messagetextYes
environmentvarchar(50)Yes'staging'::character varying
checked_attimestamptzYesnow()

RLS Policies:

  • Admins can manage health checks — ALL for {public}

Indexes:

  • service_health_checks_pkey

system_health_summary

System health summary. Should be pruned regularly (recommended: keep only 7 days).

ColumnTypeNullableDefault
iduuidNouuid_generate_v4()
overall_statusvarchar(50)No
healthy_countint4No0
degraded_countint4No0
unhealthy_countint4No0
total_servicesint4No0
critical_services_healthyboolYestrue
environmentvarchar(50)Yes'staging'::character varying
recorded_attimestamptzYesnow()

RLS Policies:

  • Admins can manage health summary — ALL for {public}

Indexes:

  • system_health_summary_pkey

webhook_logs

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
endpoint_nametextNo
event_typetextNo
payloadjsonbNo
response_statusint4Yes
response_bodytextYes
successboolYes
error_messagetextYes
retry_countint4Yes0
created_attimestamptzYesnow()

RLS Policies:

  • Service role can manage all webhook logs — ALL for {service_role}

Indexes:

  • idx_webhook_logs_created
  • idx_webhook_logs_failed
  • webhook_logs_pkey

webhook_endpoints

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
nametextNo
urltextNo
secret_keytextYes
enabledboolYestrue
event_types_textYes'{}'::text[]
headersjsonbYes'{}'::jsonb
retry_countint4Yes3
timeout_msint4Yes5000
created_attimestamptzYesnow()
updated_attimestamptzYesnow()

RLS Policies:

  • Service role can manage all webhook endpoints — ALL for {service_role}

Indexes:

  • webhook_endpoints_name_key
  • webhook_endpoints_pkey

webhook_events

Logs all incoming webhook events from external services

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
integration_typevarchar(50)No
event_typevarchar(100)No
payloadjsonbNo
signaturevarchar(255)Yes
processedboolYesfalse
processing_errortextYes
received_attimestamptzYesnow()
processed_attimestamptzYes
idempotency_keyvarchar(255)Yes
created_attimestamptzYesnow()

RLS Policies:

  • Service role can manage all webhook events — ALL for {service_role}

Indexes:

  • idx_webhook_events_idempotency
  • idx_webhook_events_processed
  • idx_webhook_events_type
  • webhook_events_idempotency_key_key
  • webhook_events_pkey

sentry_webhook_logs

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
actiontextNo
sentry_issue_idtextYes
sentry_projecttextYes
processedboolNofalse
linear_issue_idtextYes
error_messagetextYes
successboolYes
detailsjsonbYes
payloadjsonbYes
created_attimestamptzNonow()

RLS Policies:

  • authenticated_read_sentry_logs — SELECT for {authenticated}
  • service_role_full_access_sentry_logs — ALL for {service_role}

Indexes:

  • idx_sentry_webhook_logs_created
  • idx_sentry_webhook_logs_unprocessed
  • sentry_webhook_logs_pkey

outbox_events

Transactional outbox for reliable event publishing (ARCH-003)

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
aggregate_typevarchar(50)No
aggregate_idvarchar(100)No
event_typevarchar(100)No
event_versionvarchar(10)Yes'1.0'::character varying
payloadjsonbNo
payload_hashvarchar(64)Yes
causation_iduuidYes
correlation_iduuidYes
user_iduuidYes
statusvarchar(20)No'pending'::character varying
created_attimestamptzNonow()
published_attimestamptzYes
last_attempted_attimestamptzYes
retry_countint4No0
max_retriesint4No5
next_retry_attimestamptzYes
last_errortextYes
error_detailsjsonbYes
sequence_numberint8Nonextval('outbox_events_sequence_number_seq'::regclass)
partition_keyvarchar(100)Yes

RLS Policies:

  • Service role full access to outbox_events — ALL for {service_role}
  • Users can view own outbox events — SELECT for {public}

Indexes:

  • idx_outbox_aggregate
  • idx_outbox_correlation
  • idx_outbox_events_pending_sequence
  • idx_outbox_next_retry
  • idx_outbox_partition_key
  • idx_outbox_payload_hash
  • idx_outbox_status_created
  • idx_outbox_user_id
  • outbox_events_pkey

outbox_dead_letters

Dead letter queue for events that failed after max retries

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
original_event_iduuidNo
aggregate_typevarchar(50)No
aggregate_idvarchar(100)No
event_typevarchar(100)No
payloadjsonbNo
failed_attimestamptzNonow()
retry_countint4No
last_errortextNo
error_detailsjsonbYes
statusvarchar(20)No'unresolved'::character varying
resolved_attimestamptzYes
resolved_byvarchar(100)Yes
resolution_notestextYes
created_attimestamptzNonow()

RLS Policies:

  • Service role full access to outbox_dead_letters — ALL for {service_role}

Indexes:

  • idx_dead_letters_aggregate
  • idx_dead_letters_event_type
  • idx_dead_letters_status
  • idx_outbox_dead_letters_original_event_id
  • outbox_dead_letters_pkey

outbox_metrics

Metrics tracking for outbox relay performance

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
metric_typevarchar(50)No
metric_valuenumericNo
event_typevarchar(100)Yes
aggregate_typevarchar(50)Yes
processing_time_msint4Yes
batch_sizeint4Yes
recorded_attimestamptzNonow()
metadatajsonbYes

RLS Policies:

  • Service role full access to outbox_metrics — ALL for {service_role}

Indexes:

  • idx_outbox_metrics_type_time
  • outbox_metrics_pkey

analytics_events_y2025m12

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
event_namevarcharNo
categoryvarcharNo'user_action'::character varying
priorityvarcharNo'medium'::character varying
propertiesjsonbYes'{}'::jsonb
timestamptimestamptzNonow()
session_idvarcharYes
page_urlvarcharYes
referrervarcharYes
user_agentvarcharYes
user_iduuidYes
client_idvarcharYes
environmentvarcharNo'development'::character varying
created_attimestamptzNonow()

RLS Policies:

  • Service role can insert analytics events — INSERT for {public}
  • Users can view own analytics events — SELECT for {public}

Indexes:

  • analytics_events_y2025m12_category_created_at_idx
  • analytics_events_y2025m12_event_name_created_at_idx
  • analytics_events_y2025m12_pkey
  • analytics_events_y2025m12_user_id_created_at_idx

analytics_events_y2026m01

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
event_namevarcharNo
categoryvarcharNo'user_action'::character varying
priorityvarcharNo'medium'::character varying
propertiesjsonbYes'{}'::jsonb
timestamptimestamptzNonow()
session_idvarcharYes
page_urlvarcharYes
referrervarcharYes
user_agentvarcharYes
user_iduuidYes
client_idvarcharYes
environmentvarcharNo'development'::character varying
created_attimestamptzNonow()

RLS Policies:

  • Service role can insert analytics events — INSERT for {public}
  • Users can view own analytics events — SELECT for {public}

Indexes:

  • analytics_events_y2026m01_category_created_at_idx
  • analytics_events_y2026m01_event_name_created_at_idx
  • analytics_events_y2026m01_pkey
  • analytics_events_y2026m01_user_id_created_at_idx

analytics_events_y2026m02

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
event_namevarcharNo
categoryvarcharNo'user_action'::character varying
priorityvarcharNo'medium'::character varying
propertiesjsonbYes'{}'::jsonb
timestamptimestamptzNonow()
session_idvarcharYes
page_urlvarcharYes
referrervarcharYes
user_agentvarcharYes
user_iduuidYes
client_idvarcharYes
environmentvarcharNo'development'::character varying
created_attimestamptzNonow()

RLS Policies:

  • Service role can insert analytics events — INSERT for {public}
  • Users can view own analytics events — SELECT for {public}

Indexes:

  • analytics_events_y2026m02_category_created_at_idx
  • analytics_events_y2026m02_event_name_created_at_idx
  • analytics_events_y2026m02_pkey
  • analytics_events_y2026m02_user_id_created_at_idx

analytics_events_y2026m03

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
event_namevarcharNo
categoryvarcharNo'user_action'::character varying
priorityvarcharNo'medium'::character varying
propertiesjsonbYes'{}'::jsonb
timestamptimestamptzNonow()
session_idvarcharYes
page_urlvarcharYes
referrervarcharYes
user_agentvarcharYes
user_iduuidYes
client_idvarcharYes
environmentvarcharNo'development'::character varying
created_attimestamptzNonow()

RLS Policies:

  • Service role can insert analytics events — INSERT for {public}
  • Users can view own analytics events — SELECT for {public}

Indexes:

  • analytics_events_y2026m03_category_created_at_idx
  • analytics_events_y2026m03_event_name_created_at_idx
  • analytics_events_y2026m03_pkey
  • analytics_events_y2026m03_user_id_created_at_idx

analytics_events_y2026m04

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
event_namevarcharNo
categoryvarcharNo'user_action'::character varying
priorityvarcharNo'medium'::character varying
propertiesjsonbYes'{}'::jsonb
timestamptimestamptzNonow()
session_idvarcharYes
page_urlvarcharYes
referrervarcharYes
user_agentvarcharYes
user_iduuidYes
client_idvarcharYes
environmentvarcharNo'development'::character varying
created_attimestamptzNonow()

RLS Policies:

  • Service role can insert analytics events — INSERT for {public}
  • Users can view own analytics events — SELECT for {public}

Indexes:

  • analytics_events_y2026m04_category_created_at_idx
  • analytics_events_y2026m04_event_name_created_at_idx
  • analytics_events_y2026m04_pkey
  • analytics_events_y2026m04_user_id_created_at_idx

analytics_events_y2026m05

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
event_namevarcharNo
categoryvarcharNo'user_action'::character varying
priorityvarcharNo'medium'::character varying
propertiesjsonbYes'{}'::jsonb
timestamptimestamptzNonow()
session_idvarcharYes
page_urlvarcharYes
referrervarcharYes
user_agentvarcharYes
user_iduuidYes
client_idvarcharYes
environmentvarcharNo'development'::character varying
created_attimestamptzNonow()

RLS Policies:

  • Service role can insert analytics events — INSERT for {public}
  • Users can view own analytics events — SELECT for {public}

Indexes:

  • analytics_events_y2026m05_category_created_at_idx
  • analytics_events_y2026m05_event_name_created_at_idx
  • analytics_events_y2026m05_pkey
  • analytics_events_y2026m05_user_id_created_at_idx

analytics_events_y2026m06

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
event_namevarcharNo
categoryvarcharNo'user_action'::character varying
priorityvarcharNo'medium'::character varying
propertiesjsonbYes'{}'::jsonb
timestamptimestamptzNonow()
session_idvarcharYes
page_urlvarcharYes
referrervarcharYes
user_agentvarcharYes
user_iduuidYes
client_idvarcharYes
environmentvarcharNo'development'::character varying
created_attimestamptzNonow()

RLS Policies:

  • Service role can insert analytics events — INSERT for {public}
  • Users can view own analytics events — SELECT for {public}

Indexes:

  • analytics_events_y2026m06_category_created_at_idx
  • analytics_events_y2026m06_event_name_created_at_idx
  • analytics_events_y2026m06_pkey
  • analytics_events_y2026m06_user_id_created_at_idx

sync_operations

Tracks bidirectional synchronization between Linear and other tools

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
user_iduuidNo
source_integrationvarchar(50)No
target_integrationvarchar(50)No
operation_typevarchar(50)No
source_entity_idvarchar(255)Yes
target_entity_idvarchar(255)Yes
entity_typevarchar(50)Yes
statusvarchar(20)Yes'pending'::character varying
retry_countint4Yes0
error_messagetextYes
metadatajsonbYes'{}'::jsonb
created_attimestamptzYesnow()
completed_attimestamptzYes

RLS Policies:

  • Service role can manage all sync operations — ALL for {service_role}
  • Users can view their own sync operations — SELECT for {public}

Indexes:

  • idx_sync_operations_entities
  • idx_sync_operations_status
  • idx_sync_operations_user_id
  • sync_operations_pkey

service_config

Stores service-level configuration data (admin access only)

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
service_nametextNo
config_datajsonbYes'{}'::jsonb
enabledboolYestrue
created_attimestamptzNonow()
updated_attimestamptzNonow()

RLS Policies:

  • Admins can create service config — INSERT for {public}
  • Admins can delete service config — DELETE for {public}
  • Admins can update service config — UPDATE for {public}
  • Admins can view service config — SELECT for {public}

Indexes:

  • service_config_pkey
  • service_config_service_name_key

migrations

ColumnTypeNullableDefault
iduuidNo
versionvarchar(50)No
namevarchar(200)No
descriptiontextYes
up_sqltextNo
down_sqltextYes
statusvarchar(20)Yes
executed_attimestampYes
execution_time_msint4Yes
rolled_back_attimestampYes
dependenciesjsonYes
error_messagetextYes
retry_countint4Yes
checksumvarchar(64)Yes
authorvarchar(100)Yes
tagsjsonYes
created_attimestampNo
updated_attimestampYes

RLS Policies:

  • migrations_service_all — ALL for {public}

Indexes:

  • idx_migration_executed
  • idx_migration_status_version
  • ix_migrations_status
  • ix_migrations_version
  • migrations_pkey

helpdesk_tickets

User account administration requests handled by the helpdesk agent

ColumnTypeNullableDefault
iduuidNogen_random_uuid()
ticket_numberint4Nonextval('helpdesk_tickets_ticket_number_seq'::regclass)
user_iduuidYes
user_emailvarchar(255)No
issue_typetextNo
titletextNo
descriptiontextYes
statustextNo'open'::text
prioritytextNo'medium'::text
requires_approvalboolNofalse
approval_iduuidYes
approval_statustextYes
approved_bytextYes
approved_attimestamptzYes
sourcetextNo
source_idtextYes
slack_thread_tstextYes
linear_issue_idtextYes
resolution_summarytextYes
resolved_bytextYes
resolved_attimestamptzYes
created_attimestamptzNonow()
updated_attimestamptzNonow()

RLS Policies:

  • Service role full access on helpdesk_tickets — ALL for {service_role}
  • Users can view own helpdesk tickets — SELECT for {authenticated}

Indexes:

  • helpdesk_tickets_pkey
  • helpdesk_tickets_status_idx
  • helpdesk_tickets_ticket_number_key
  • helpdesk_tickets_user_idx

On this page