Documentation
Everything you need to build and run
The founding white paper, the sector patterns, and a reference written from the code: spaces, roles, and the one endpoint that exists. Guides and the public API documentation are being written — write to us and we will walk you through it.
White paper
Given time: the concept. Why given time is a real value nobody counts, and how to record it without turning it into money. 8 pages, sourced.
OpenUse cases
Associations, territories, companies, universities — patterns per sector.
OpenArchitecture
The model, the coordination layer and the pillars of the ecosystem.
OpenProduct documentation
SoonConcepts, roles, contributions and recognition — how the platform works, end to end.
Write to usGuides & tutorials
SoonStep-by-step: open a space, define rules, invite a community, measure impact.
Write to usAPI & webhooks
SoonIntegrating contributive time into your own systems. The interface exists; its public documentation is being written.
Write to usReference
Written from the code, field by field. What is not described here does not exist yet — and the page says so rather than hiding it.
A space
A space is a tenant: one organisation, one address, its own members. Table mtb.spaces.
| slug | text, unique | The sub-domain. Lowercase letters, digits and hyphens, 1 to 32 characters, never starting or ending with a hyphen. |
| name | text | The name of the space. |
| org_name | text | The legal or usual name of the organisation. |
| org_type · sector · size_band | text, optional | Declared at creation; descriptive, never used as a filter. |
| langs | text[] | The languages of the space. Empty by default. |
| plan | community | organisation | territoire | network | Constrained by the database, not by the interface: an unknown value is refused at write time. |
| status | pending | active | suspended | A newly created space is pending. It is opened by hand — nothing activates itself. |
| owner_id | uuid, nullable | The account that created it. If that account disappears, the space survives without an owner rather than being deleted. |
Members and roles
Table mtb.space_members. Three roles, and one rule that is enforced by the database, not by the screen.
| owner | role | Created the space. The only role that can modify it. |
| admin | role | Administers the space day to day. |
| member | role | Belongs to the space. The default. |
| RLS | règle | You only see a space if you are a member of it, and you only modify it if you are its owner. Enforced in the database: calling the API directly does not get around it. |
Opening a space
One endpoint, one call. POST to /functions/v1/provision-space.
| requis | Must match a simple address pattern, otherwise invalid_email (400). | |
| orgName | requis | At least 2 characters, otherwise invalid_org (400). |
| spaceName | requis | Used to derive the slug. If nothing valid can be derived: invalid_slug (400). |
| orgType · sector · langs · size | optionnels | Recorded as declared. |
| 200 | réponse | { ok: true, slug, url: "<slug>.manatimebank.org", status: "pending" } |
| 400 · 405 · 500 | refus | bad_json, method_not_allowed, owner_failed. Each refusal names its cause — none of them says merely "error". |
What does not exist yet
Recording hours, contributions and recognition are described in the white paper as a concept. No table carries them and no function computes them yet. They are deliberately absent from this reference: documentation that describes what does not exist is paid for by the first reader who tries it.
Frequently asked questions
Frequently asked questions
Is the model open?
Yes. The MANAtimebank model and the TEMPOsystem coordination layer are open and stewarded by Alliance MANA.
Can we migrate our existing data?
Yes — members, hours and history can be imported during onboarding. Talk to us about your format.
Who owns the data?
You do. Data ownership, GDPR compliance and export are built in, on every tier.