Skip to content

Controlling what's public

Your takuhon.json is the complete record. What actually reaches a public reader — the profile page, the API, JSON-LD, the MCP endpoint, the exported CV — is decided by three independent layers in settings and meta. A value is public only when all the layers that apply to it allow it (logical AND), and the same projection runs on every surface, so they always agree.

1. Feature toggles — turn whole capabilities on or off

Section titled “1. Feature toggles — turn whole capabilities on or off”

settings.enable* switches entire features:

SettingDefaultEffect
enableJsonLdtrueEmit Schema.org JSON-LD on the page.
enableApitrueExpose the public read API endpoints.
enableAnalyticsfalseOpt-in first-party analytics.

2. Section visibility — hide whole sections

Section titled “2. Section visibility — hide whole sections”

settings.publicVisibility (added in schema 0.6.0) lets you hide an entire content section. Each key is a section name; setting it to false removes that section from every public surface:

{
"settings": {
"publicVisibility": {
"education": false,
"recommendations": false
}
}
}
  • Default is all-visible. An absent key — or an absent publicVisibility block — means the section is public, so older profiles are unaffected.
  • The 16 sections you can toggle are links, careers, projects, skills, certifications, memberships, volunteering, honors, education, publications, languages, courses, patents, testScores, recommendations, and contact.
  • Your profile identity (profile.displayName, avatar, tagline, …) is always public and is intentionally not a toggle. To take a whole profile offline, don’t deploy it (or turn the API off).

3. Field-level controls — hide specific fields

Section titled “3. Field-level controls — hide specific fields”

Within a visible section, individual fields stay governed by their own flags:

ControlDefaultEffect
contact.showEmailfalseEmail is hidden unless explicitly set to true.
meta.privacy.hideCredentialIdstrueStrips certifications[*].credentialId.
meta.privacy.hideEducationGradestrueStrips education[*].grade.

Hiding a whole section (layer 2) supersedes its field checks; a visible section still honors these field flags.

These controls are applied by a single projection in @takuhon/core, so the profile page, /api/profile, /api/jsonld, /takuhon.json, the MCP endpoint, and the derived CV all expose exactly the same content. The admin editor exposes all three layers as form controls, including a checkbox per section under Public sections.

For every field and its constraints, see the schema reference.