316 lines
14 KiB
Go
316 lines
14 KiB
Go
package domain
|
|
|
|
import "github.com/atombender/go-jsonschema/pkg/types"
|
|
|
|
// e.g. 2014-06-29
|
|
type Iso8601 string
|
|
|
|
type Resume struct {
|
|
// link to the version of the schema that can validate the resume
|
|
Schema *string `json:"$schema,omitempty" yaml:"$schema,omitempty" mapstructure:"$schema,omitempty"`
|
|
|
|
// Specify any awards you have received throughout your professional career
|
|
Awards []ResumeAwardsElem `json:"awards,omitempty" yaml:"awards,omitempty" mapstructure:"awards,omitempty"`
|
|
|
|
// Basics corresponds to the JSON schema field "basics".
|
|
Basics *ResumeBasics `json:"basics,omitempty" yaml:"basics,omitempty" mapstructure:"basics,omitempty"`
|
|
|
|
// Specify any certificates you have received throughout your professional career
|
|
Certificates []ResumeCertificatesElem `json:"certificates,omitempty" yaml:"certificates,omitempty" mapstructure:"certificates,omitempty"`
|
|
|
|
// Education corresponds to the JSON schema field "education".
|
|
Education []ResumeEducationElem `json:"education,omitempty" yaml:"education,omitempty" mapstructure:"education,omitempty"`
|
|
|
|
// Interests corresponds to the JSON schema field "interests".
|
|
Interests []ResumeInterestsElem `json:"interests,omitempty" yaml:"interests,omitempty" mapstructure:"interests,omitempty"`
|
|
|
|
// List any other languages you speak
|
|
Languages []ResumeLanguagesElem `json:"languages,omitempty" yaml:"languages,omitempty" mapstructure:"languages,omitempty"`
|
|
|
|
// The schema version and any other tooling configuration lives here
|
|
Meta *ResumeMeta `json:"meta,omitempty" yaml:"meta,omitempty" mapstructure:"meta,omitempty"`
|
|
|
|
// Specify career projects
|
|
Projects []ResumeProjectsElem `json:"projects,omitempty" yaml:"projects,omitempty" mapstructure:"projects,omitempty"`
|
|
|
|
// Specify your publications through your career
|
|
Publications []ResumePublicationsElem `json:"publications,omitempty" yaml:"publications,omitempty" mapstructure:"publications,omitempty"`
|
|
|
|
// List references you have received
|
|
References []ResumeReferencesElem `json:"references,omitempty" yaml:"references,omitempty" mapstructure:"references,omitempty"`
|
|
|
|
// List out your professional skill-set
|
|
Skills []ResumeSkillsElem `json:"skills,omitempty" yaml:"skills,omitempty" mapstructure:"skills,omitempty"`
|
|
|
|
// Volunteer corresponds to the JSON schema field "volunteer".
|
|
Volunteer []ResumeVolunteerElem `json:"volunteer,omitempty" yaml:"volunteer,omitempty" mapstructure:"volunteer,omitempty"`
|
|
|
|
// Work corresponds to the JSON schema field "work".
|
|
Work []ResumeWorkElem `json:"work,omitempty" yaml:"work,omitempty" mapstructure:"work,omitempty"`
|
|
}
|
|
|
|
type ResumeAwardsElem struct {
|
|
// e.g. Time Magazine
|
|
Awarder *string `json:"awarder,omitempty" yaml:"awarder,omitempty" mapstructure:"awarder,omitempty"`
|
|
|
|
// Date corresponds to the JSON schema field "date".
|
|
Date *Iso8601 `json:"date,omitempty" yaml:"date,omitempty" mapstructure:"date,omitempty"`
|
|
|
|
// e.g. Received for my work with Quantum Physics
|
|
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
|
|
|
|
// e.g. One of the 100 greatest minds of the century
|
|
Title *string `json:"title,omitempty" yaml:"title,omitempty" mapstructure:"title,omitempty"`
|
|
}
|
|
|
|
type ResumeBasics struct {
|
|
// e.g. thomas@gmail.com
|
|
Email *string `json:"email,omitempty" yaml:"email,omitempty" mapstructure:"email,omitempty"`
|
|
|
|
// URL (as per RFC 3986) to a image in JPEG or PNG format
|
|
Image *string `json:"image,omitempty" yaml:"image,omitempty" mapstructure:"image,omitempty"`
|
|
|
|
// e.g. Web Developer
|
|
Label *string `json:"label,omitempty" yaml:"label,omitempty" mapstructure:"label,omitempty"`
|
|
|
|
// Location corresponds to the JSON schema field "location".
|
|
Location *ResumeBasicsLocation `json:"location,omitempty" yaml:"location,omitempty" mapstructure:"location,omitempty"`
|
|
|
|
// Name corresponds to the JSON schema field "name".
|
|
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
|
|
|
|
// Phone numbers are stored as strings so use any format you like, e.g.
|
|
// 712-117-2923
|
|
Phone *string `json:"phone,omitempty" yaml:"phone,omitempty" mapstructure:"phone,omitempty"`
|
|
|
|
// Specify any number of social networks that you participate in
|
|
Profiles []ResumeBasicsProfilesElem `json:"profiles,omitempty" yaml:"profiles,omitempty" mapstructure:"profiles,omitempty"`
|
|
|
|
// Write a short 2-3 sentence biography about yourself
|
|
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
|
|
|
|
// URL (as per RFC 3986) to your website, e.g. personal homepage
|
|
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
|
|
}
|
|
|
|
type ResumeBasicsLocation struct {
|
|
// To add multiple address lines, use
|
|
// . For example, 1234 Glücklichkeit Straße
|
|
// Hinterhaus 5. Etage li.
|
|
Address *string `json:"address,omitempty" yaml:"address,omitempty" mapstructure:"address,omitempty"`
|
|
|
|
// City corresponds to the JSON schema field "city".
|
|
City *string `json:"city,omitempty" yaml:"city,omitempty" mapstructure:"city,omitempty"`
|
|
|
|
// code as per ISO-3166-1 ALPHA-2, e.g. US, AU, IN
|
|
CountryCode *string `json:"countryCode,omitempty" yaml:"countryCode,omitempty" mapstructure:"countryCode,omitempty"`
|
|
|
|
// PostalCode corresponds to the JSON schema field "postalCode".
|
|
PostalCode *string `json:"postalCode,omitempty" yaml:"postalCode,omitempty" mapstructure:"postalCode,omitempty"`
|
|
|
|
// The general region where you live. Can be a US state, or a province, for
|
|
// instance.
|
|
Region *string `json:"region,omitempty" yaml:"region,omitempty" mapstructure:"region,omitempty"`
|
|
}
|
|
|
|
type ResumeBasicsProfilesElem struct {
|
|
// e.g. Facebook or Twitter
|
|
Network *string `json:"network,omitempty" yaml:"network,omitempty" mapstructure:"network,omitempty"`
|
|
|
|
// e.g. http://twitter.example.com/neutralthoughts
|
|
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
|
|
|
|
// e.g. neutralthoughts
|
|
Username *string `json:"username,omitempty" yaml:"username,omitempty" mapstructure:"username,omitempty"`
|
|
}
|
|
|
|
type ResumeCertificatesElem struct {
|
|
// e.g. 1989-06-12
|
|
Date *types.SerializableDate `json:"date,omitempty" yaml:"date,omitempty" mapstructure:"date,omitempty"`
|
|
|
|
// e.g. CNCF
|
|
Issuer *string `json:"issuer,omitempty" yaml:"issuer,omitempty" mapstructure:"issuer,omitempty"`
|
|
|
|
// e.g. Certified Kubernetes Administrator
|
|
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
|
|
|
|
// e.g. http://example.com
|
|
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
|
|
}
|
|
|
|
type ResumeEducationElem struct {
|
|
// e.g. Arts
|
|
Area *string `json:"area,omitempty" yaml:"area,omitempty" mapstructure:"area,omitempty"`
|
|
|
|
// List notable courses/subjects
|
|
Courses []string `json:"courses,omitempty" yaml:"courses,omitempty" mapstructure:"courses,omitempty"`
|
|
|
|
// EndDate corresponds to the JSON schema field "endDate".
|
|
EndDate *Iso8601 `json:"endDate,omitempty" yaml:"endDate,omitempty" mapstructure:"endDate,omitempty"`
|
|
|
|
// e.g. Massachusetts Institute of Technology
|
|
Institution *string `json:"institution,omitempty" yaml:"institution,omitempty" mapstructure:"institution,omitempty"`
|
|
|
|
// grade point average, e.g. 3.67/4.0
|
|
Score *string `json:"score,omitempty" yaml:"score,omitempty" mapstructure:"score,omitempty"`
|
|
|
|
// StartDate corresponds to the JSON schema field "startDate".
|
|
StartDate *Iso8601 `json:"startDate,omitempty" yaml:"startDate,omitempty" mapstructure:"startDate,omitempty"`
|
|
|
|
// e.g. Bachelor
|
|
StudyType *string `json:"studyType,omitempty" yaml:"studyType,omitempty" mapstructure:"studyType,omitempty"`
|
|
|
|
// e.g. http://facebook.example.com
|
|
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
|
|
}
|
|
|
|
type ResumeInterestsElem struct {
|
|
// Keywords corresponds to the JSON schema field "keywords".
|
|
Keywords []string `json:"keywords,omitempty" yaml:"keywords,omitempty" mapstructure:"keywords,omitempty"`
|
|
|
|
// e.g. Philosophy
|
|
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
|
|
}
|
|
|
|
type ResumeLanguagesElem struct {
|
|
// e.g. Fluent, Beginner
|
|
Fluency *string `json:"fluency,omitempty" yaml:"fluency,omitempty" mapstructure:"fluency,omitempty"`
|
|
|
|
// e.g. English, Spanish
|
|
Language *string `json:"language,omitempty" yaml:"language,omitempty" mapstructure:"language,omitempty"`
|
|
}
|
|
|
|
// The schema version and any other tooling configuration lives here
|
|
type ResumeMeta struct {
|
|
// URL (as per RFC 3986) to latest version of this document
|
|
Canonical *string `json:"canonical,omitempty" yaml:"canonical,omitempty" mapstructure:"canonical,omitempty"`
|
|
|
|
// Using ISO 8601 with YYYY-MM-DDThh:mm:ss
|
|
LastModified *string `json:"lastModified,omitempty" yaml:"lastModified,omitempty" mapstructure:"lastModified,omitempty"`
|
|
|
|
// A version field which follows semver - e.g. v1.0.0
|
|
Version *string `json:"version,omitempty" yaml:"version,omitempty" mapstructure:"version,omitempty"`
|
|
}
|
|
|
|
type ResumeProjectsElem struct {
|
|
// Short summary of project. e.g. Collated works of 2017.
|
|
Description *string `json:"description,omitempty" yaml:"description,omitempty" mapstructure:"description,omitempty"`
|
|
|
|
// EndDate corresponds to the JSON schema field "endDate".
|
|
EndDate *Iso8601 `json:"endDate,omitempty" yaml:"endDate,omitempty" mapstructure:"endDate,omitempty"`
|
|
|
|
// Specify the relevant company/domain affiliations e.g. 'greenpeace',
|
|
// 'corporationXYZ'
|
|
Entity *string `json:"domain,omitempty" yaml:"domain,omitempty" mapstructure:"domain,omitempty"`
|
|
|
|
// Specify multiple features
|
|
Highlights []string `json:"highlights,omitempty" yaml:"highlights,omitempty" mapstructure:"highlights,omitempty"`
|
|
|
|
// Specify special elements involved
|
|
Keywords []string `json:"keywords,omitempty" yaml:"keywords,omitempty" mapstructure:"keywords,omitempty"`
|
|
|
|
// e.g. The World Wide Web
|
|
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
|
|
|
|
// Specify your role on this project or in company
|
|
Roles []string `json:"roles,omitempty" yaml:"roles,omitempty" mapstructure:"roles,omitempty"`
|
|
|
|
// StartDate corresponds to the JSON schema field "startDate".
|
|
StartDate *Iso8601 `json:"startDate,omitempty" yaml:"startDate,omitempty" mapstructure:"startDate,omitempty"`
|
|
|
|
// e.g. 'volunteering', 'presentation', 'talk', 'application', 'conference'
|
|
Type *string `json:"type,omitempty" yaml:"type,omitempty" mapstructure:"type,omitempty"`
|
|
|
|
// e.g. http://www.computer.org/csdl/mags/co/1996/10/rx069-abs.html
|
|
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
|
|
}
|
|
|
|
type ResumePublicationsElem struct {
|
|
// e.g. The World Wide Web
|
|
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
|
|
|
|
// e.g. IEEE, Computer Magazine
|
|
Publisher *string `json:"publisher,omitempty" yaml:"publisher,omitempty" mapstructure:"publisher,omitempty"`
|
|
|
|
// ReleaseDate corresponds to the JSON schema field "releaseDate".
|
|
ReleaseDate *Iso8601 `json:"releaseDate,omitempty" yaml:"releaseDate,omitempty" mapstructure:"releaseDate,omitempty"`
|
|
|
|
// Short summary of publication. e.g. Discussion of the World Wide Web, HTTP,
|
|
// HTML.
|
|
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
|
|
|
|
// e.g. http://www.computer.org.example.com/csdl/mags/co/1996/10/rx069-abs.html
|
|
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
|
|
}
|
|
|
|
type ResumeReferencesElem struct {
|
|
// e.g. Timothy Cook
|
|
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
|
|
|
|
// e.g. Joe blogs was a great employee, who turned up to work at least once a
|
|
// week. He exceeded my expectations when it came to doing nothing.
|
|
Reference *string `json:"reference,omitempty" yaml:"reference,omitempty" mapstructure:"reference,omitempty"`
|
|
}
|
|
|
|
type ResumeSkillsElem struct {
|
|
// List some keywords pertaining to this skill
|
|
Keywords []string `json:"keywords,omitempty" yaml:"keywords,omitempty" mapstructure:"keywords,omitempty"`
|
|
|
|
// e.g. Master
|
|
Level *string `json:"level,omitempty" yaml:"level,omitempty" mapstructure:"level,omitempty"`
|
|
|
|
// e.g. Web Development
|
|
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
|
|
}
|
|
|
|
type ResumeVolunteerElem struct {
|
|
// EndDate corresponds to the JSON schema field "endDate".
|
|
EndDate *Iso8601 `json:"endDate,omitempty" yaml:"endDate,omitempty" mapstructure:"endDate,omitempty"`
|
|
|
|
// Specify accomplishments and achievements
|
|
Highlights []string `json:"highlights,omitempty" yaml:"highlights,omitempty" mapstructure:"highlights,omitempty"`
|
|
|
|
// e.g. Facebook
|
|
Organization *string `json:"organization,omitempty" yaml:"organization,omitempty" mapstructure:"organization,omitempty"`
|
|
|
|
// e.g. Software Engineer
|
|
Position *string `json:"position,omitempty" yaml:"position,omitempty" mapstructure:"position,omitempty"`
|
|
|
|
// StartDate corresponds to the JSON schema field "startDate".
|
|
StartDate *Iso8601 `json:"startDate,omitempty" yaml:"startDate,omitempty" mapstructure:"startDate,omitempty"`
|
|
|
|
// Give an overview of your responsibilities at the company
|
|
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
|
|
|
|
// e.g. http://facebook.example.com
|
|
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
|
|
}
|
|
|
|
type ResumeWorkElem struct {
|
|
// e.g. Social Media Company
|
|
Description *string `json:"description,omitempty" yaml:"description,omitempty" mapstructure:"description,omitempty"`
|
|
|
|
// EndDate corresponds to the JSON schema field "endDate".
|
|
EndDate *Iso8601 `json:"endDate,omitempty" yaml:"endDate,omitempty" mapstructure:"endDate,omitempty"`
|
|
|
|
// Specify multiple accomplishments
|
|
Highlights []string `json:"highlights,omitempty" yaml:"highlights,omitempty" mapstructure:"highlights,omitempty"`
|
|
|
|
// e.g. Menlo Park, CA
|
|
Location *string `json:"location,omitempty" yaml:"location,omitempty" mapstructure:"location,omitempty"`
|
|
|
|
// e.g. Facebook
|
|
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
|
|
|
|
// e.g. Software Engineer
|
|
Position *string `json:"position,omitempty" yaml:"position,omitempty" mapstructure:"position,omitempty"`
|
|
|
|
// StartDate corresponds to the JSON schema field "startDate".
|
|
StartDate *Iso8601 `json:"startDate,omitempty" yaml:"startDate,omitempty" mapstructure:"startDate,omitempty"`
|
|
|
|
// Give an overview of your responsibilities at the company
|
|
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
|
|
|
|
// e.g. http://facebook.example.com
|
|
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
|
|
}
|