当前在线  

/v1/sidebar/

V2 sidebar — runtime read/render endpoints. The sidebar markup is owned by `\AT\ATV2Sidebar` (declarative registry at /config/atv2-sidebar.php → /libraries/atv2-sidebar.lib.php) and rendered server-side once per page load. After the initial render the client may mutate sidebar-relevant state (pin/unpin, expand/collapse a submenu, change the plans sort/group). These endpoints are how the client gets a fresh, server-canonical render after such a mutation — so layout never drifts between client and server, and the client never re-implements the markup. The complementary mutation endpoints are set_expanded (submenu collapse state) and set_plans_view (plans-block sort). Per-user bookmarks moved to /v1/bookmarks/* — they're no longer references to sidebar registry items but full {title, url, description} rows owned by the user. Auth: all endpoints accept anonymous callers and degrade gracefully (no plans block). The viewer's user id is taken from the apiv1 dispatcher's session resolution — no explicit auth params.
GET

/v1/sidebar/get_plans_render

#
Returns only the server-rendered "My Bookings" block plus the matching plans state. Used by the v2 shell to defer the expensive city-grouped travel-plans fetch until after the initial page render. Auth: plans are personal; anonymous callers receive ErrorUnauthorized.

参数

名称类型必填默认值描述
activeNavKey string 否 "" Current page's active sidebar key.
theme string 否 "upscale_at" Theme name; controls per-theme markup helper. Defaults to "upscale_at".
请求示例(cURL)
curl --get \
  'https://cn.appointmenttrader.com/v1/sidebar/get_plans_render' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'activeNavKey={{activeNavKey}}' \
  --data-urlencode 'theme={{theme}}'

返回值

JSON
See the shared response schema and synthetic example.
响应字段
字段类型必填描述
$sidebar_get_plans_render_Response 是的
$.oneOf[0] 是的
$.oneOf[0].allOf[0]object 是的
$.oneOf[0].allOf[0].RequestUserAliasstring 是的
$.oneOf[0].allOf[0].RequestPathstring | null 是的
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" 是的
$.oneOf[0].allOf[0].ResponseCodeinteger 是的
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring 否
$.oneOf[0].allOf[1]object 是的
$.oneOf[0].allOf[1].Payloadobject 是的
$.oneOf[0].allOf[1].Payload.htmlstring 是的
$.oneOf[0].allOf[1].Payload.stateobject 是的
$.oneOf[0].allOf[1].Payload.state.activeKeystring 是的
$.oneOf[0].allOf[1].Payload.state.plans 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].sortBystring ["upcoming","name"] 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupBy = "city" 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupsarray 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[]object 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityCodestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityNamestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].emojistring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].citySlugstring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubblesobject 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubbles.*integer 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].hasArchivedPlansboolean 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[1]null 是的
$.oneOf[1]object 是的
$.oneOf[1].RequestUserAliasstring 是的
$.oneOf[1].RequestPathstring | null 是的
$.oneOf[1].RequestStatus = "Failed" 是的
$.oneOf[1].ResponseCodeinteger 是的
$.oneOf[1].ResponseMessageAPIResponseMessage 是的
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[1].ResponseMessage.oneOf[1]array 是的
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[1].ResponseMessage.oneOf[2]object 是的
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[1].RequestImpersonatedByUserAliasstring 否
响应示例
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/sidebar/get_plans_render",
    "RequestUserAlias": "example-user",
    "Payload": {
        "html": "synthetic-example",
        "state": {
            "activeKey": "synthetic-example",
            "plans": {
                "sortBy": "upcoming",
                "groupBy": "city",
                "groups": [],
                "hasArchivedPlans": false
            }
        }
    }
}
机器可读的端点文档
GET

/v1/sidebar/get_render

#
Returns server-canonical rendered HTML for the v2 sidebar plus the matching state struct. The client's contract is to replace the inner HTML of the sidebar aside element with Payload.html and update window.ATV2ShellState.sidebar with Payload.state — there is no client-side render, ever. Use this after any mutation that affects the sidebar's structure or data (pin/unpin, plans sort/group toggle, app added/removed). For pure active-state changes triggered by inline navigation, prefer window.ATV2Sidebar.applyActiveKey() instead — it's a DOM toggle and doesn't need a roundtrip.

参数

名称类型必填默认值描述
activeNavKey string 否 "" Current page's active sidebar key.
theme string 否 "upscale_at" Theme name; controls per-theme markup helper. Defaults to "upscale_at".
请求示例(cURL)
curl --get \
  'https://cn.appointmenttrader.com/v1/sidebar/get_render' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'activeNavKey={{activeNavKey}}' \
  --data-urlencode 'theme={{theme}}'

返回值

JSON
See the shared response schema and synthetic example.
响应字段
字段类型必填描述
$sidebar_get_render_Response 是的
$.oneOf[0] 是的
$.oneOf[0].allOf[0]object 是的
$.oneOf[0].allOf[0].RequestUserAliasstring 是的
$.oneOf[0].allOf[0].RequestPathstring | null 是的
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" 是的
$.oneOf[0].allOf[0].ResponseCodeinteger 是的
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring 否
$.oneOf[0].allOf[1]object 是的
$.oneOf[0].allOf[1].Payloadobject 是的
$.oneOf[0].allOf[1].Payload.htmlstring 是的
$.oneOf[0].allOf[1].Payload.stateobject 是的
$.oneOf[0].allOf[1].Payload.state.activeKeystring 是的
$.oneOf[0].allOf[1].Payload.state.expanded 是的
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[0].*boolean 否
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[1]array 是的
$.oneOf[0].allOf[1].Payload.state.itemsarray 是的
$.oneOf[0].allOf[1].Payload.state.items[]object 否
$.oneOf[0].allOf[1].Payload.state.items[].keystring 是的
$.oneOf[0].allOf[1].Payload.state.items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].iconstring 否
$.oneOf[0].allOf[1].Payload.state.items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.state.items[].rolestring 否
$.oneOf[0].allOf[1].Payload.state.items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].todoboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].hide_when_rightbar_visibleboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].mobile_headerobject 否
$.oneOf[0].allOf[1].Payload.state.items[].mobile_header.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].mobile_header.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].sort = "communities" 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].itemsarray 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].keystring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].iconstring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].rolestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].conditionstring 否Legacy static submenu visibility callback identifier, retained as inert text by ToClientState.
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].persist_when_emptyboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].wrapper_attrsobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].wrapper_attrs.*string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].default_expandedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[1]null 否
$.oneOf[0].allOf[1].Payload.state.plans 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].sortBystring ["upcoming","name"] 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupBy = "city" 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupsarray 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[]object 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityCodestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityNamestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].emojistring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].citySlugstring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubblesobject 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubbles.*integer 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].hasArchivedPlansboolean 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[1]null 是的
$.oneOf[0].allOf[1].Payload.state.appMenu = null 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeaderobject 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeader.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeader.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.state.communitiesSortBystring ["latest_post","name"] 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigationobject 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.MembershipFingerprintstring 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CompleteScopesarray 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CompleteScopes[]string ["status","activity"] 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CommunityOrderFingerprintstring 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payloadPersonalNavigationBubbles 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].* 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[0]integer 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[1] = false 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2]object 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[1]array 是的
$.oneOf[1]object 是的
$.oneOf[1].RequestUserAliasstring 是的
$.oneOf[1].RequestPathstring | null 是的
$.oneOf[1].RequestStatus = "Failed" 是的
$.oneOf[1].ResponseCodeinteger 是的
$.oneOf[1].ResponseMessageAPIResponseMessage 是的
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[1].ResponseMessage.oneOf[1]array 是的
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[1].ResponseMessage.oneOf[2]object 是的
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[1].RequestImpersonatedByUserAliasstring 否
响应示例
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/sidebar/get_render",
    "RequestUserAlias": "example-user",
    "Payload": {
        "html": "<aside>Example navigation</aside>",
        "state": {
            "activeKey": "synthetic-example",
            "expanded": [],
            "items": [],
            "plans": {
                "sortBy": "upcoming",
                "groupBy": "city",
                "groups": [],
                "hasArchivedPlans": false
            },
            "appMenu": null,
            "mobileHeader": {
                "primary": "search",
                "cta": "post"
            },
            "communitiesSortBy": "latest_post",
            "personalNavigation": {
                "CompleteScopes": [],
                "payload": []
            }
        }
    }
}
机器可读的端点文档
GET

/v1/sidebar/get_state

#
Returns the current state of the v2 sidebar — the same struct that is embedded in window.ATV2ShellState.sidebar at SSR time. Use this when the client needs to re-derive its in-memory model without re-parsing the rendered HTML. Pass the page's currently-active sidebar key as activeNavKey so the server can mark the right item active in the response. The expanded / collapsed submenu set is read server-side from the `atv2_sidebar_expanded` cookie — pass nothing for that.

参数

名称类型必填默认值描述
activeNavKey string 否 "" Current page's active sidebar key (e.g. "network", "market-data", "transactions"). Empty string when the page does not declare one.
请求示例(cURL)
curl --get \
  'https://cn.appointmenttrader.com/v1/sidebar/get_state' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'activeNavKey={{activeNavKey}}'

返回值

JSON
See the shared response schema and synthetic example.
响应字段
字段类型必填描述
$sidebar_get_state_Response 是的
$.oneOf[0] 是的
$.oneOf[0].allOf[0]object 是的
$.oneOf[0].allOf[0].RequestUserAliasstring 是的
$.oneOf[0].allOf[0].RequestPathstring | null 是的
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" 是的
$.oneOf[0].allOf[0].ResponseCodeinteger 是的
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring 否
$.oneOf[0].allOf[1]object 是的
$.oneOf[0].allOf[1].Payloadobject 是的
$.oneOf[0].allOf[1].Payload.activeKeystring 是的
$.oneOf[0].allOf[1].Payload.expanded 是的
$.oneOf[0].allOf[1].Payload.expanded.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.expanded.anyOf[0].*boolean 否
$.oneOf[0].allOf[1].Payload.expanded.anyOf[1]array 是的
$.oneOf[0].allOf[1].Payload.itemsarray 是的
$.oneOf[0].allOf[1].Payload.items[]object 否
$.oneOf[0].allOf[1].Payload.items[].keystring 是的
$.oneOf[0].allOf[1].Payload.items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.items[].iconstring 否
$.oneOf[0].allOf[1].Payload.items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.items[].rolestring 否
$.oneOf[0].allOf[1].Payload.items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.items[].badge.value 否
$.oneOf[0].allOf[1].Payload.items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.items[].todoboolean 否
$.oneOf[0].allOf[1].Payload.items[].hide_when_rightbar_visibleboolean 否
$.oneOf[0].allOf[1].Payload.items[].mobile_headerobject 否
$.oneOf[0].allOf[1].Payload.items[].mobile_header.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.items[].mobile_header.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.items[].sort = "communities" 否
$.oneOf[0].allOf[1].Payload.items[].submenu 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0]object 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].itemsarray 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[]object 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].keystring 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].iconstring 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].rolestring 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.value 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].items[].conditionstring 否Legacy static submenu visibility callback identifier, retained as inert text by ToClientState.
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].persist_when_emptyboolean 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].wrapper_attrsobject 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].wrapper_attrs.*string 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[0].default_expandedboolean 否
$.oneOf[0].allOf[1].Payload.items[].submenu.anyOf[1]null 否
$.oneOf[0].allOf[1].Payload.plans 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].sortBystring ["upcoming","name"] 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groupBy = "city" 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groupsarray 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[]object 否
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].cityCodestring 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].cityNamestring 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].emojistring 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].citySlugstring 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].upcomingCountinteger 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].pastCountinteger 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].upcomingAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].pastAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].upcomingBidsinteger 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].pastBidsinteger 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].upcomingSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].groups[].pastSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].bubblesobject 否
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].bubbles.*integer 否
$.oneOf[0].allOf[1].Payload.plans.anyOf[0].hasArchivedPlansboolean 是的
$.oneOf[0].allOf[1].Payload.plans.anyOf[1]null 是的
$.oneOf[0].allOf[1].Payload.appMenu = null 是的
$.oneOf[0].allOf[1].Payload.mobileHeaderobject 是的
$.oneOf[0].allOf[1].Payload.mobileHeader.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.mobileHeader.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.communitiesSortBystring ["latest_post","name"] 是的
$.oneOf[0].allOf[1].Payload.personalNavigationobject 是的
$.oneOf[0].allOf[1].Payload.personalNavigation.MembershipFingerprintstring 否
$.oneOf[0].allOf[1].Payload.personalNavigation.CompleteScopesarray 是的
$.oneOf[0].allOf[1].Payload.personalNavigation.CompleteScopes[]string ["status","activity"] 否
$.oneOf[0].allOf[1].Payload.personalNavigation.CommunityOrderFingerprintstring 否
$.oneOf[0].allOf[1].Payload.personalNavigation.payloadPersonalNavigationBubbles 是的
$.oneOf[0].allOf[1].Payload.personalNavigation.payload.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.personalNavigation.payload.anyOf[0].* 否
$.oneOf[0].allOf[1].Payload.personalNavigation.payload.anyOf[0].*.anyOf[0]integer 否
$.oneOf[0].allOf[1].Payload.personalNavigation.payload.anyOf[0].*.anyOf[1] = false 否
$.oneOf[0].allOf[1].Payload.personalNavigation.payload.anyOf[0].*.anyOf[2]object 否
$.oneOf[0].allOf[1].Payload.personalNavigation.payload.anyOf[0].*.anyOf[2].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.personalNavigation.payload.anyOf[0].*.anyOf[2].labelstring 是的
$.oneOf[0].allOf[1].Payload.personalNavigation.payload.anyOf[1]array 是的
$.oneOf[1]object 是的
$.oneOf[1].RequestUserAliasstring 是的
$.oneOf[1].RequestPathstring | null 是的
$.oneOf[1].RequestStatus = "Failed" 是的
$.oneOf[1].ResponseCodeinteger 是的
$.oneOf[1].ResponseMessageAPIResponseMessage 是的
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[1].ResponseMessage.oneOf[1]array 是的
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[1].ResponseMessage.oneOf[2]object 是的
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[1].RequestImpersonatedByUserAliasstring 否
响应示例
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/sidebar/get_state",
    "RequestUserAlias": "example-user",
    "Payload": {
        "activeKey": "synthetic-example",
        "expanded": [],
        "items": [],
        "plans": {
            "sortBy": "upcoming",
            "groupBy": "city",
            "groups": [],
            "hasArchivedPlans": false
        },
        "appMenu": null,
        "mobileHeader": {
            "primary": "search",
            "cta": "post"
        },
        "communitiesSortBy": "latest_post",
        "personalNavigation": {
            "CompleteScopes": [],
            "payload": []
        }
    }
}
机器可读的端点文档
POST

/v1/sidebar/set_communities_view

#
Persist the personal community list sort without changing My Bookings. Authenticated users only; writes the sidebar preference cookie.

参数

名称类型必填默认值描述
sortBy string 是的 — "latest_post" (default) or "name".
activeNavKey string 否 "" Current sidebar key.
theme string 否 "upscale_at" Sidebar theme.
isWritingRequest bool 否 false Set true to save the preference.
请求示例(cURL)
curl --request POST \
  'https://cn.appointmenttrader.com/v1/sidebar/set_communities_view' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sortBy={{sortBy}}' \
  --data-urlencode 'activeNavKey={{activeNavKey}}' \
  --data-urlencode 'theme={{theme}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

返回值

JSON
See the shared response schema and synthetic example.
响应字段
字段类型必填描述
$sidebar_set_communities_view_Response 是的
$.oneOf[0] 是的
$.oneOf[0].allOf[0]object 是的
$.oneOf[0].allOf[0].RequestUserAliasstring 是的
$.oneOf[0].allOf[0].RequestPathstring | null 是的
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" 是的
$.oneOf[0].allOf[0].ResponseCodeinteger 是的
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring 否
$.oneOf[0].allOf[1]object 是的
$.oneOf[0].allOf[1].Payloadobject 是的
$.oneOf[0].allOf[1].Payload.htmlstring 是的
$.oneOf[0].allOf[1].Payload.stateobject 是的
$.oneOf[0].allOf[1].Payload.state.activeKeystring 是的
$.oneOf[0].allOf[1].Payload.state.expanded 是的
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[0].*boolean 否
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[1]array 是的
$.oneOf[0].allOf[1].Payload.state.itemsarray 是的
$.oneOf[0].allOf[1].Payload.state.items[]object 否
$.oneOf[0].allOf[1].Payload.state.items[].keystring 是的
$.oneOf[0].allOf[1].Payload.state.items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].iconstring 否
$.oneOf[0].allOf[1].Payload.state.items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.state.items[].rolestring 否
$.oneOf[0].allOf[1].Payload.state.items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].todoboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].hide_when_rightbar_visibleboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].mobile_headerobject 否
$.oneOf[0].allOf[1].Payload.state.items[].mobile_header.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].mobile_header.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].sort = "communities" 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].itemsarray 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].keystring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].iconstring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].rolestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].conditionstring 否Legacy static submenu visibility callback identifier, retained as inert text by ToClientState.
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].persist_when_emptyboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].wrapper_attrsobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].wrapper_attrs.*string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].default_expandedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[1]null 否
$.oneOf[0].allOf[1].Payload.state.plans 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].sortBystring ["upcoming","name"] 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupBy = "city" 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupsarray 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[]object 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityCodestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityNamestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].emojistring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].citySlugstring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubblesobject 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubbles.*integer 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].hasArchivedPlansboolean 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[1]null 是的
$.oneOf[0].allOf[1].Payload.state.appMenu = null 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeaderobject 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeader.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeader.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.state.communitiesSortBystring ["latest_post","name"] 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigationobject 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.MembershipFingerprintstring 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CompleteScopesarray 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CompleteScopes[]string ["status","activity"] 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CommunityOrderFingerprintstring 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payloadPersonalNavigationBubbles 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].* 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[0]integer 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[1] = false 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2]object 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[1]array 是的
$.oneOf[1]object 是的
$.oneOf[1].RequestUserAliasstring 是的
$.oneOf[1].RequestPathstring | null 是的
$.oneOf[1].RequestStatus = "Failed" 是的
$.oneOf[1].ResponseCodeinteger 是的
$.oneOf[1].ResponseMessageAPIResponseMessage 是的
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[1].ResponseMessage.oneOf[1]array 是的
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[1].ResponseMessage.oneOf[2]object 是的
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[1].RequestImpersonatedByUserAliasstring 否
响应示例
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/sidebar/set_communities_view",
    "RequestUserAlias": "example-user",
    "Payload": {
        "html": "<aside>Example navigation</aside>",
        "state": {
            "activeKey": "synthetic-example",
            "expanded": [],
            "items": [],
            "plans": {
                "sortBy": "upcoming",
                "groupBy": "city",
                "groups": [],
                "hasArchivedPlans": false
            },
            "appMenu": null,
            "mobileHeader": {
                "primary": "search",
                "cta": "post"
            },
            "communitiesSortBy": "latest_post",
            "personalNavigation": {
                "CompleteScopes": [],
                "payload": []
            }
        }
    }
}
机器可读的端点文档
POST

/v1/sidebar/set_expanded

#
Toggle the expand/collapse state of a top-level submenu and persist the choice to the user's `atv2_sidebar_expanded` cookie. Returns the post-mutation {html, state} so the client can swap the rendered nav block. The cookie is the source of truth for SSR re-renders. The shared browser runtime writes this same cookie directly; this endpoint remains available for API clients that need the cookie and rendered response together.

参数

名称类型必填默认值描述
itemKey string 是的 — Submenu key (must match a sidebar item's key). Named `itemKey` rather than `key` to avoid colliding with the apiv1 dispatcher's reserved `key=` auth parameter.
expanded bool 是的 — True to expand, false to collapse.
activeNavKey string 否 "" Current page's active sidebar key.
theme string 否 "upscale_at" Theme name; defaults to "upscale_at".
isWritingRequest bool 否 false Set true to actually write the cookie.
请求示例(cURL)
curl --request POST \
  'https://cn.appointmenttrader.com/v1/sidebar/set_expanded' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'itemKey={{itemKey}}' \
  --data-urlencode 'expanded={{expanded}}' \
  --data-urlencode 'activeNavKey={{activeNavKey}}' \
  --data-urlencode 'theme={{theme}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

返回值

JSON
See the shared response schema and synthetic example.
响应字段
字段类型必填描述
$sidebar_set_expanded_Response 是的
$.oneOf[0] 是的
$.oneOf[0].allOf[0]object 是的
$.oneOf[0].allOf[0].RequestUserAliasstring 是的
$.oneOf[0].allOf[0].RequestPathstring | null 是的
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" 是的
$.oneOf[0].allOf[0].ResponseCodeinteger 是的
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring 否
$.oneOf[0].allOf[1]object 是的
$.oneOf[0].allOf[1].Payloadobject 是的
$.oneOf[0].allOf[1].Payload.htmlstring 是的
$.oneOf[0].allOf[1].Payload.stateobject 是的
$.oneOf[0].allOf[1].Payload.state.activeKeystring 是的
$.oneOf[0].allOf[1].Payload.state.expanded 是的
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[0].*boolean 否
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[1]array 是的
$.oneOf[0].allOf[1].Payload.state.itemsarray 是的
$.oneOf[0].allOf[1].Payload.state.items[]object 否
$.oneOf[0].allOf[1].Payload.state.items[].keystring 是的
$.oneOf[0].allOf[1].Payload.state.items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].iconstring 否
$.oneOf[0].allOf[1].Payload.state.items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.state.items[].rolestring 否
$.oneOf[0].allOf[1].Payload.state.items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].todoboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].hide_when_rightbar_visibleboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].mobile_headerobject 否
$.oneOf[0].allOf[1].Payload.state.items[].mobile_header.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].mobile_header.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].sort = "communities" 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].itemsarray 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].keystring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].iconstring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].rolestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].conditionstring 否Legacy static submenu visibility callback identifier, retained as inert text by ToClientState.
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].persist_when_emptyboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].wrapper_attrsobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].wrapper_attrs.*string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].default_expandedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[1]null 否
$.oneOf[0].allOf[1].Payload.state.plans 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].sortBystring ["upcoming","name"] 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupBy = "city" 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupsarray 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[]object 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityCodestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityNamestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].emojistring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].citySlugstring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubblesobject 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubbles.*integer 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].hasArchivedPlansboolean 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[1]null 是的
$.oneOf[0].allOf[1].Payload.state.appMenu = null 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeaderobject 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeader.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeader.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.state.communitiesSortBystring ["latest_post","name"] 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigationobject 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.MembershipFingerprintstring 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CompleteScopesarray 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CompleteScopes[]string ["status","activity"] 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CommunityOrderFingerprintstring 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payloadPersonalNavigationBubbles 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].* 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[0]integer 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[1] = false 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2]object 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[1]array 是的
$.oneOf[1]object 是的
$.oneOf[1].RequestUserAliasstring 是的
$.oneOf[1].RequestPathstring | null 是的
$.oneOf[1].RequestStatus = "Failed" 是的
$.oneOf[1].ResponseCodeinteger 是的
$.oneOf[1].ResponseMessageAPIResponseMessage 是的
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[1].ResponseMessage.oneOf[1]array 是的
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[1].ResponseMessage.oneOf[2]object 是的
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[1].RequestImpersonatedByUserAliasstring 否
响应示例
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/sidebar/set_expanded",
    "RequestUserAlias": "example-user",
    "Payload": {
        "html": "<aside>Example navigation</aside>",
        "state": {
            "activeKey": "synthetic-example",
            "expanded": [],
            "items": [],
            "plans": {
                "sortBy": "upcoming",
                "groupBy": "city",
                "groups": [],
                "hasArchivedPlans": false
            },
            "appMenu": null,
            "mobileHeader": {
                "primary": "search",
                "cta": "post"
            },
            "communitiesSortBy": "latest_post",
            "personalNavigation": {
                "CompleteScopes": [],
                "payload": []
            }
        }
    }
}
机器可读的端点文档
POST

/v1/sidebar/set_plans_view

#
Persist the user's preferred sort mode for the v2 sidebar's "Your Plans" block (city-grouped appointments). The choice is written to the `atv2_sidebar_plans_view` cookie so subsequent SSR renders pick it up; the response carries the freshly-rendered {html, state} so the client can swap the rendered nav + plans without a follow-up.

参数

名称类型必填默认值描述
sortBy string 是的 — Sort mode: "upcoming" (most upcoming first; default) or "name" (alphabetical city name).
activeNavKey string 否 "" Current page's active sidebar key.
theme string 否 "upscale_at" Theme name; defaults to "upscale_at".
isWritingRequest bool 否 false Set true to actually write the cookie.
请求示例(cURL)
curl --request POST \
  'https://cn.appointmenttrader.com/v1/sidebar/set_plans_view' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sortBy={{sortBy}}' \
  --data-urlencode 'activeNavKey={{activeNavKey}}' \
  --data-urlencode 'theme={{theme}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

返回值

JSON
See the shared response schema and synthetic example.
响应字段
字段类型必填描述
$sidebar_set_plans_view_Response 是的
$.oneOf[0] 是的
$.oneOf[0].allOf[0]object 是的
$.oneOf[0].allOf[0].RequestUserAliasstring 是的
$.oneOf[0].allOf[0].RequestPathstring | null 是的
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" 是的
$.oneOf[0].allOf[0].ResponseCodeinteger 是的
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object 是的
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring 否
$.oneOf[0].allOf[1]object 是的
$.oneOf[0].allOf[1].Payloadobject 是的
$.oneOf[0].allOf[1].Payload.htmlstring 是的
$.oneOf[0].allOf[1].Payload.stateobject 是的
$.oneOf[0].allOf[1].Payload.state.activeKeystring 是的
$.oneOf[0].allOf[1].Payload.state.expanded 是的
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[0].*boolean 否
$.oneOf[0].allOf[1].Payload.state.expanded.anyOf[1]array 是的
$.oneOf[0].allOf[1].Payload.state.itemsarray 是的
$.oneOf[0].allOf[1].Payload.state.items[]object 否
$.oneOf[0].allOf[1].Payload.state.items[].keystring 是的
$.oneOf[0].allOf[1].Payload.state.items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].iconstring 否
$.oneOf[0].allOf[1].Payload.state.items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.state.items[].rolestring 否
$.oneOf[0].allOf[1].Payload.state.items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].todoboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].hide_when_rightbar_visibleboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].mobile_headerobject 否
$.oneOf[0].allOf[1].Payload.state.items[].mobile_header.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].mobile_header.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].sort = "communities" 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].itemsarray 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].keystring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].label_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].iconstring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].hrefstring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].rolestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badgeobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.typestring ["count","money","icon","dot","status"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.bubble_keystring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[0]string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[1]number 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[2]boolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3]object 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.value.anyOf[3].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.tonestring 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].status_badge.guidanceboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].activeboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].bookmark_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].bookmark_post_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].unfollow_board_idinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].is_pinnedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].pin_sort_orderinteger 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].items[].conditionstring 否Legacy static submenu visibility callback identifier, retained as inert text by ToClientState.
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].persist_when_emptyboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].wrapper_attrsobject 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].wrapper_attrs.*string 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[0].default_expandedboolean 否
$.oneOf[0].allOf[1].Payload.state.items[].submenu.anyOf[1]null 否
$.oneOf[0].allOf[1].Payload.state.plans 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].sortBystring ["upcoming","name"] 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupBy = "city" 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groupsarray 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[]object 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityCodestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].cityNamestring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].emojistring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].citySlugstring 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastCountinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastAppointmentsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastBidsinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].upcomingSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].groups[].pastSoldSalesinteger 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubblesobject 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].bubbles.*integer 否
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[0].hasArchivedPlansboolean 是的
$.oneOf[0].allOf[1].Payload.state.plans.anyOf[1]null 是的
$.oneOf[0].allOf[1].Payload.state.appMenu = null 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeaderobject 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeader.primarystring ["search","ticker","title","brand"] 是的
$.oneOf[0].allOf[1].Payload.state.mobileHeader.ctastring ["post","search-icon","none"] 是的
$.oneOf[0].allOf[1].Payload.state.communitiesSortBystring ["latest_post","name"] 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigationobject 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.MembershipFingerprintstring 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CompleteScopesarray 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CompleteScopes[]string ["status","activity"] 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.CommunityOrderFingerprintstring 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payloadPersonalNavigationBubbles 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0]object 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].* 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[0]integer 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[1] = false 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2]object 否
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2].codestring ["pending","answer-required"] 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[0].*.anyOf[2].labelstring 是的
$.oneOf[0].allOf[1].Payload.state.personalNavigation.payload.anyOf[1]array 是的
$.oneOf[1]object 是的
$.oneOf[1].RequestUserAliasstring 是的
$.oneOf[1].RequestPathstring | null 是的
$.oneOf[1].RequestStatus = "Failed" 是的
$.oneOf[1].ResponseCodeinteger 是的
$.oneOf[1].ResponseMessageAPIResponseMessage 是的
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null 是的
$.oneOf[1].ResponseMessage.oneOf[1]array 是的
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage 否
$.oneOf[1].ResponseMessage.oneOf[2]object 是的
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage 否
$.oneOf[1].RequestImpersonatedByUserAliasstring 否
响应示例
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/sidebar/set_plans_view",
    "RequestUserAlias": "example-user",
    "Payload": {
        "html": "<aside>Example navigation</aside>",
        "state": {
            "activeKey": "synthetic-example",
            "expanded": [],
            "items": [],
            "plans": {
                "sortBy": "upcoming",
                "groupBy": "city",
                "groups": [],
                "hasArchivedPlans": false
            },
            "appMenu": null,
            "mobileHeader": {
                "primary": "search",
                "cta": "post"
            },
            "communitiesSortBy": "latest_post",
            "personalNavigation": {
                "CompleteScopes": [],
                "payload": []
            }
        }
    }
}
机器可读的端点文档