I have found that the FreeMarker context objects that refer to community data often correlate with API v1, so for your example, you are looking at a thread, look at a thread object here for example:
https://community.khoros.com/restapi/v1/boards/id/technology/threads?restapi.response_format=json
here's an extract of the v1 response:
"threads": {
"thread": [
{
"type": "thread",
"href": "/threads/id/729728",
"messages": {},
"solutions": {},
"title": {},
"board": {
"type": "board",
"href": "/boards/id/technology"
},
"id": {
"type": "int",
"$": 729728
},
"interaction_style": {
"type": "string",
"$": "board"
}
},
...more thread objects
}
notice that "board" part?
"board": {
"type": "board",
"href": "/boards/id/technology"
},
So the first thing i would try is to access properties available in the API v1 response, in your case page.context.thread.board.@href (don't be fooled by the JSON format it can be misleading as the real format is actually XML, @ stands for "attribute" as in an XML attribute, see the "real" v1 data by removing that URL parameter ?restapi.response_format=json from the query link above). Both type and href here are attributes, the actual XML values are identified by the "$" property when viewing it as JSON...
ah well, why describe it when i can simply show the real XML 😃
<board type="board" href="/boards/id/technology"/>
So as tempting as it seems, I think that thread context object probably does not contain anything useful but the "href" attribute (which you could use to make further API v1 queries, which is definitely not the recommended way...).
The next thing you can try is to query a board via API v1 and see what other properties a board has and try to access those through the context object, here is a full board API v1 response:
{
"response": {
"status": "success",
"board": {
"type": "board",
"href": "\\/boards\\/id\\/technology",
"interaction_style": {
"type": "string",
"$": "board"
},
"blog": {
"type": "boolean",
"$": false
},
"user_created": {
"type": "boolean",
"$": false
},
"owner": {
"type": "user",
"null": true,
"$": null
},
"id": {
"type": "string",
"$": "technology"
},
"short_title": {
"type": "string",
"$": "Communities Product Discussions"
},
"title": {
"type": "string",
"$": "Khoros Community Product Discussions"
},
"description": {
"type": "string",
"$": "Have questions about the Khoros Community product? Ask them here."
}
}
}
}
So even if the thread context object's board property contains all of the above, none of it would give you the data you want (Kudos).
Useful data you can probably access through the context object are
board.id
board.title
board.short_title
board.description
board.interaction_style
but not much beyond that...
note that this is all speculation as i don't have time to dig through old component code where i certainly used this "hidden" (it's not so hidden =D)/undocumented part of the context object.