organizations
organizations

Create Org

Create a school. FluenTea platform staff only (ADMIN_USER_IDS).

A school is SOLD, not signed up for. That is a commercial decision, and it is also the only one this endpoint can safely encode, because membership of an organization IS an entitlement: usage_limiter._get_effective_tier hands every active member org.member_tier. An open create endpoint is a button that provisions a paid product for whoever clicks it and everybody they invite.

A short-lived self-serve version of this endpoint existed (7203678ff) and was reverted here on the founder's call. What survives from it is the part that was about correctness rather than about who may click:

  • THE CLOCK IS ASKED FOR, and refused empty. A school that never answers this question sets its whole first term's deadlines in UTC and every "late" is computed against the wrong hour (JOURNEY-15). It was possible to create a school without one; it is not any more.
  • THE ADDRESS IS DERIVED, never supplied. /join/<slug> is a public namespace read aloud to students; nobody on the far side of HTTP picks an entry in it, not even us. seed_organization.py still calls the service directly when a curated slug is genuinely wanted.

Owner: owner_user_id, or owner_email resolved against the account behind it — a staff member setting up a signed school has the coordinator's address in the contract, not their UUID. Defaults to the caller, which is what the demo and load-test schools want.

post/organizations

Headers

authorizationstring nullable

Request body

object required

Response

Successful Response

{"stackTrail":"paths:/organizations:post:responses:200:content:application/json:schema","oasType":"schema","type":"unknown"}

Changes

No recorded changes to this endpoint across all 2 revisions of this API.