Schema

Canonical data shapes returned by the portfolio API.

All data models are defined as Zod schemas and inferred to TypeScript types. These are the exact shapes returned by the REST API endpoints.

ExperienceEntry

REST

A single professional role with company, dates, highlights and sector.

src/lib/schemas/experience.ts
FieldTypeRequiredNotes
companystringrequiredmin(1)
rolestringrequiredmin(1)
startDatestringrequiredISO datee.g. 2022-01-01
endDatestring | 'present'requiredISO date or literal 'present'
summarystringrequiredmin(1)
highlightsstring[]requiredarray min(1)
sectorstringrequiredmin(1)
logoSlugstringoptional

ArticleMeta

REST

Metadata for a published article. Body content is not exposed via the API.

src/lib/schemas/article.ts
FieldTypeRequiredNotes
slugstringrequiredURL-safe identifier derived from filename
titlestringrequiredmin(1)
publishedAtstringrequiredISO date
summarystringrequiredmin(1)
categoryArticleCategoryrequiredenum: PM Craft | Strategy | Regulation & Policy | AI & Product
tagsstring[]required
draftbooleanrequiredDraft articles are excluded from API responses
featuredbooleanoptional
readingTimenumberrequiredEstimated minutes at 200 wpm

ProjectMeta

REST

Metadata for a project case study.

src/lib/schemas/project.ts
FieldTypeRequiredNotes
slugstringrequired
titlestringrequired
summarystringrequired
sectorstringrequired
type'build-product' | 'pm-proof' | 'article' | 'hybrid'required
status'concept' | 'in-progress' | 'live' | 'archived'required
tier'1' | '2' | '3'requiredLaunch priority tier
featuredbooleanoptional
publishedAtstringrequiredISO date
tagsstring[]required

SkillCategory

REST

A grouped set of skills with proficiency levels.

src/lib/data/skills.ts
FieldTypeRequiredNotes
labelstringrequiredCategory name e.g. Platform & APIs
skillsSkill[]required

Skill

REST

An individual skill within a SkillCategory.

src/lib/data/skills.ts
FieldTypeRequiredNotes
namestringrequired
level'expert' | 'proficient' | 'familiar'required

SOAP XML Types

The SOAP service uses document/literal encoding with types defined in the WSDL XSD schema. Available at GET /api/v1/soap/experience.

Experience (XSD)

SOAP
FieldTypeRequiredNotes
Indexxsd:integerrequired
Companyxsd:stringrequired
Rolexsd:stringrequired
StartDatexsd:stringrequired
EndDatexsd:stringrequired
Summaryxsd:stringrequired
Highlights/Highlightxsd:string[]required
Sectorxsd:stringrequired

Skill (XSD)

SOAP
FieldTypeRequiredNotes
Namexsd:stringrequired
Levelxsd:stringrequired