The project object
A project holds one product’s revenue data — its sources, customers, subscriptions and plans — and the settings its metrics are computed with. An API key belongs to one project, and works in it alone.
Attributes
idstring (UUID)The project’s unique identifier.
objectstringThe object’s type, always
project.Always
projectchecklist_dismissed_attimestampWhen the project’s Get started checklist was dismissed in Summerbase, or null while it is offered.
churn_timingenumWhen a subscription’s revenue stops counting:
at_expiration, when it ends, orat_cancellation, when a cancellation is booked for it.Under
at_cancellationa subscription withcancels_atset is worth nothing from the moment the source said so, though it is still in service: the customer’s MRR drops then, the movement is churn, or contraction if something else is still live, and a customer with nothing else live ischurned. Withdrawing the cancellation brings the revenue back. A trial booked to end loses nothing, having nothing to lose. A Stripe import dates a booking at Stripe’scanceled_at, which holds only the latest request, so an earlier or withdrawn one is not in the history.Changing it moves the metrics of every customer in the project.
One of
at_expiration,at_cancellationcreated_attimestampWhen the project was created.
movement_collapse_window_daysintegerHow close together two changes to a customer’s revenue have to be to count as one.
Signing up at $100 and upgrading to $500 the next day is $500 of new revenue, not $100 of new plus $400 of expansion, and a cancellation reversed within the window is neither a churn nor a reactivation. The collapsed movement is dated at the first change in the window, so a customer who arrives on the 30th and upgrades on the 2nd still arrived in the first month.
0records every change as it happened.An elapsed duration, not a calendar one: seven days is 168 hours wherever the project reports from. Changing it moves the metrics of every customer in the project, and a closed period can move while it is still inside the window.
namestringWhat the project is called.
organizationobjectThe organization that owns the project. Expandable.
Show 6 child attributes
idstring (UUID)The organization’s unique identifier.
objectstringThe object’s type, always
organization.Always
organizationcell_codestringWhere the organization’s data is kept, chosen from its region when it was created and never changed.
created_attimestampWhen the organization was created.
namestringThe company’s name, as it appears throughout Summerbase.
slugstringHow the organization is addressed in a readable URL — the
acmeinapp.summerbase.com/organizations/acme, and in its projects’app.summerbase.com/projects/production@acme. Lowercase letters, digits, hyphens and underscores, and never shaped like an id.Unique across every Summerbase organization, and derived from the name when you do not choose one. Changing it is allowed and breaks every address that used the old one.
organization_idstring (UUID)The organization that owns the project.
recompute_failed_attimestampWhen the last recompute gave up, or empty when none has since the last one succeeded.
recompute_remainingintegerHow many of them are still behind.
Counts only the customers the recompute started with.
recompute_started_attimestampWhen the recompute now running began, or empty when none is.
One runs after a setting that decides how the project is measured changes.
recompute_totalintegerHow many customers that recompute has to get through.
reporting_cadenceenumWhich cadence the project quotes its metrics at:
monthly, MRR, orannual, ARR.Every measure is answered at either cadence whatever this says. What it decides is which of the two Summerbase shows where it shows one.
One of
monthly,annualreporting_currencyobjectThe currency every amount is reported in. Expandable.
Show 3 child attributes
objectstringThe object’s type, always
currency.Always
currencycodestringIts ISO 4217 code —
USD,EUR,DKK.namestringWhat it is called, in English:
US dollar,Danish krone.
reporting_currency_codestringThe currency every amount is reported in, by its ISO 4217 code. A project’s first import sets it to the currency most of the imported subscriptions are billed in, and nothing changes it afterwards but this action.
Amounts are converted at the rate for the moment being measured, so a project billing in three currencies has one number to look at.
reporting_timezonestringThe timezone every chart’s buckets are cut in, by its IANA name —
Europe/Copenhagen,America/New_York,UTC— as/v1/timezoneslists them. An offset like+02:00and an abbreviation likeCETare refused.It decides which day a midnight-adjacent event falls in, and where a month starts.
slugstringHow the project is addressed in a readable URL — the
productioninapp.summerbase.com/projects/production@acme, or that one slug alone when it is the organization’s too. Lowercase letters, digits, hyphens and underscores, and never shaped like an id.Unique within the organization: one already used there is refused. Derived from the name when you do not choose one. Changing it is allowed and breaks every address that used the old one.
Example
{ "checklist_dismissed_at": null, "churn_timing": "at_expiration", "created_at": "2025-09-08T14:02:37Z", "id": "0198f1a2-6c52-7b18-8e3f-2a9c4d6b1e07", "movement_collapse_window_days": 7, "name": "Production", "object": "project", "organization_id": "0198f1a2-6c3d-7e41-9a2b-5c8d1e4f7a90", "recompute_failed_at": null, "recompute_remaining": 0, "recompute_started_at": null, "recompute_total": 0, "reporting_cadence": "monthly", "reporting_currency_code": "USD", "reporting_timezone": "America/New_York", "slug": "production"}