KuCoin GemPool (Launchpool) Snapshot Pipeline
SyncKuCoinLaunchpoolWorkflow собирает KuCoin GemPool (launchpool) через публичные API и пишет snapshots в TimescaleDB.
Endpoints
GET https://www.kucoin.com/_api/gem-staking-front/gempool/staking/campaign?lang=en_USGET https://www.kucoin.com/_api/gem-staking-front/gempool/staking/campaign/history?currentPage=<n>&pageSize=<m>&lang=en_USGET https://www.kucoin.com/_api/gem-staking-front/gempool/staking/campaign/details?earnToken=<CODE>&lang=en_US(detail/fallback)GET https://www.kucoin.com/_api/gem-staking-front/gempool/staking/overview?lang=en_US(summary)
Primary UI pages:
- https://www.kucoin.com/gempool
- https://www.kucoin.com/gempool/IMU
Ingestion
- входной SQL-контракт:
SELECT * FROM ingest_kucoin_launchpool_snapshot($1::jsonb) - projects upsert:
ON CONFLICT (snapshot_at, project_id) DO UPDATE - subpools upsert:
ON CONFLICT (snapshot_at, project_id, subpool_key) DO UPDATE - asset mapping:
project_asset_idиsubpool_asset_idчерезexchange_symbol_assets(exchange_id='kucoin') с fallback наexchange_assets*+exchange_asset_mappings+global_asset_networks- если mapping отсутствует/неоднозначен, строки сохраняются, а причина уходит в
fct_kucoin_launchpool_quarantine
Tables
fct_kucoin_launchpool_snapshotfct_kucoin_launchpool_subpool_snapshotfct_kucoin_launchpool_response_snapshotfct_kucoin_launchpool_quarantinefct_kucoin_launchpool_5min(continuous aggregate)fct_kucoin_launchpool_daily(continuous aggregate)
Access Denied policy
HTTP 403или challenge/access denied body -> typed errorkucoin_access_denied- это fatal ошибка: workflow run завершается
failed
Manual run
docker compose exec -T temporal temporal workflow start \
--address temporal:7233 --namespace default --task-queue default \
--type SyncKuCoinLaunchpoolWorkflow \
--workflow-id sync-kucoin-launchpool-manual-$(date +%s) \
--input '{"include_current":true,"include_history":true,"history_page_size":20,"max_history_pages":10}'
Request samples
docs/api/kucoin-gempool-requests.json