Purpose
Supports response exports (JSONL/CSV) with configurable field expansion and column selection. Data-source uploads include optional CSV header validation and a dry-run safety mode.
Current state
Last touched: 2025-09-08. Functionality and completeness: Core CLI functions are implemented; a full README and operational runbooks are pending.
Next step
Add baseline automated tests to cover critical flows; Add CI pipeline for build/test/lint; Document deployment/runtime environment (or add Dockerfile); Document interfaces (CLI flags, API endpoints, file formats); Add structured logging and basic health checks.
Interfaces
Inputs- API token (env/flag), CSV file, campaign/data-source IDs
- InformedK12 API token
- Campaign or data-source IDs
- CSV files
Outputs- JSONL/CSV export files
- InformedK12 data-source updates
- CSV files
Reality to Action trace
Reality IngestionContributes in this stage.
Canonical StorageNot in scope.
Automation EnginesContributes in this stage.
Human InterfacesContributes in this stage.
Operational AdoptionContributes in this stage.
Core workflow
TBD. Document the 5-10 steps that define the core workflow.
Artifacts
- Uploads require headers when `--require-headers` is set; exports flatten nested JSON fields and allow custom column lists
Operational notes
Constraints and scars
- API rate limits and response pagination require careful use of `page_size`, `since`, and `max_pages` to keep exports bounded.
Reliability posture
Failure modes and safe behavior: Auth or schema errors abort the run without partial writes; API errors surface with HTTP status context. Idempotency / retries / batching behavior: Retries with exponential backoff (including 429 Retry-After); uploads overwrite data source contents.
Observability
- Logs: Tracing to stdout includes CSV summaries, page counts, and request statuses
- Metrics/health checks: None built-in; rely on exit codes and API responses
- Logs: tracing to stdout, including CSV header/row counts and request status summaries.
Security and privacy
Sensitive secret material detected in informedk12-sync/examples.md; ensure it is excluded from docs and CI.
Dependencies
Upstream- InformedK12 API (`/campaigns/{id}/responses`, `/data_sources/{id}/csv`)
Ownership
OwnersJosh Barton
UsersJosh Barton (owner)
Architecture & Major Components
High-level diagram (text):
- Entry/trigger -> core logic -> outputs (details per docs below)
Entry/trigger
→core logic
→outputs
Entry points: src/main.rs
Top-level folders: releases, src
Key abstractions: CLI subcommands for export and data-source upload, CSV header validation, JSON flattening for CSV, exponential backoff retries
Setup / Build / Run