Categories
Branches (328)
- extract-raw-xml/agent-tooling/backend/tests/AGENTS.md
- extract-raw-xml/architecture/docs/ETL.md
- extract-raw-xml/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/index.md
- extract-raw-xml/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/s3-storage-e2e-test-plan.md
- extract-raw-xml/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/s3-storage-implementation-plan.md
- extract-raw-xml/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/s3-storage-proposal.md
- extract-raw-xml/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/s3-storage-streaming-implementation-plan.md
- extract-raw-xml/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/source-task.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/01-brink-extract-boundary.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/02-source-connection-and-tenant-binding.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/03-extract-schedule-and-dispatch-contract.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/04-ingestion-batch-and-checkpoint-contract.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/05-raw-capture-and-failure-packaging.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/06-endpoint-catalog-and-execution-policy.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/07-raw-to-load-normalization-seam.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/08-first-job-design-input.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/09-first-job-design-v1.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/10-foundation-summary.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/11-raw-to-load-job-design-v1.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/12-missing-relational-load-mappings.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/13-load-to-redshift-staging-job-design-v1.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/14-staging-to-curated-job-design-v1.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/15-end-to-end-pipeline-summary.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/index.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/adapter-architecture-poc-simple.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/adapter-architecture.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/facade-implementation-plan.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/facade-streaming-implementation-plan.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/facade-streaming-review-fix-plan.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/first-etl-job-proposal.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/index.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/integration-flow.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/poc-checklist.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/relational-load-staging-implementation-plan.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/source-task.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/staging-to-curated-mapping.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/technical-integration-notes.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/xml-to-parquet-implementation-plan.md
- extract-raw-xml/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/xml-to-parquet-proposal.md
- extract-raw-xml/etl/docs/features/ETL/index.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK0.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK1.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.1.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.2.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.3.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.4.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK3.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK4.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK5.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK6.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK7.md
- extract-raw-xml/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK8.md
- extract-raw-xml/research/temp/brink-pos-integration-research.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/customers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/index.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/inventory_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/kitchen_item_status_events.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/kitchen_orders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/kitchen_order_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/loyalty_customers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_catalog_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_hourly_sales.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_menu_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_modifiers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_orders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_order_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_tables.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_table_definitions.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_tenders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_transactions.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_transaction_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_transaction_tenders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_kitchen_get_order_bump_times.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_kitchen_get_order_item_bump_times.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_sales2_get_current_business_date.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_sales2_get_orders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_brands.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_destinations.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_employees.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_kitchen_queues.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_last_modified_time.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_menu.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_tables.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_taxes.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_day_parts.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_item_groups.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_modifier_codes.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_modifier_groups.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_registers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_revenue_centers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_sections.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_tenders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/index.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/customers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/index.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/inventory_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/kitchen_item_status_events.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/kitchen_orders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/kitchen_order_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/loyalty_customers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_catalog_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_hourly_sales.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_menu_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_modifiers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_orders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_order_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_tables.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_table_definitions.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_tenders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_transactions.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_transaction_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_transaction_tenders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/curated-model/todo.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/index.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_gnditem.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_gndsale.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_gndslsum.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_gndtndr.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_itm.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_mod.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_tab.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_tabdef.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_tdr.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/index.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/index.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/kds_customers.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/kds_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/kds_item_bumps.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/kds_orders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/index.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_inventory_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_wp_loyalty.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_wp_pos_items.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_wp_pos_orders.md
- extract-raw-xml/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_wp_pos_order_items.md
- feature-fleet-import/architecture/docs/curated-redshift-schema.md
- feature-fleet-import/etl/docs/features/ETL/fleet/fleet-s3-direct-import-operations.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/main.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/proposed-solution.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK0.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK1.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK2.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK3.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK4.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK5.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK6.md
- feature-fleet-import/implementation-specs/specs/ImportFromS3ToRedshift/TASK7.md
- kds_cdc_improvments/implementation-specs/specs/MonitorSpecsCuratedRedshiftRewrite/TASK.md
- kds_cdc_improvments/implementation-specs/specs/MonitorSpecsCuratedRedshiftRewrite/TASK1.1.md
- kds_cdc_improvments/implementation-specs/specs/MonitorSpecsCuratedRedshiftRewrite/TASK1.2.md
- kds_cdc_improvments/implementation-specs/specs/MonitorSpecsCuratedRedshiftRewrite/TASK2.1.md
- kds_cdc_improvments/implementation-specs/specs/MonitorSpecsCuratedRedshiftRewrite/TASK2.2.md
- kds_cdc_improvments/implementation-specs/specs/MonitorSpecsCuratedRedshiftRewrite/TASK3.1.md
- kds_cdc_improvments/implementation-specs/specs/MonitorSpecsCuratedRedshiftRewrite/TASK3.2.md
- kds_cdc_improvments/implementation-specs/specs/MonitorSpecsCuratedRedshiftRewrite/TASK4.1.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/customer-churn-risk.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/customer-profiles.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/daily-forecast.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/demand-drivers.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/forecast-demand.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/forgotten-items.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/identify-high-value-customers.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/identify-plowhorse-items.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/identify-star-items.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/incorporate-seasonality.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/inventory-levels.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/kitchen-performance.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/menu-item-profitability.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/monthly-forecast.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/optimal-pricing-adjustments.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/optimize-order-quantities.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/pricing-recommendations.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/seasonality-trends.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/segment-customers.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/segment-descriptions.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/waste-reduction.md
- kds_cdc_improvments/monitor-specs/backend/Kds.Ai.Data/MonitorSpecs/weekly-forecast.md
- life-cycle/agent-tooling/backend/tests/AGENTS.md
- life-cycle/architecture/docs/ETL.md
- life-cycle/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/index.md
- life-cycle/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/s3-storage-e2e-test-plan.md
- life-cycle/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/s3-storage-implementation-plan.md
- life-cycle/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/s3-storage-proposal.md
- life-cycle/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/s3-storage-streaming-implementation-plan.md
- life-cycle/etl/docs/features/ETL/epics/03-s3-landing-replay-and-failure-storage/source-task.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/01-brink-extract-boundary.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/02-source-connection-and-tenant-binding.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/03-extract-schedule-and-dispatch-contract.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/04-ingestion-batch-and-checkpoint-contract.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/05-raw-capture-and-failure-packaging.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/06-endpoint-catalog-and-execution-policy.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/07-raw-to-load-normalization-seam.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/08-first-job-design-input.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/09-first-job-design-v1.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/10-foundation-summary.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/11-raw-to-load-job-design-v1.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/12-missing-relational-load-mappings.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/13-load-to-redshift-staging-job-design-v1.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/14-staging-to-curated-job-design-v1.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/15-end-to-end-pipeline-summary.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/01-first-job-foundation/index.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/adapter-architecture-poc-simple.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/adapter-architecture.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/facade-implementation-plan.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/facade-streaming-implementation-plan.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/facade-streaming-review-fix-plan.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/first-etl-job-proposal.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/index.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/integration-flow.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/poc-checklist.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/relational-load-staging-implementation-plan.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/source-task.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/staging-to-curated-mapping.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/technical-integration-notes.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/xml-to-parquet-implementation-plan.md
- life-cycle/etl/docs/features/ETL/epics/06-source-adapter-brink-pos-api/xml-to-parquet-proposal.md
- life-cycle/etl/docs/features/ETL/index.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK0.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK1.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.1.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.2.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.3.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.4.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK2.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK3.1.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK3.2.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK3.3.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK3.4.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK3.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK4.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK5.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK6.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK7.md
- life-cycle/implementation-specs/specs/BrinkPosOrdersFirstEtlJob/TASK8.md
- life-cycle/research/temp/brink-pos-integration-research.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/customers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/index.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/inventory_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/kitchen_item_status_events.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/kitchen_orders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/kitchen_order_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/loyalty_customers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_catalog_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_hourly_sales.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_menu_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_modifiers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_orders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_order_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_tables.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_table_definitions.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_tenders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_transactions.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_transaction_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_transaction_tenders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_kitchen_get_order_bump_times.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_kitchen_get_order_item_bump_times.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_sales2_get_current_business_date.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_sales2_get_orders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_brands.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_destinations.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_employees.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_kitchen_queues.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_last_modified_time.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_menu.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_tables.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings2_get_taxes.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_day_parts.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_item_groups.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_modifier_codes.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_modifier_groups.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_registers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_revenue_centers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_sections.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/brink_settings_get_tenders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/brinkPos-staging-model/index.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/customers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/index.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/inventory_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/kitchen_item_status_events.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/kitchen_orders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/kitchen_order_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/loyalty_customers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_catalog_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_hourly_sales.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_menu_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_modifiers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_orders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_order_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_tables.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_table_definitions.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_tenders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_transactions.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_transaction_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/pos_transaction_tenders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/curated-model/todo.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/index.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_gnditem.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_gndsale.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_gndslsum.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_gndtndr.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_itm.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_mod.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_tab.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_tabdef.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/aloha_tdr.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-aloha-staging-model/index.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/index.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/kds_customers.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/kds_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/kds_item_bumps.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-kds-staging-model/kds_orders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/index.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_inventory_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_wp_loyalty.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_wp_pos_items.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_wp_pos_orders.md
- life-cycle/warehouse-model/docs/features/ETL/warehouse-data/logic-control-pos-staging-model/labpos_wp_pos_order_items.md
- tenat-admin/architecture/docs/features/tenant-admin-control-plane/api-contract.md
- tenat-admin/architecture/docs/features/tenant-admin-control-plane/data-model.md
- tenat-admin/architecture/docs/features/tenant-admin-control-plane/feature-proposal.md
- tenat-admin/architecture/docs/features/tenant-admin-control-plane/implementation-notes.md
- tenat-admin/architecture/docs/features/tenant-admin-control-plane/index.md
Source Adapter: Brink POS API
Related Documents
../../../../ETL.md- ETL architecture, metadata minimum, and S3 layout../../../../flows/etl-ingestion.md- ingestion flow and batch lifecycletechnical-integration-notes.md- transport, auth, retry, and checkpoint rulespoc-checklist.md- implementation checklist
Goal
Deliver a minimum viable Brink POS API pull adapter for one tenant-location that:
- pulls Brink SOAP data with conservative polling
- stores raw SOAP responses in S3
- loads source-shaped staging tables into the tenant warehouse
- populates the first curated tables already present in the warehouse bootstrap
- reuses the existing ETL batch and checkpoint model from
docs/ETL.md
Scope
In scope for this epic:
- read-only Brink integration over
Sales2.svc,Settings2.svc,Settings.svc, andKitchen.svc - one tenant-location PoC
- raw response capture in S3
- Brink-specific staging tables needed for the current curated bootstrap
staging -> curatedSQL for the first useful curated outputs- reuse of existing operational metadata instead of a new control plane
Out of scope for this epic:
- write operations through Brink APIs
- full Brink settings coverage
- labor, loyalty, inventory, and hourly sales integrations
- future-date order flows and deposit-specific publication
- production-grade replay or pull-attempt control plane
Document Boundary
This document defines the PoC data contract for the Brink adapter:
- what curated tables exist today
- which Brink operations we need
- how raw payloads should be stored
- which staging tables should exist
- which staging tables feed which curated tables
- what minimum metadata must be persisted
Detailed transport rules, token handling, retry limits, and checkpoint behavior stay in technical-integration-notes.md.
Current Curated Tables
Current tenant curated bootstrap in backend/Kds.Ai.Warehouse/Sql/Bootstrap/Tenant/Curated/060_create_curated_canonical_tables.sql contains these tables:
| Curated table | Current purpose | Brink PoC status |
|---|---|---|
curated.kitchen_item_status_events | kitchen item lifecycle events | target |
curated.kitchen_order_items | kitchen-facing order items | target |
curated.kitchen_orders | kitchen-facing order headers | target |
curated.pos_transaction_items | POS item transaction facts | target |
curated.pos_transactions | POS transaction headers | target |
curated.pos_hourly_sales | hourly sales aggregates | out of scope |
curated.pos_transaction_tenders | POS payment/tender facts | target |
curated.pos_tables | POS table lookup | target |
curated.pos_table_definitions | POS table hierarchy metadata | out of scope |
curated.pos_tenders | tender lookup | target |
curated.customers | customer master | out of scope for PoC |
curated.loyalty_customers | loyalty customer master | out of scope |
curated.pos_catalog_items | catalog item lookup | target |
curated.pos_modifiers | modifier group lookup | target |
curated.inventory_items | inventory master | out of scope |
curated.pos_menu_items | menu item lookup | optional |
curated.pos_order_items | order line convenience table | optional |
curated.pos_orders | order header convenience table | optional |
Brink Endpoint Plan
Primary Brink service endpoints:
https://{{server}}.brinkpos.net/Sales2.svchttps://{{server}}.brinkpos.net/Settings2.svchttps://{{server}}.brinkpos.net/Settings.svchttps://{{server}}.brinkpos.net/Kitchen.svc
Planned PoC operations:
| Service | Operation | What we get | Why we need it | Docs |
|---|---|---|---|---|
Sales2.svc | GetOrders | order headers, order items, modifiers, taxes, payments, payment details, destination/employee/table references, business totals, timestamps | main source for POS and kitchen transactional curated tables | https://brinkapiportal.parpos.com/sales2#GetOrders |
Sales2.svc | GetCurrentBusinessDate | current register business date | optional helper for aligning BusinessDate windows and daily pulls | https://brinkapiportal.parpos.com/sales2#GetCurrentBusinessDate |
Kitchen.svc | GetOrderBumpTimes | order-level bump events with queue and send timing | feeds kitchen order status/timing | https://brinkapiportal.parpos.com/kitchen#GetOrderBumpTimes |
Kitchen.svc | GetOrderItemBumpTimes | item-level bump/fire/send events with queue and order item id | feeds kitchen item status/timing | https://brinkapiportal.parpos.com/kitchen#GetOrderItemBumpTimes |
Settings2.svc | GetLastModifiedTime | last settings and employee modification timestamps | lightweight settings freshness checkpoint | https://brinkapiportal.parpos.com/settings2#GetLastModifiedTime |
Settings2.svc | GetItems | item master with price, tax, revenue center, modifier group links, kitchen name | feeds catalog and transactional enrichment | https://brinkapiportal.parpos.com/settings2#GetItems |
Settings2.svc | GetModifierGroups | modifier group headers and group item membership | feeds pos_modifiers and modifier enrichment | https://brinkapiportal.parpos.com/settings2#GetModifierGroups |
Settings2.svc | GetDestinations | destination lookup such as dine-in, takeout, delivery | enriches orders and transactions | https://brinkapiportal.parpos.com/settings2#GetDestinations |
Settings2.svc | GetTables | table lookup for table-service locations | feeds pos_tables | https://brinkapiportal.parpos.com/settings2#GetTables |
Settings2.svc | GetKitchenQueues | kitchen queue lookup | enriches bump events and kitchen projections | https://brinkapiportal.parpos.com/settings2#GetKitchenQueues |
Settings2.svc | GetTaxes | tax lookup and tax metadata | enriches item and order tax mappings | https://brinkapiportal.parpos.com/settings2#GetTaxes |
Settings2.svc | GetEmployees | employee lookup | enriches orders, transactions, and tenders | https://brinkapiportal.parpos.com/settings2#GetEmployees |
Settings.svc | GetTenders | tender lookup and tender configuration | feeds pos_tenders and payment enrichment | https://brinkapiportal.parpos.com/settings#GetTenders |
Implementation note:
Settings2.GetSettingsmay later consolidate some lookup pulls, but the PoC should prefer direct operations above because they map more clearly to raw files, staging tables, and checkpoints.
Proposed Raw S3 Files
Raw storage should stay 1:1 with the SOAP response body returned by each Brink call.
Recommended path shape under the ETL raw prefix:
raw/{tenant_id}/brink_pos/{yyyy}/{MM}/{dd}/{batch_id}/{stream}/
sales2_get_orders_{window_start}_{window_end}.xml
kitchen_get_order_bump_times_{window_start}_{window_end}.xml
kitchen_get_order_item_bump_times_{window_start}_{window_end}.xml
settings2_get_last_modified_time.xml
settings2_get_items.xml
settings2_get_modifier_groups.xml
settings2_get_destinations.xml
settings2_get_tables.xml
settings2_get_kitchen_queues.xml
settings2_get_taxes.xml
settings2_get_employees.xml
settings_get_tenders.xmlRules:
- one raw object per Brink call execution
- store the SOAP body exactly as returned by Brink
- do not mutate or normalize the raw XML before saving it
- keep request window values in the file name or adjacent object metadata
- never store
AccessTokenorLocationTokenin file content, metadata, or logs
Proposed Staging Tables
Staging must be 1:1 with the raw files saved in S3 because the worker will COPY those load-ready files directly into Redshift. That means staging should stay wide and landing-oriented, with as little fragmentation as possible. Splitting nested Brink collections into many tables should happen only in curated transforms, not in the landing layer.
Important semantic rule for correct warehouse design:
Sales2.GetOrders,Kitchen.GetOrderBumpTimes, andKitchen.GetOrderItemBumpTimesare event/fact-style feeds- Brink
settingscalls should be treated as snapshot-style reference feeds, not as a native history feed GetLastModifiedTimeonly tells us that configuration changed; it does not provide a change log- lookup responses such as items, modifier groups, destinations, tables, taxes, tenders, employees, and kitchen queues represent the current known configuration at pull time
- therefore
stagingfor settings should store per-batch snapshots 1:1 with the source payloads curatedsettings-backed tables should default to current-state reference tables unless we explicitly add historical/SCD behavior later- if we need history of configuration changes in the future, that history must be built by KDSAI from successive snapshots, not assumed to exist in Brink
Recommended PoC staging tables:
| Staging table | Source operation | Raw file / response shape | PoC status |
|---|---|---|---|
staging.brink_sales2_get_orders | Sales2.GetOrders | one row per raw GetOrders response payload, preserving the Orders collection as source-shaped content | required |
staging.brink_kitchen_get_order_bump_times | Kitchen.GetOrderBumpTimes | one row per raw GetOrderBumpTimes response payload, preserving the OrderBumpTimes collection | required |
staging.brink_kitchen_get_order_item_bump_times | Kitchen.GetOrderItemBumpTimes | one row per raw GetOrderItemBumpTimes response payload, preserving the OrderItemBumpTimes collection | required |
staging.brink_settings2_get_last_modified_time | Settings2.GetLastModifiedTime | one row per raw freshness response payload | required |
staging.brink_settings2_get_items | Settings2.GetItems | one row per raw GetItems response payload, preserving the Item collection | required |
staging.brink_settings2_get_modifier_groups | Settings2.GetModifierGroups | one row per raw GetModifierGroups response payload, preserving the ModifierGroups collection | required |
staging.brink_settings2_get_destinations | Settings2.GetDestinations | one row per raw GetDestinations response payload, preserving the Destination collection | required |
staging.brink_settings2_get_tables | Settings2.GetTables | one row per raw GetTables response payload, preserving the Table collection | required |
staging.brink_settings2_get_kitchen_queues | Settings2.GetKitchenQueues | one row per raw GetKitchenQueues response payload, preserving the KitchenQueue collection | required |
staging.brink_settings2_get_taxes | Settings2.GetTaxes | one row per raw GetTaxes response payload, preserving the Tax collection | required |
staging.brink_settings2_get_employees | Settings2.GetEmployees | one row per raw GetEmployees response payload, preserving the Employee collection | required |
staging.brink_settings_get_tenders | Settings.GetTenders | one row per raw GetTenders response payload, preserving the Tender collection | required |
Landing rules:
- one staging table per Brink operation / raw file type
- one load-ready file maps to one staging table
- nested collections remain embedded in the landed payload shape
- no separate staging tables for order entries, modifiers, taxes, payments, or payment details in the PoC
- decomposition of nested collections happens in
staging -> curatedSQL only - event streams and settings snapshots should not be modeled the same way in
curated
Every staging table should carry at least:
_etl_batch_id_etl_source_type_etl_ingested_at_etl_raw_s3_path
Staging To Curated Matrix
| Curated table | Input staging tables | Brink mapping note | PoC status |
|---|---|---|---|
curated.kitchen_item_status_events | staging.brink_kitchen_get_order_item_bump_times, staging.brink_sales2_get_orders, staging.brink_settings2_get_kitchen_queues | explode item bump payloads and join back to order/item structures from GetOrders inside the curated transform | target |
curated.kitchen_order_items | staging.brink_sales2_get_orders, staging.brink_kitchen_get_order_item_bump_times, staging.brink_settings2_get_items | explode order entries from GetOrders, then enrich with bump timing and item lookup | target |
curated.kitchen_orders | staging.brink_sales2_get_orders, staging.brink_kitchen_get_order_bump_times, staging.brink_settings2_get_destinations, staging.brink_settings2_get_kitchen_queues | explode order headers from GetOrders, then add queue and bump timing | target |
curated.pos_transaction_items | staging.brink_sales2_get_orders, staging.brink_settings2_get_items | derive item facts by exploding entries, modifiers, and taxes from the landed GetOrders payload | target |
curated.pos_transactions | staging.brink_sales2_get_orders, staging.brink_settings2_get_destinations, staging.brink_settings2_get_employees | derive one transaction row per Brink order from the landed GetOrders payload | target |
curated.pos_hourly_sales | none | Brink PoC does not expose a direct hourly aggregate feed | out of scope |
curated.pos_transaction_tenders | staging.brink_sales2_get_orders, staging.brink_settings_get_tenders, staging.brink_settings2_get_employees | derive payment and payment-detail facts by exploding nested payments from the landed GetOrders payload | target |
curated.pos_tables | staging.brink_settings2_get_tables | direct lookup projection from landed settings payload | target |
curated.pos_table_definitions | none | no Brink source selected in PoC | out of scope |
curated.pos_tenders | staging.brink_settings_get_tenders | direct lookup projection from landed settings payload | target |
curated.customers | none | GetOrders exposes nullable CustomerId, but not a full customer master contract | out of scope for PoC |
curated.loyalty_customers | none | no Brink loyalty feed in PoC | out of scope |
curated.pos_catalog_items | staging.brink_settings2_get_items, staging.brink_settings2_get_taxes | derive item lookup rows from landed item payload, enriched with tax metadata | target |
curated.pos_modifiers | staging.brink_settings2_get_modifier_groups, staging.brink_settings2_get_items | explode modifier group membership inside curated transform | target |
curated.inventory_items | none | no Brink inventory feed in PoC | out of scope |
curated.pos_menu_items | staging.brink_settings2_get_items, staging.brink_settings2_get_destinations, staging.brink_settings2_get_kitchen_queues | optional convenience projection from landed settings payloads | optional |
curated.pos_order_items | staging.brink_sales2_get_orders, staging.brink_settings2_get_items | optional convenience projection by exploding order entries from the landed GetOrders payload | optional |
curated.pos_orders | staging.brink_sales2_get_orders, staging.brink_settings2_get_destinations, staging.brink_settings_get_tenders | optional convenience projection by exploding order headers and nested payments from the landed GetOrders payload | optional |
Minimum Metadata Required By docs/ETL.md
The Brink adapter must satisfy the ETL baseline without adding new metadata tables in the PoC.
Operational metadata to reuse
TenantWarehouseMappingIngestionBatchIngestionCheckpoint
Minimum batch fields
For each Brink sync stream, IngestionBatch must preserve at least the fields explicitly required by docs/ETL.md:
batch_idtenant_idtenant_databaseingestion_mode=api_pullsource_type=brink_posreceived_atload_started_atload_completed_atstatus- row counts and error details
- raw S3 path
- load S3 path
Recommended Brink-specific additions on the batch record or adjacent structured logs:
stream_namelocation_keyservice_nameoperation_namerequest_window_startrequest_window_endresult_code
Minimum checkpoint keys
Use one checkpoint per location and stream:
location:{location_key}:orders:modified-timelocation:{location_key}:order-bumps:bump-timelocation:{location_key}:item-bumps:bump-timelocation:{location_key}:settings:last-modified
Minimum raw and staging traceability
To satisfy replay and debugging requirements from docs/ETL.md, each successful Brink load must let us answer:
- which raw SOAP file was pulled
- which batch loaded it
- which staging rows came from that file
- which curated publication was produced from that batch
Minimum fields needed across raw storage, staging, and logs:
tenant_idsource_typebatch_idstream_nameraw_response_s3_pathload_s3_pathrequest_window_startrequest_window_endcheckpoint_beforecheckpoint_afteringested_at
Minimum connection metadata
Service-owned connection metadata for the PoC must include:
- tenant identifier
- Brink server or endpoint stack
- Brink location identifier used by the adapter
- encrypted
AccessToken - encrypted
LocationToken - connection status such as active or disabled
Minimum Acceptance Bar
This epic is complete enough for the PoC when all of the following are true:
- one tenant can be resolved to one Brink endpoint stack and location
- the adapter stores raw SOAP responses in S3 for each Brink call
- required staging tables are populated from the selected Brink operations
- target curated tables can be rebuilt from staging without reading raw XML again
- one
IngestionBatchexists per Brink sync stream run - checkpoints advance only after end-to-end success
- failed runs keep raw payloads and do not advance checkpoints
- logs and metadata are sufficient to replay or debug a failed time window