{
"id": "ink.branchline.listBlooms",
"defs": {
"main": {
"type": "query",
"output": {
"schema": {
"type": "object",
"required": [
"blooms"
],
"properties": {
"blooms": {
"type": "array",
"items": {
"ref": "#bloomView",
"type": "ref"
}
},
"cursor": {
"type": "string",
"description": "Opaque pagination token for the next page. Absent when there are no more results."
}
}
},
"encoding": "application/json"
},
"parameters": {
"type": "params",
"properties": {
"sort": {
"type": "string",
"default": "recent",
"description": "Sort order. 'recent' orders blooms by bud createdAt, newest first. 'pollen' ranks blooms by a pollen-weighted score: each grain of pollen on the bloom or any ancestor contributes with independent time and depth half-life decay, so both fresh tip-of-branch interest and steady deep-lineage accumulation rank well.",
"knownValues": [
"recent",
"pollen"
]
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1
},
"cursor": {
"type": "string",
"description": "Opaque pagination token returned by a prior call."
}
}
},
"description": "List active blooms: buds past the 24h growing window that are either still inside the 48h follow window or have never gained a child. Supports 'recent' (newest createdAt first) and 'pollen' (decay-weighted pollen score across the bloom and its ancestors)."
},
"budRef": {
"type": "object",
"required": [
"uri",
"title",
"author"
],
"properties": {
"uri": {
"type": "string",
"format": "at-uri"
},
"title": {
"type": "string"
},
"author": {
"type": "string",
"format": "did"
}
}
},
"bloomView": {
"type": "object",
"required": [
"bloom",
"root",
"createdAt",
"intermediateCount",
"pollenCount"
],
"properties": {
"root": {
"ref": "#budRef",
"type": "ref",
"description": "The root bud (story seed) this bloom descends from."
},
"bloom": {
"ref": "#budRef",
"type": "ref",
"description": "The bud at the leaf of this path — the bloom itself."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "createdAt of the bloom bud."
},
"pollenCount": {
"type": "integer",
"minimum": 0,
"description": "Lifetime raw pollen count on the bloom bud. Not the ranking-weighted score."
},
"intermediateCount": {
"type": "integer",
"minimum": 0,
"description": "Count of distinct intermediate contributor DIDs on the root-to-bloom path, excluding the root author and the bloom author."
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}