Skip to content
Open
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
551ddf1
ref(api): deprecate POST update-publication endpoint
ttatsato May 15, 2026
0c4eaeb
fix(api): use RFC 9745 sf-date for Deprecation header
ttatsato May 15, 2026
aeaf2b8
test(clickhouse): use wait_for_events_count for streaming tests (#739)
jmqd May 13, 2026
fbca0dd
ref(core): Improve replica identity handling (#740)
iambriccardo May 13, 2026
7128d17
Add clickhouse client- and server-side timeouts (#741)
jmqd May 15, 2026
ea23591
experimental(ducklake): add support for external maintenances (#721)
bnjjj May 15, 2026
7f5e9d8
test(failpoints): remove SEND_STATUS_UPDATE_FP between restart runs (…
jmqd May 15, 2026
9fc7614
feat(examples): feature-gate example destinations (#742)
farazdagi May 15, 2026
26e27c2
feat(core): Implement new durable progress (#733)
iambriccardo May 18, 2026
610a364
feat(core): Clean up replication progress (#746)
iambriccardo May 18, 2026
94cfff6
ci: gate integration tests behind environment approval for fork PRs (…
farazdagi May 19, 2026
e2cc9fb
ci: gracefully ignore BigQuery tests on fork PRs (#752)
farazdagi May 20, 2026
baf8105
fix(bigquery): add missing credential check (#753)
farazdagi May 20, 2026
1b34236
ref(etl-telemetry): capitalize TracingError messages (#749)
ttatsato May 20, 2026
bac3eca
refactor: clean maintenances and make maintenances more generic, (#745)
bnjjj May 20, 2026
45b07ba
Add ClickHouse ReplacingMergeTree support (#750)
jmqd May 20, 2026
ae9c737
style(tests): drop 'then' from WHEN comments to avoid GIVEN/WHEN/THEN…
jmqd May 20, 2026
af208ac
test(clickhouse): add large-row JSONB pipeline tests (#754)
jmqd May 20, 2026
77cafc6
fix(api): do not create k8s labels bigger than 63 characters (#755)
bnjjj May 20, 2026
1ac02fa
feat(ducklake): add pause metrics for external maintenances (#757)
bnjjj May 20, 2026
38a3fde
fix(ducklake): improve expireSnapshot maintenance (#759)
bnjjj May 21, 2026
d9b4bbc
feat(destinations): add Snowflake destination (#728)
farazdagi May 21, 2026
2b6c747
fix(core): Improve reset semantics for the table (#760)
iambriccardo May 22, 2026
46463d4
fix(core): Fix Snowflake drop impl and ci (#761)
iambriccardo May 22, 2026
bb09675
feat(etl-api): Add publication endpoints (#748)
ttatsato May 22, 2026
71e78fa
ref(api): Remove usage of 'only' (#763)
iambriccardo May 22, 2026
04240fc
feat(xtask): add fmt, check, fix, and msrv commands (#764)
farazdagi May 22, 2026
85b22b1
ref(core): Make store and destination more ergonomic (#765)
iambriccardo May 22, 2026
b92ebc1
refactor: migrate to smaller example for Snowflake (#767)
farazdagi May 22, 2026
6b6c39f
Merge branch 'main' into deprecate-update-publication-post
ttatsato May 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions crates/etl-api/src/routes/sources/publications.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,12 @@ pub(crate) async fn read_publication(
}

#[utoipa::path(
summary = "Update a publication",
description = "Replaces the publication's table list on the given source.",
summary = "Update a publication (deprecated)",
description = "Replaces the publication's table list on the given source.\n\n\
**Deprecated**: This endpoint uses `POST` for full replacement, which is \
semantically misleading because the request appears additive but actually \
replaces the entire table list. A replacement is being designed. See \
https://github.com/supabase/etl/issues/459.",
tag = "Publications",
request_body = UpdatePublicationRequest,
params(
Expand Down Expand Up @@ -231,7 +235,16 @@ pub(crate) async fn update_publication(
let publication = Publication { name: publication_name, tables: publication.tables };
data::publications::update_publication(&publication, &source_pool).await?;

Ok(HttpResponse::Ok().finish())
// RFC 9745 §2.1 requires the Deprecation field to be an sf-date.
// The value is the Unix timestamp for 2026-05-15 00:00 UTC, the date
// this deprecation took effect.
Ok(HttpResponse::Ok()
.insert_header(("Deprecation", "@1778803200"))
.insert_header((
"Link",
"<https://github.com/supabase/etl/issues/459>; rel=\"deprecation\"",
))
.finish())
}

#[utoipa::path(
Expand Down