FLAM

Takes

3 Takes routes on the FLAM API: Every standing note this house holds, in force and retired; Promote a direction to a standing note — her tap, never.

Base URL https://api.flam.fashion. Send Authorization: Bearer flam_sk_… on every call; a handful of routes are session-only and say so. How keys and roles work.

GET /api/toolkit/standing-notes

Every standing note this house holds, in force and retired

The call sheet's read: every standing note with its scope (as tool slugs and as a phrase in the director's language), the evidence job ids it was learned from, when it started applying, and when it was switched off. Retired rows stay listed — a preference that vanishes is a preference she cannot audit. Scoped to the acting house; a viewer seat may read it.

Responses

StatusMeaning
200Newest first, retired rows included with their retiredAt.
401Signed out

200 returns:

{
  "notes": [
    {
      "id": "string",
      "text": "string",
      "scopeTools": [
        "string"
      ],
      "scopePhrase": "string",
      "evidenceJobIds": [
        "string"
      ],
      "activeFrom": "string",
      "retiredAt": "string"
    }
  ]
}

Call it

curl -X GET "https://api.flam.fashion/api/toolkit/standing-notes" \
  -H "Authorization: Bearer $FLAM_API_KEY"

POST /api/toolkit/standing-notes

Promote a direction to a standing note — her tap, never inference

The accept door (C-T3: a direction never silently becomes standing). Accepting an offer sends the text plus evidenceJobIds, and the scope is RE-DERIVED server-side from those jobs' tools — a client cannot widen it. Writing from the call sheet sends text plus scopeTools with no evidence; an empty scopeTools means global and is reachable only through this door, with the call sheet's own confirm. The same sentence already standing on the same scope is returned, not duplicated.

Request bodyapplication/json

FieldTypeRequiredNotes
textstringyes
scopeToolsstring[]no
evidenceJobIdsstring[]no
{
  "text": "string",
  "scopeTools": [
    "string"
  ],
  "evidenceJobIds": [
    "string"
  ]
}

Responses

StatusMeaning
200Already standing — the existing note, untouched.
201Standing from now on. Visible on the call sheet.
400Empty text, unknown evidence, or a scope the evidence does not support.
401Signed out
403A viewer seat reads the house's preferences; it does not set them.

200 returns:

{
  "note": {
    "id": "string",
    "text": "string",
    "scopeTools": [
      "string"
    ],
    "scopePhrase": "string",
    "evidenceJobIds": [
      "string"
    ],
    "activeFrom": "string",
    "retiredAt": "string"
  }
}

Call it

curl -X POST "https://api.flam.fashion/api/toolkit/standing-notes" \
  -H "Authorization: Bearer $FLAM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string","scopeTools":["string"],"evidenceJobIds":["string"]}'

PATCH /api/toolkit/standing-notes/{id}

Retire a standing note, or narrow its scope

Retire sets retiredAt and keeps the row — the call sheet greys it in place with its evidence, because a preference that vanishes is a preference she cannot audit. Narrowing replaces scopeTools with a subset of the current set. Widening — including any PATCH to an empty scope — is refused: out of scope, first ship.

Parameters

InNameTypeRequiredNotes
pathidstringyes

Request bodyapplication/json

FieldTypeRequiredNotes
retiretrueno
scopeToolsstring[]no
{
  "retire": true,
  "scopeTools": [
    "string"
  ]
}

Responses

StatusMeaning
200The note as it now stands.
400Nothing to change, or a scope that widens.
401Signed out
403A viewer seat cannot change the house's preferences.
404Not this house's note. Indistinguishable from absent, on purpose.

200 returns:

{
  "note": {
    "id": "string",
    "text": "string",
    "scopeTools": [
      "string"
    ],
    "scopePhrase": "string",
    "evidenceJobIds": [
      "string"
    ],
    "activeFrom": "string",
    "retiredAt": "string"
  }
}

Call it

curl -X PATCH "https://api.flam.fashion/api/toolkit/standing-notes/{id}" \
  -H "Authorization: Bearer $FLAM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"retire":true,"scopeTools":["string"]}'