Skip to content

Schema reference

This page documents every field of the takuhon.json schema: each section, its type, whether it is required, its constraints, and what it is for. For a gentler introduction to the document as a whole, see The takuhon.json file.

The tables below are generated from the canonical schema (version 1.4.0). Field descriptions are reproduced verbatim from the schema, which is maintained in English as the canonical contract.

FieldTypeRequiredConstraintsDescription
schemaVersionstringYespattern ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.-]+)?$Semantic version of the takuhon schema this document conforms to.
profileProfileYes
linksarray of LinkNo≤ 100 items
careersarray of CareerNo≤ 50 items
projectsarray of ProjectNo≤ 100 items
skillsarray of SkillNo≤ 200 items
certificationsarray of CertificationNo≤ 50 items
membershipsarray of MembershipNo≤ 50 items
volunteeringarray of VolunteeringNo≤ 50 items
honorsarray of HonorNo≤ 50 items
educationarray of EducationNo≤ 30 items
publicationsarray of PublicationNo≤ 100 items
languagesarray of LanguageNo≤ 30 items
coursesarray of CourseNo≤ 100 items
patentsarray of PatentNo≤ 50 items
testScoresarray of TestScoreNo≤ 30 items
recommendationsarray of RecommendationNo≤ 50 items
highlightsarray of HighlightNo≤ 50 items
contactContactYes
settingsSettingsYes
metaMetaYes

No additional properties beyond those listed.

BCP-47 language tag (e.g., ‘en’, ‘ja’, ‘zh-Hant’, ‘pt-BR’).

  • Type: string
  • Constraints: pattern ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$; 2–35 chars

ISO 3166-1 alpha-2 country code (uppercase, two letters).

  • Type: string
  • Constraints: pattern ^[A-Z]{2}$

Year-month in ‘YYYY-MM’ format (Gregorian calendar).

  • Type: string
  • Constraints: pattern ^[0-9]{4}-(0[1-9]|1[0-2])$

ISO 8601 date-time (e.g., 2026-05-11T12:34:56Z).

  • Type: string
  • Constraints: format date-time
  • Type: string
  • Constraints: format uri; ≤ 2048 chars
  • Type: string
  • Constraints: format email; ≤ 254 chars

URL-safe identifier (lowercase alphanumerics and hyphens, must start with alphanumeric).

  • Type: string
  • Constraints: pattern ^[a-z0-9][a-z0-9-]*$; 1–64 chars

Per-item public visibility (added in 0.7.0). ‘private’ removes the item from every public surface via applyPublicPrivacyFilter; an absent value or ‘public’ keeps the item public.

  • Type: string
  • Constraints: one of: public, private

Map of BCP-47 locale tag to short title-like string (max 200 chars per value). Each value must contain at least one non-whitespace character.

  • Type: object (map)
  • Keys: pattern ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$
  • Values: string (pattern \S; 1–200 chars)
  • Constraints: at least 1 entry

Map of BCP-47 locale tag to body-length string (max 5000 chars per value). Each value must contain at least one non-whitespace character.

  • Type: object (map)
  • Keys: pattern ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$
  • Values: string (pattern \S; 1–5000 chars)
  • Constraints: at least 1 entry

Identifies the kind of link. ‘custom’ requires iconUrl.

  • Type: string
  • Constraints: one of: website, blog, github, gitlab, linkedin, x, mastodon, bluesky, instagram, youtube, threads, facebook, email, rss, custom
FieldTypeRequiredConstraintsDescription
displayNameLocalizedTitleYes
taglineLocalizedTitleNo
bioLocalizedBodyNo
avatarAvatarNo
locationAddressNo

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
urlstringYesformat uri-reference; ≤ 2048 charsURL or path to the avatar image.
altLocalizedTitleNo

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
countryIso3166Alpha2No
regionstringNo≤ 100 chars
localityLocalizedTitleNo
displayLocalizedTitleNo

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
typeLinkTypeYes
labelLocalizedTitleNo
urlUrlYes
featuredbooleanNo
orderintegerNo≥ 0
iconUrlUrlNo

If type is custom, then iconUrl must be set. No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
organizationLocalizedTitleYes
roleLocalizedTitleYes
descriptionLocalizedBodyNo
startDateYearMonthYes
endDateYearMonth or nullNo
isCurrentbooleanNo
urlUrlNo
locationAddressNo
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
titleLocalizedTitleYes
roleLocalizedTitleNoThe owner’s role/relationship on this project (added in 1.4.0), e.g. “Author & lead maintainer”, “Contributor”, “Product owner”. Rendered as a short line under the project title. Localized, like the section-entry roles in Career/Membership/Volunteering.
descriptionLocalizedBodyNo
urlUrlNo
tagsarray of stringNo≤ 30 items; items: 1–50 chars
relatedCareerIdSlugNo
startDateYearMonthNo
endDateYearMonth or nullNo
highlightedbooleanNo
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
labelstring or LocalizedTitleYesSkill name. A plain string is locale-independent; a localized map (added in 1.4.0) resolves per request locale. Existing single-string labels stay valid — the map form is purely additive.
categorystringNo1–64 charsRecommended values (extensible): programming, design, business, communication, language, music, art, sports, other.
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idstringYes1–64 charsMatches the category value on the skills that belong to this group.
labelLocalizedTitleYesLocalized display heading for the group.

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
emailEmailNo
showEmailbooleanNodefault false
formUrlUrlNo

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
defaultLocaleLocaleTagYes
fallbackLocaleLocaleTagNo
availableLocalesarray of LocaleTagYes1–50 items; unique items
themestringNo1–64 charsUI theme identifier. ‘default’ is the built-in theme; adapters may add more.
showPoweredBybooleanNodefault trueDisplay the ‘Powered by takuhon’ attribution in the rendered profile.
enableJsonLdbooleanNodefault trueEmit Schema.org JSON-LD on the rendered profile page.
enableApibooleanNodefault trueExpose the public read API endpoints (GET /api/profile, /api/jsonld, /api/schema, /takuhon.json).
enableAnalyticsbooleanNodefault falseOpt-in flag for first-party analytics. Default is false to keep takuhon privacy-respecting by default.
activityActivitySettingsNo
publicVisibilityPublicVisibilityNo
contactContactSettingsNo
appearanceAppearanceSettingsNo
skillCategoriesarray of SkillCategoryNo≤ 50 itemsOrdered skill-category display groups (added in 1.3.0). When present, the rendered profile groups skills by their category under these localized headings, in array order; absent = the flat skill list. A skill whose category is not listed here (or which has none) renders in a trailing group so nothing is dropped.
sectionOrderarray of anyNo≤ 18 items; unique items; items: one of: about, careers, projects, volunteering, skills, activity, education, certifications, publications, honors, memberships, courses, patents, testScores, languages, recommendations, highlights, contactExplicit section display order (added in 1.4.0). A partial list is allowed — any renderable section not named here follows, in the default order. Absent = the default order.
sectionLabelsSectionLabelOverridesNo
highlightsIntroLocalizedTitleNoOptional localized intro line shown under the highlights section heading (added in 1.4.0). Absent = no intro line.

No additional properties beyond those listed.

Localized overrides for section headings and chrome labels (added in 1.4.0). Each present key retitles that label; the renderer merges these over its built-in locale pack. Absent keys keep the built-in label.

FieldTypeRequiredConstraintsDescription
aboutLocalizedTitleNo
careersLocalizedTitleNo
projectsLocalizedTitleNo
volunteeringLocalizedTitleNo
skillsLocalizedTitleNo
activityLocalizedTitleNo
educationLocalizedTitleNo
certificationsLocalizedTitleNo
publicationsLocalizedTitleNo
honorsLocalizedTitleNo
membershipsLocalizedTitleNo
coursesLocalizedTitleNo
patentsLocalizedTitleNo
testScoresLocalizedTitleNo
languagesLocalizedTitleNo
recommendationsLocalizedTitleNo
highlightsLocalizedTitleNo
contactLocalizedTitleNo
skipLinkLocalizedTitleNo
localeNavLocalizedTitleNo
featuredLinksLocalizedTitleNo
otherLinksLocalizedTitleNo
poweredByLocalizedTitleNo

No additional properties beyond those listed.

Opt-in design tokens for the rendered profile (added in 1.2.0). A declarative re-skin seam: owners override the standard renderer’s built-in color and font defaults. This is a token map only, not arbitrary CSS — every value is length- and pattern-constrained so it cannot break out of the inline

FieldTypeRequiredConstraintsDescription
fontFamilystringNopattern ^[A-Za-z0-9\s,'"._-]+$; 1–256 charsCSS font-family stack for the page body, e.g. “Inter, system-ui, sans-serif”. Quotes and commas are allowed; CSS-structural characters (; { } < >) are not.
colorsAppearanceColorsNoLight-mode (:root) color overrides.
colorsDarkAppearanceColorsNoDark-mode (prefers-color-scheme: dark) color overrides. Note: until the standard renderer ships a default dark palette, only the keys set here change in dark mode.

No additional properties beyond those listed.

A set of overridable color tokens. Each value is a CSS color (hex, rgb()/rgba(), hsl()/hsla(), or a named color); CSS-structural characters (; { } < > ” ’ ) are disallowed so a value cannot escape the inline

FieldTypeRequiredConstraintsDescription
bgCssColorNoPage background.
surfaceCssColorNoRaised surfaces such as skill/tag chips.
textCssColorNoPrimary body text.
textMutedCssColorNoSecondary/muted text (taglines, meta, captions).
borderCssColorNoHairline borders and rules.
accentCssColorNoAccent color for emphasis and focus affordances.
primaryCssColorNoPrimary interactive color, e.g. links.
primaryContrastCssColorNoForeground color used on top of the primary color.
headingCssColorNoHeading color for the “About” section’s Markdown sub-headings (##/###).

No additional properties beyond those listed.

A CSS color value, restricted to a safe allowlist: a hex color (#rgb/#rgba/#rrggbb/#rrggbbaa), a bare keyword (named colors, currentColor, transparent), or a color function (rgb/rgba/hsl/hsla/hwb/lab/lch/oklab/oklch/color). url(), image-set(), var(), and other fetch- or reference-bearing functions are intentionally excluded so a value can never trigger an external request or escape the inline

  • Type: string
  • Constraints: pattern ^(?:#[0-9A-Fa-f]{3,8}|[A-Za-z]+|(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color)\([A-Za-z0-9.,%/\s-]*\))$; 1–64 chars

Opt-in contact form configuration (added in 1.1.0). Only public values live here; the Turnstile site key is safe to embed in the page. The Turnstile secret, the recipient address, and the From label are provisioned out of band as environment configuration and are never stored in takuhon.json. Adapters that support the form mount the widget and a POST endpoint when ‘enabled’ is true.

FieldTypeRequiredConstraintsDescription
enabledbooleanNodefault falseMaster switch. When false (the default), no contact form is mounted even if a site key is present.
turnstileSiteKeystringNo1–128 charsPublic Cloudflare Turnstile site key, safe to embed in the page. Without it the widget is not mounted.
endpointstringNo1–2048 charsOverride the POST endpoint the widget submits to. Defaults to /api/contact on the same origin.
subjectPrefixstringNo1–128 charsSubject prefix for the delivered email, e.g. ‘[example.com contact]’.

No additional properties beyond those listed.

Per-section public visibility (added in 0.6.0). Each key is a content section; setting it to false hides that whole section from every public surface (GET /, /api/profile, /api/jsonld, /takuhon.json, MCP, and the derived CV) via the shared applyPublicPrivacyFilter. An absent key — or an absent object — means the section is public, so the default is all-visible and omitting this block is fully backwards-compatible. The profile identity (profile.displayName, …) is always public and is intentionally not a key here. Field-level controls (contact.showEmail, meta.privacy.*) still apply within a visible section: visibility is the AND of the feature toggle, this section flag, and the field flag.

FieldTypeRequiredConstraintsDescription
linksbooleanNoDefault true. When false, links[] is emitted empty on public surfaces.
careersbooleanNoDefault true. When false, careers[] is emitted empty on public surfaces.
projectsbooleanNoDefault true. When false, projects[] is emitted empty on public surfaces.
skillsbooleanNoDefault true. When false, skills[] is emitted empty on public surfaces.
certificationsbooleanNoDefault true. When false, certifications[] is emitted empty on public surfaces.
membershipsbooleanNoDefault true. When false, memberships[] is emitted empty on public surfaces.
volunteeringbooleanNoDefault true. When false, volunteering[] is emitted empty on public surfaces.
honorsbooleanNoDefault true. When false, honors[] is emitted empty on public surfaces.
educationbooleanNoDefault true. When false, education[] is emitted empty on public surfaces.
publicationsbooleanNoDefault true. When false, publications[] is emitted empty on public surfaces.
languagesbooleanNoDefault true. When false, languages[] is emitted empty on public surfaces.
coursesbooleanNoDefault true. When false, courses[] is emitted empty on public surfaces.
patentsbooleanNoDefault true. When false, patents[] is emitted empty on public surfaces.
testScoresbooleanNoDefault true. When false, testScores[] is emitted empty on public surfaces.
recommendationsbooleanNoDefault true. When false, recommendations[] is emitted empty on public surfaces.
highlightsbooleanNoDefault true. When false, highlights[] is emitted empty on public surfaces.
contactbooleanNoDefault true. When false, the contact section (email, formUrl) is emitted empty on public surfaces.

No additional properties beyond those listed.

Opt-in developer-activity dashboard configuration (GitHub / WakaTime). Only the owner-curated settings live here; secrets are provisioned out of band and the synced metrics are stored in a separate document, never in takuhon.json.

FieldTypeRequiredConstraintsDescription
enabledbooleanNodefault falseMaster switch. When false (the default), the activity section is not rendered even if a snapshot exists.
githubobjectNo
wakatimeobjectNo
showRankbooleanNodefault trueDisplay the derived activity rank / badge.
refreshHintHoursintegerNo1–168Advisory refresh cadence in hours. The real cadence is how often the sync step (CLI command or scheduled job) runs.

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
usernamestringYes1–39 charsGitHub login whose public activity is summarized.
showLanguagesbooleanNodefault true
showContributionsbooleanNodefault true

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
usernamestringYes1–255 charsWakaTime username whose coding-time stats are summarized.
showCodingTimebooleanNodefault true

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
createdAtIsoDateTimeNo
updatedAtIsoDateTimeNo
generatorstringNo1–100 charsTool that produced this document (e.g. ‘Takuhon’, ‘create-takuhon@0.1.0’).
contentLicenseContentLicenseYes
privacyMetaPrivacyNo

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
spdxIdstringYes1–64 charsSPDX identifier (e.g., ‘CC-BY-4.0’, ‘CC0-1.0’) or ‘Proprietary’. No default; the profile owner must choose explicitly.
urlUrlNo
attributionobjectNo
rightsstringNo1–1000 charsFree-form rights statement (used when spdxId=‘Proprietary’ or for additional notices).

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
namestringNo1–200 chars
urlUrlNo

No additional properties beyond those listed.

Opt-out flags that strip personally identifying fields from public API output (GET /api/profile, /api/jsonld, /takuhon.json). Admin endpoints (PUT /api/admin/*, GET /api/admin/export) ignore these flags. Privacy-by-default: omitting the object or individual flags is equivalent to true.

FieldTypeRequiredConstraintsDescription
hideCredentialIdsbooleanNodefault trueWhen true (default), strip certifications[*].credentialId from public responses.
hideEducationGradesbooleanNodefault trueWhen true (default), strip education[*].grade from public responses.

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
titleLocalizedTitleYes
issuingOrganizationLocalizedTitleYes
issueDateYearMonthYes
expirationDateYearMonth or nullNonull = explicitly ‘no expiration’. Omit if unknown/unstated.
credentialIdstringNo1–100 charsLicense or certificate number. Public exposure controlled by meta.privacy.hideCredentialIds.
urlUrlNo
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
organizationLocalizedTitleYes
roleLocalizedTitleNo
descriptionLocalizedBodyNo
startDateYearMonthYes
endDateYearMonth or nullNonull = ongoing. Omit if unknown.
isCurrentbooleanNo
urlUrlNo
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
organizationLocalizedTitleYes
roleLocalizedTitleYes
causeLocalizedTitleNo
descriptionLocalizedBodyNo
startDateYearMonthYes
endDateYearMonth or nullNo
isCurrentbooleanNo
urlUrlNo
secondaryLinkSecondaryLinkNoAn optional second link for this entry (added in 1.4.0), rendered as a small pill beside the description — e.g. the organization’s GitHub org page next to its main site. The brand glyph is resolved from the URL host; no vendor name is hard-coded.
orderintegerNo≥ 0

No additional properties beyond those listed.

A supplementary link with an optional localized label (added in 1.4.0). When the label is absent the renderer shows the URL host. The brand glyph is resolved from the URL host.

FieldTypeRequiredConstraintsDescription
urlUrlYesThe link target.
labelLocalizedTitleNoLocalized display label. When absent, the renderer derives a label from the URL host.

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
titleLocalizedTitleYes
issuerLocalizedTitleYes
descriptionLocalizedBodyNo
dateYearMonthYes
urlUrlNo
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
institutionLocalizedTitleYes
degreeLocalizedTitleNo
fieldOfStudyLocalizedTitleNo
descriptionLocalizedBodyNo
gradestringNo1–50 charsFree-form grade / class / GPA. Public exposure controlled by meta.privacy.hideEducationGrades.
startDateYearMonthYes
endDateYearMonth or nullNonull = currently enrolled.
isCurrentbooleanNo
urlUrlNo
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
titleLocalizedTitleYes
publisherLocalizedTitleNo
descriptionLocalizedBodyNo
dateYearMonthYes
urlUrlNo
doistringNo1–200 charsDOI identifier (e.g. ‘10.1145/3548643.3548644’). The full URL goes in ‘url’.
coAuthorsarray of stringNo≤ 50 items; items: 1–100 charsCo-author names in original script. Excludes the profile owner.
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
languageLocaleTagYes
displayNameLocalizedTitleNo
proficiencystringYesone of: native, fluent, professional, intermediate, basicLinkedIn-compatible 5-level proficiency.
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
titleLocalizedTitleYes
providerLocalizedTitleNo
courseNumberstringNo1–50 chars
descriptionLocalizedBodyNo
completionDateYearMonthNo
certificateUrlUrlNo
relatedEducationIdSlugNoOptional reference to an education[].id (e.g. for university coursework).
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
titleLocalizedTitleYes
patentNumberstringYes1–100 chars
officestringNo≤ 100 charsPatent office name (e.g. ‘USPTO’, ‘JPO’, ‘EPO’).
statusstringYesone of: pending, issued, expired, abandoned
descriptionLocalizedBodyNo
filingDateYearMonthNo
grantDateYearMonthNo
urlUrlNo
coInventorsarray of stringNo≤ 20 items; items: 1–100 chars
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
titleLocalizedTitleYes
scorestringYes1–50 charsFree-form score string (e.g. ‘112 / 120’, ‘330’, ‘N1 Pass’, or a percentile). The validator does not interpret its contents.
dateYearMonthYes
relatedEducationIdSlugNoOptional reference to an education[].id (e.g. for a university course exam).
descriptionLocalizedBodyNo
urlUrlNo
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
bodyLocalizedBodyYes
authorRecommendationAuthorYes
relationshipLocalizedTitleNoHow the recommender relates to the profile owner (e.g. ‘managed directly’, ‘worked together’).
dateYearMonthNo
relatedCareerIdSlugNoOptional reference to a careers[].id (the position the recommendation pertains to).
relatedEducationIdSlugNoOptional reference to an education[].id (e.g. a recommendation from a professor).
orderintegerNo≥ 0

No additional properties beyond those listed.

FieldTypeRequiredConstraintsDescription
namestringYes1–100 charsRecommender’s name, in its original script. Owner-curated; takuhon does not verify it.
headlineLocalizedTitleNoRecommender’s title / role / organization at the time of the recommendation.
urlUrlNoLink to the recommender’s profile, for external verification by the reader.

No additional properties beyond those listed.

One curated “selected post” (added in 1.4.0), rendered as a card in the highlights carousel. A hand-picked link to an off-site post (Instagram, X, a blog, a talk, …) with a self-hosted thumbnail — deliberately not an automated social feed. Appears on the public page, /api/profile, /takuhon.json, and MCP; it is intentionally omitted from JSON-LD and the derived CV (no natural vocabulary/résumé slot).

FieldTypeRequiredConstraintsDescription
idSlugYes
visibilityVisibilityNo
platformstringYes1–64 charsFree-form source platform (e.g. ‘instagram’, ‘x’, ‘github’, ‘blog’, ‘event’). A value with a matching brand glyph renders a badge icon; others fall back to a text badge. Not an enum, so new platforms need no schema change.
urlUrlYesPermalink to the original post; the card links here.
imagestringYesformat uri-reference; ≤ 2048 charsSelf-hosted thumbnail, as an absolute URL or a root-relative path (like avatar). Serving the asset is the deployment’s responsibility (a static build does not copy it; a Cloudflare deploy serves it via its assets binding / /assets/*). Do not point at a third-party CDN URL — those can be signed/expiring and leak visitor data.
altLocalizedTitleYesRequired alt text for the thumbnail — the card must not depend on the image alone.
titleLocalizedTitleYesLocalized card title / caption.
descriptionLocalizedBodyNoOptional localized supporting text shown under the title.
postedAtstringNoformat date; pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$Optional post date, ISO ‘YYYY-MM-DD’ (full date, unlike the YYYY-MM dates used elsewhere — a post has a specific day).
tagsarray of stringNo≤ 30 items; items: 1–50 chars
orderintegerNo≥ 0

No additional properties beyond those listed.