Redwood

Redwood Loader

CSV / Excel → Supabase warehouse (utility, shipment, …)

Packages

PackageCompanyDescriptionSub-packagesWarehouse rowsLast load
Most recently loaded first. Click a package to see its sub-packages (feeds).

FeedLoad typeTarget tableStatusMapped columnsWarehouse rowsLast load
Click a sub-package to map its file columns and load a file. Edit changes how its files are read.

The header is read exactly as the load will read it: same delimiter detection, same quoting rules. Dates are matched against the , after any feed-specific ones set in the feed's settings.
#File columnExampleUTILITY columnTrack
Row identity: package + load_type + dimension1…12. A row whose key values already exist in the warehouse is updated; otherwise it is inserted. Measures and dates are overwritten by the incoming file.
The column mapping is set up by Redwood. If a column of your file is not mapped the way you expect, contact Redwood.
Recent loads for this feed
RunFileStartedOutcomeLoadedRejectedNotes
Field changes recorded for this feed
WhenRecordFieldWasNowStatusVer.Run · fileLine

Legacy MySQL

Read-only view of the WildFly loader's configuration: PACKAGE, SUB_PACKAGE_DETAIL, META, USER, COMPANIES. Nothing here can be changed from this screen.
IDPackageCompanySupabase companySub-packagesMETALast loadCreated byCreatedDeleted
Click a package to open it.

Migrate a legacy package to Supabase PACKAGE → load.package · SUB_PACKAGE_DETAIL → feeds · META · LOAD_HISTORY · UTILITY* → warehouse.utility

Legacy ids are kept, so a package, run or META row that already exists in Supabase is left alone and re-running is safe. Nothing is written until you press Migrate; Dry run does every read and every decision and writes nothing.
IDPackageCompanySupabase companySub-packagesMETALast loadDeleted
Click a package to run the pre-flight checks.

Master data only (ref.*) shared by every package — needed before the first shipment load of a package created here rather than migrated

Legacy ids are kept; rows already present are left alone, so re-running only adds what is missing.

File watcher

Loads CSV, Excel and XML files dropped into <dir>/<subPackageId>/ — one folder per feed, named by its id. A file is picked up once it has stopped changing, moved to processing/ while it loads, then to success/ or error/ (with a .log beside it). Several feeds load in parallel; one file per feed at a time. Tick files and press Load selected now to load them immediately — outside the scan, the settle wait and the watcher's slots (even while paused); they still wait for a load of the same feed that is already running. Create input folder makes a feed's folder (and its S3 prefix) before the first file arrives. Set with LOADER_WATCH_DIR, LOADER_WATCH_INTERVAL, LOADER_WATCH_PARALLEL in run-local.ps1.
loading…

Feed folders what is waiting right now

loading…

Recent loads by the watcher

WhenFeedFileResultDetailRun

Live log what the loader is doing right now — every load (upload, watcher, e-mail), newest at the bottom; refreshes with the screen


  

Entities

A saved view over a company's subpackages, joined on the columns of their files and shown under the file column names. A live entity is a view that runs the join on every read; a staging entity is a table rebuilt on a schedule (and, if asked, after each load of a member) — the loader measures the query before it saves and forces staging when a live view would be slow. Each entity can expose chosen columns through an API key.
EntityCompanyModeMembersColumnsRowsLast builtNext refreshAPIStatus

E-mail intake

A rule watches one mailbox folder for e-mails whose subject contains a text (optionally from a given sender), saves their .xlsx / .csv attachments to a local directory and copies them to an S3 path, then moves the e-mail to the Processed folder (or Error). Every e-mail and file is recorded below. Turning a rule on runs it immediately; after that it polls on its own interval.

Rules

RuleMailbox · folderSubject containsFromTypesDeliver toEveryLast runOKFailed

Mailboxes

NameServerUsernameStatusLast checkRules

History e-mails handled, newest first

WhenRuleFromSubjectOutcomeFilesNotes
Runs (each check of a rule)
StartedRuleTriggerStatusMatchedProcessedFailedFilesError

API intake

An endpoint calls an external REST API on a schedule, pages through the response (and, when set, calls once more per record for its detail), writes the records to one file per output (Excel by default, or CSV) and delivers each file to its destination: an S3 path or directory as typed, or a feed's watcher folder, where the watcher loads it through the feed's mapping. Every run, file and HTTP call is recorded below; a file that went to a feed shows the load it got.

Endpoints

EndpointSourceCallOutputs → destinationScheduleLast runNext runRecordsOKFailed

Sources

NameCompanyBase URLAuthThrottleStatusLast checkEndpoints

Runs every refresh, newest first — calls made, records extracted, files written and the load each file got

StartedEndpointTriggerStatusCallsPagesRecordsFilesWindowTookError

File lookup every line of every loaded file, searchable

Finds every line of the selected package's loaded files that contains the text (any column, case-insensitive). Searches the copies kept in S3; newest load first.

Change history what changed, when, from which file — and what it was before

Only columns ticked chg (changes) or hist (every value) on the feed's mapping are recorded. Each block is one load: download that file, or the earlier file that carried the previous value, to verify a change.
RecordFieldWasNowKindPrevious value came fromLine

Load history every run, every feed, newest first

RunPackageFeedFileStartedCompletedOutcomeLoadedRejectedUserE-mailNotes

Users portal accounts (public.profiles) — who can sign in here

EmailNameRoleCompanyActivePackages createdLoadsLast loadCreated
Accounts are managed in the web portal; this list is read-only.

Companies public.companies

CompanySlugActiveUsersPackagesWarehouse rowsCreated

Standard date formats

loading…

Connections

checking…

API reference

loading…