mfp

The buy plan's grid, by category and month

One buy plan's grid: the planned figure for every category and month of the fiscal year, with actuals filled in for months that have closed. metric=revenue reads the sales plan and metric=margin the margin plan.

view decides which plan is read: working is the planner's tip, live is the published version in force, and a version id reads that frozen version. A variance you want to reproduce next quarter is read against a version id, not against live, because live moves when the plan is published again.

A month still open carries a null actual rather than a partial one, and a category nobody has planned carries a null figure rather than a zero. Narrow with filter_args on category and sales_channel_id.

Scope: planning:read.

get/api/v1/mfp/{mfp_id}/table

Request

  • Base URL: https://api.app.tightly.io
  • URL: https://api.app.tightly.io/api/v1/mfp/{mfp_id}/table
  • Auth: HTTP bearer

Path parameters

mfp_idstring required

The plan to read. It is the mfp_id a plan carries everywhere on this rail, and the same one get_otb_rollup takes. The two read one plan and cannot disagree about it.

Query parameters

filter_argsstring

URL-encoded JSON array of filters with keys category and sales_channel_id (operation eq/in), e.g. [{"key":"category","operation":"in","value":["Knitwear"]}]. Omit for all categories (as rows) and all channels (aggregated).

metric'revenue' | 'margin' | 'units'

Value to render in each cell. Defaults to revenue.

viewstring

Which version to read: "working" (default), "live", or a version_id. The rows and totals reflect that view; actuals are unchanged. The response echoes the active view.

Headers

Tightly-Versionstring
Example:2026-11

The date train to answer on. One train exists today, 2026-11, the one this reference describes and the one every key is minted on, so the call answers on it with or without this header. Send it anyway, so a client built now names its train from the start.

Response

The plan's grid: one row per category, one column per month of the fiscal year, planned figures throughout and actuals only for months that have closed. months[].is_completed says which those are, and an in-progress month's actual is null rather than a part-month figure, "the month is not over" and "we are behind" are different readings and only one of them is actionable. view echoes the version actually read.

Changes

No recorded changes to this operation across all 1 revision of this API.