Get every plan assigned to a given company (account) via the company_plans pivot, including each plan's features, feature options, and plan-level review sites, ordered cheapest-first.
Auth: Both — no authentication required. The route lives in the public group ("reference data called by the SPA before login"); returns true. The endpoint scopes the target company purely by the company_id query param. When you omit company_id, it falls back to the authenticated user's, and finally to 1 if no user is present. Reachable scope is therefore identical for partner and account roles. Whatever company_id is passed (validated only as Must be an existing account, no hierarchy/an ownership check). Pass the account company id as ?company_id=brandId.
Rate limit: 100 requests/min.
Request
- Query:
company_id(integer, optional) — company (account) id to list plans for; must be an existing account. If omitted, defaults to the logged-in user's company, else1.
Response — { data. } envelope. Note: the controller returns successResponse(['data' => $plans]), so the payload is double-nested as { "data": { "data": [.plans ] } }. Each array element is a raw Plan model with all plans.* columns plus the included relations:
data.data[].id(integer)data.data[].plan_name(string)data.data[].price(float) — cast to float; list ordered bypriceascendingdata.data[].original_price(float|null)data.data[].status(string enum)data.data[].plan_type(string enum)data.data[].tier_slug(string|null)data.data[].enforcement_mode(string enum|null)data.data[].is_admin_managed(boolean) — cast to booldata.data[].description(string|null)data.data[].plan_end_date(datetime|null) — cast to datetimedata.data[].short_info(string|null)data.data[].created_at/updated_at/deleted_at(datetime|null)data.data[].features[](array) — selected cols only:id,plan_id,feature_name,enabled,included_units,limit_type,hard_stopdata.data[].features[].options[](array) — selected cols only:id,plan_feature_id,feature_key,feature_valuedata.data[].plan_review_sites[](array, relationplanReviewSites) — selected cols only:id,plan_id,review_site_id,pull_frequency,pull_intervaldata.data[].plan_review_sites[].review_site(object, relationreviewSite) — selected cols only:id,name
Returns 404 (notFoundResponse('Company not found.')) when the resolved company id does not exist. 422 on company_id validation failure; 500 (defaultErrorResponse) on a thrown exception (also logged via writeDebugLog at emergency).
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
