| cap | Yes | The most terms this storefront may hold, from the account's plan. A market's storefronts each get their own — the cap is per storefront, not shared across the market. | |
| terms | Yes | How many terms this storefront's corpus holds now. | |
| pinned | Yes | Terms added to the corpus by this call, with `origin: "manual"`. A term Apptail has never seen is created and queued for crawling, so its ranks appear within minutes rather than immediately. | |
| caveats | Yes | What the caller needs to hear before reporting success — that ranks are not in yet, or that the cap cut the list. | |
| country | Yes | The storefront that was edited. A corpus belongs to one storefront and is never shared between them. | |
| refused | Yes | Terms not added because the storefront is at `cap`. Unpin something or drop a storefront; the account's plan sets the number. | |
| removed | Yes | Keyword ids taken out of the corpus by this call. | |
| excluded | Yes | The subset of `removed` that will ALSO be kept out of every future rebuild. A term the heuristic found is re-derived from the seeds every 72 hours, so removing it has to be recorded outside the corpus to last; a hand-pinned term needs no such record because nothing re-adds it. Pinning a term with `add` clears it from this list again. | |
| market_id | Yes | The market this corpus belongs to. | |
| console_url | No | This market's corpus in the console. | |
| not_removed | Yes | Ids that were sent to `remove` and are still in the corpus, each with the reason. | |
| already_present | Yes | Terms that were already in this corpus, and where they came from. Not an error — it is the state the caller asked for, and a `competitor` term is NOT re-recorded as `manual`, because the origin says who put the term here. | |