Plan-builder context (partner)
Overview
Get the authenticated partner's billing model, contract model, billing config, per-feature rates, and review-site universe — everything the Plan Builder UI needs to render.
Prerequisites
- A bearer token. Callable with Partner tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/partner/plan-builder/context
Authentication
- Requires a bearer token in the
Authorization: Bearer <bearer-token>header. - Who can call it: Partner tokens.
- The route is in the authenticated group with no extra route-level guard. The endpoint enforces the role in the controller.
partnerPlanBuilderContextcallsgetAuthPartner, walking the company tree up to thebundle_id=1partner.- 403 if no partner resolves.
- Any user inside a partner tree (partner/account/location) resolves to and is scoped by their owning partner.
Rate limit
- No rate limit.
Request
— no path/query/body params.
Response
partner—{ id, name, billing_model, contract_model }config— partnerCompanyBillingConfig(location_rate,one_time_fee, …) ornullfeature_rates[]—{ feature_name, rate_per_unit, enabled }review_site_universe[]—{ review_site_id, name, color, pull_frequency, pull_interval, pull_times[], pull_days[] }meta.plans_read_only—truefor plan-based partners or when the caller is a sub-partner;falseotherwise
200 OK · 200
200{
"data": {
"data": {
"partner": {
"id": 5,
"name": "Yelp partner",
"billing_model": "plan-based",
"contract_model": "model-a"
},
"config": {
"id": 1,
"company_id": 5,
"contract_model": "model-a",
"location_rate": "4.01",
"one_time_fee": "0.00"
},
"feature_rates": [
{
"feature_name": "per_location_cost",
"rate_per_unit": "4.0100",
"enabled": true
},
{
"feature_name": "ai_response",
"rate_per_unit": "0.0800",
"enabled": true
}
],
"review_site_universe": [
{
"review_site_id": 44,
"name": "Google",
"color": "#3774ee",
"pull_frequency": "daily",
"pull_interval": 1,
"pull_times": [
"06:00"
],
"pull_days": []
}
]
},
"meta": {
"plans_read_only": true
}
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
403 | Returned if no partner resolves |
500 | Unexpected server error |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/partner/plan-builder/context" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json'Updated 8 days ago
Did this page help you?
