Skip to main content

The Vision

I envision a world where applying for a job is as simple as transferring a JSON file from one service to a job listing portal—without any parsing errors, format inconsistencies, or human bias from subjective resume formatting. Reactive Resume aims to be the gold standard in JSON Resume Schemas. A universal, well-documented, and rigorously typed schema that any service can adopt to enable seamless resume portability across the entire job application ecosystem. Imagine:
  • Exporting your resume from Reactive Resume as a JSON file
  • Uploading it directly to a job portal that instantly understands every field
  • No more PDF parsing failures or ATS (Applicant Tracking System) misreads
  • Your qualifications evaluated purely on merit, not on formatting quirks
This is the future I’m hoping to build toward.

The Schema Endpoint

The Reactive Resume JSON Schema is publicly available at: This endpoint returns a complete JSON Schema (draft 2020-12 compatible) that describes the structure of a Reactive Resume document. It includes:
  • All resume sections: basics, summary, experience, education, projects, skills, languages, interests, awards, certifications, publications, volunteer work, and references
  • Custom sections: user-defined sections with arbitrary content
  • Metadata: template, layout, typography, colors, page settings, and custom CSS
  • Full descriptions: every field is documented with its purpose and expected format

Schema Versioning

The schema includes a version field to track compatibility:
{
  "$schema": "https://rxresu.me/schema.json",
  "version": "5.0.0"
}
When importing resumes, Reactive Resume uses this version to handle migrations and ensure backward compatibility.

Using the Schema

Validating Resume Data

You can use the schema to validate resume JSON files in any language that supports JSON Schema validation:
import Ajv from "ajv";

const ajv = new Ajv();
const schema = await fetch("https://rxresu.me/schema.json").then((r) => r.json());
const validate = ajv.compile(schema);

const isValid = validate(resumeData);
if (!isValid) {
  console.error(validate.errors);
}

IDE Autocompletion

Add the $schema property to your resume JSON files to get autocompletion and validation in editors like VS Code:
{
  "$schema": "https://rxresu.me/schema.json",
  "version": "5.0.0",
  "basics": {
    "name": "John Doe"
  }
}

Building Integrations

The schema enables third-party integrations:
  • Job portals can accept Reactive Resume JSON files directly
  • HR systems can parse candidate data without lossy PDF conversion
  • Other resume builders can import/export using a common format
  • AI tools can understand resume structure for analysis or enhancement

Schema Structure Overview

The resume data is organized into these top-level sections:
SectionDescription
$schemaURL to the JSON Schema for validation
versionSchema version (currently 5.0.0)
pictureProfile photo configuration
basicsName, headline, contact info, custom fields
summaryProfessional summary or bio
sectionsStandard sections (experience, education, etc.)
customSectionsUser-defined additional sections
metadataTemplate, layout, design, typography settings
Each section within sections follows a consistent structure:
{
  "title": "Experience",
  "columns": 1,
  "hidden": false,
  "items": [
    {
      "id": "uuid",
      "hidden": false,
      // ... section-specific fields
    }
  ]
}

For Developers & Job Portals

If you’re building a job portal, HR system, or any service that handles resumes, I encourage you to adopt this schema. Benefits include:
  • Zero parsing errors: structured data means no OCR or PDF parsing mistakes
  • Complete information: all resume data is preserved, including links and metadata
  • Easy integration: JSON is universally supported across all platforms
  • Future-proof: versioned schema with migration support
Want to integrate? The schema is open and freely available. You can fetch it programmatically or reference it in your systems.

Complete JSON Schema

Below is the complete JSON Schema for Reactive Resume. You can also fetch the latest version directly from https://rxresu.me/schema.json.
Copy the schema from the live endpoint to ensure you always have the latest version.
/schema.json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "picture": {
      "type": "object",
      "properties": {
        "hidden": {
          "type": "boolean",
          "description": "Whether to hide the picture from the resume."
        },
        "url": {
          "type": "string",
          "description": "The URL to the picture to display on the resume. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
        },
        "size": {
          "type": "number",
          "minimum": 32,
          "maximum": 512,
          "description": "The size of the picture to display on the resume, defined in points (pt)."
        },
        "rotation": {
          "type": "number",
          "minimum": 0,
          "maximum": 360,
          "description": "The rotation of the picture to display on the resume, defined in degrees (°)."
        },
        "aspectRatio": {
          "type": "number",
          "minimum": 0.5,
          "maximum": 2.5,
          "description": "The aspect ratio of the picture to display on the resume, defined as width / height (e.g. 1.5 for 1.5:1 or 0.5 for 1:2)."
        },
        "borderRadius": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "The border radius of the picture to display on the resume, defined in points (pt)."
        },
        "borderColor": {
          "type": "string",
          "description": "The color of the border of the picture to display on the resume, defined as rgba(r, g, b, a)."
        },
        "borderWidth": {
          "type": "number",
          "minimum": 0,
          "description": "The width of the border of the picture to display on the resume, defined in points (pt)."
        },
        "shadowColor": {
          "type": "string",
          "description": "The color of the shadow of the picture to display on the resume, defined as rgba(r, g, b, a)."
        },
        "shadowWidth": {
          "type": "number",
          "minimum": 0,
          "description": "The width of the shadow of the picture to display on the resume, defined in points (pt)."
        }
      },
      "required": [
        "hidden",
        "url",
        "size",
        "rotation",
        "aspectRatio",
        "borderRadius",
        "borderColor",
        "borderWidth",
        "shadowColor",
        "shadowWidth"
      ],
      "additionalProperties": false,
      "description": "Configuration for photograph displayed on the resume"
    },
    "basics": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The full name of the author of the resume."
        },
        "headline": {
          "type": "string",
          "description": "The headline of the author of the resume."
        },
        "email": {
          "anyOf": [
            {
              "type": "string",
              "format": "email",
              "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            },
            {
              "type": "string",
              "const": ""
            }
          ],
          "description": "The email address of the author of the resume. Leave blank to hide."
        },
        "phone": {
          "type": "string",
          "description": "The phone number of the author of the resume. Leave blank to hide."
        },
        "location": {
          "type": "string",
          "description": "The location of the author of the resume."
        },
        "website": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
            },
            "label": {
              "type": "string",
              "description": "The label to display for the URL. Leave blank to display the URL as-is."
            }
          },
          "required": [
            "url",
            "label"
          ],
          "additionalProperties": false,
          "description": "The website of the author of the resume."
        },
        "customFields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The unique identifier for the custom field. Usually generated as a UUID."
              },
              "icon": {
                "type": "string",
                "description": "The icon to display for the custom field. Must be a valid icon name from @phosphor-icons/web icon set, or an empty string to hide. Default to '' (empty string) when unsure which icons are available."
              },
              "text": {
                "type": "string",
                "description": "The text to display for the custom field."
              }
            },
            "required": [
              "id",
              "icon",
              "text"
            ],
            "additionalProperties": false
          },
          "description": "The custom fields to display on the resume."
        }
      },
      "required": [
        "name",
        "headline",
        "email",
        "phone",
        "location",
        "website",
        "customFields"
      ],
      "additionalProperties": false,
      "description": "Basic information about the author, such as name, email, phone, location, and website"
    },
    "summary": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "description": "The title of the summary of the resume."
        },
        "columns": {
          "type": "number",
          "description": "The number of columns the summary should span across."
        },
        "hidden": {
          "type": "boolean",
          "description": "Whether to hide the summary from the resume."
        },
        "content": {
          "type": "string",
          "description": "The content of the summary of the resume. This should be a HTML-formatted string. Leave blank to hide."
        }
      },
      "required": [
        "title",
        "columns",
        "hidden",
        "content"
      ],
      "additionalProperties": false,
      "description": "Summary section of the resume, useful for a short bio or introduction"
    },
    "sections": {
      "type": "object",
      "properties": {
        "profiles": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "icon": {
                    "type": "string",
                    "description": "The icon to display for the custom field. Must be a valid icon name from @phosphor-icons/web icon set, or an empty string to hide. Default to '' (empty string) when unsure which icons are available."
                  },
                  "network": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the network or platform."
                  },
                  "username": {
                    "type": "string",
                    "description": "The username of the author on the network or platform."
                  },
                  "website": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label to display for the URL. Leave blank to display the URL as-is."
                      }
                    },
                    "required": [
                      "url",
                      "label"
                    ],
                    "additionalProperties": false,
                    "description": "The link to the profile of the author on the network or platform, if any."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "icon",
                  "network",
                  "username",
                  "website"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the profiles section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the profiles of the author."
        },
        "experience": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "company": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the company or organization."
                  },
                  "position": {
                    "type": "string",
                    "description": "The position held at the company or organization."
                  },
                  "location": {
                    "type": "string",
                    "description": "The location of the company or organization."
                  },
                  "period": {
                    "type": "string",
                    "description": "The period of time the author was employed at the company or organization."
                  },
                  "website": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label to display for the URL. Leave blank to display the URL as-is."
                      }
                    },
                    "required": [
                      "url",
                      "label"
                    ],
                    "additionalProperties": false,
                    "description": "The website of the company or organization, if any."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the experience. This should be a HTML-formatted string. Leave blank to hide."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "company",
                  "position",
                  "location",
                  "period",
                  "website",
                  "description"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the experience section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the experience of the author."
        },
        "education": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "school": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the school or institution."
                  },
                  "degree": {
                    "type": "string",
                    "description": "The degree or qualification obtained."
                  },
                  "area": {
                    "type": "string",
                    "description": "The area of study or specialization."
                  },
                  "grade": {
                    "type": "string",
                    "description": "The grade or score achieved."
                  },
                  "location": {
                    "type": "string",
                    "description": "The location of the school or institution."
                  },
                  "period": {
                    "type": "string",
                    "description": "The period of time the education was obtained over."
                  },
                  "website": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label to display for the URL. Leave blank to display the URL as-is."
                      }
                    },
                    "required": [
                      "url",
                      "label"
                    ],
                    "additionalProperties": false,
                    "description": "The website of the school or institution, if any."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the education. This should be a HTML-formatted string. Leave blank to hide."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "school",
                  "degree",
                  "area",
                  "grade",
                  "location",
                  "period",
                  "website",
                  "description"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the education section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the education of the author."
        },
        "projects": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the project."
                  },
                  "period": {
                    "type": "string",
                    "description": "The period of time the project was worked on."
                  },
                  "website": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label to display for the URL. Leave blank to display the URL as-is."
                      }
                    },
                    "required": [
                      "url",
                      "label"
                    ],
                    "additionalProperties": false,
                    "description": "The link to the project, if any."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the project. This should be a HTML-formatted string. Leave blank to hide."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "name",
                  "period",
                  "website",
                  "description"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the projects section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the projects of the author."
        },
        "skills": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "icon": {
                    "type": "string",
                    "description": "The icon to display for the custom field. Must be a valid icon name from @phosphor-icons/web icon set, or an empty string to hide. Default to '' (empty string) when unsure which icons are available."
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the skill."
                  },
                  "proficiency": {
                    "type": "string",
                    "description": "The proficiency level of the skill. Can be any text, such as 'Beginner', 'Intermediate', 'Advanced', etc."
                  },
                  "level": {
                    "default": 0,
                    "description": "The proficiency level of the skill, defined as a number between 0 and 5. If set to 0, the icons displaying the level will be hidden.",
                    "type": "number",
                    "minimum": 0,
                    "maximum": 5
                  },
                  "keywords": {
                    "default": [],
                    "description": "The keywords associated with the skill, if any. These are displayed as tags below the name.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "icon",
                  "name",
                  "proficiency",
                  "level",
                  "keywords"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the skills section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the skills of the author."
        },
        "languages": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "language": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the language the author knows."
                  },
                  "fluency": {
                    "type": "string",
                    "description": "The fluency level of the language. Can be any text, such as 'Native', 'Fluent', 'Conversational', etc. or can also be a CEFR level (A1, A2, B1, B2, C1, C2)."
                  },
                  "level": {
                    "default": 0,
                    "description": "The proficiency level of the language, defined as a number between 0 and 5. If set to 0, the icons displaying the level will be hidden.",
                    "type": "number",
                    "minimum": 0,
                    "maximum": 5
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "language",
                  "fluency",
                  "level"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the languages section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the languages of the author."
        },
        "interests": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "icon": {
                    "type": "string",
                    "description": "The icon to display for the custom field. Must be a valid icon name from @phosphor-icons/web icon set, or an empty string to hide. Default to '' (empty string) when unsure which icons are available."
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the interest/hobby."
                  },
                  "keywords": {
                    "default": [],
                    "description": "The keywords associated with the interest/hobby, if any. These are displayed as tags below the name.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "icon",
                  "name",
                  "keywords"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the interests section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the interests of the author."
        },
        "awards": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The title of the award."
                  },
                  "awarder": {
                    "type": "string",
                    "description": "The awarder of the award."
                  },
                  "date": {
                    "type": "string",
                    "description": "The date when the award was received."
                  },
                  "website": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label to display for the URL. Leave blank to display the URL as-is."
                      }
                    },
                    "required": [
                      "url",
                      "label"
                    ],
                    "additionalProperties": false,
                    "description": "The website of the award, if any."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the award. This should be a HTML-formatted string. Leave blank to hide."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "title",
                  "awarder",
                  "date",
                  "website",
                  "description"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the awards section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the awards of the author."
        },
        "certifications": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The title of the certification."
                  },
                  "issuer": {
                    "type": "string",
                    "description": "The issuer of the certification."
                  },
                  "date": {
                    "type": "string",
                    "description": "The date when the certification was received."
                  },
                  "website": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label to display for the URL. Leave blank to display the URL as-is."
                      }
                    },
                    "required": [
                      "url",
                      "label"
                    ],
                    "additionalProperties": false,
                    "description": "The website of the certification, if any."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the certification. This should be a HTML-formatted string. Leave blank to hide."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "title",
                  "issuer",
                  "date",
                  "website",
                  "description"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the certifications section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the certifications of the author."
        },
        "publications": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The title of the publication."
                  },
                  "publisher": {
                    "type": "string",
                    "description": "The publisher of the publication."
                  },
                  "date": {
                    "type": "string",
                    "description": "The date when the publication was published."
                  },
                  "website": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label to display for the URL. Leave blank to display the URL as-is."
                      }
                    },
                    "required": [
                      "url",
                      "label"
                    ],
                    "additionalProperties": false,
                    "description": "The link to the publication, if any."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the publication. This should be a HTML-formatted string. Leave blank to hide."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "title",
                  "publisher",
                  "date",
                  "website",
                  "description"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the publications section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the publications of the author."
        },
        "volunteer": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "organization": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the organization or company."
                  },
                  "location": {
                    "type": "string",
                    "description": "The location of the organization or company."
                  },
                  "period": {
                    "type": "string",
                    "description": "The period of time the author was volunteered at the organization or company."
                  },
                  "website": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide."
                      },
                      "label": {
                        "type": "string",
                        "description": "The label to display for the URL. Leave blank to display the URL as-is."
                      }
                    },
                    "required": [
                      "url",
                      "label"
                    ],
                    "additionalProperties": false,
                    "description": "The link to the organization or company, if any."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the volunteer experience. This should be a HTML-formatted string. Leave blank to hide."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "organization",
                  "location",
                  "period",
                  "website",
                  "description"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the volunteer section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the volunteer experience of the author."
        },
        "references": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "The title of the section."
            },
            "columns": {
              "type": "number",
              "description": "The number of columns the section should span across."
            },
            "hidden": {
              "type": "boolean",
              "description": "Whether to hide the section from the resume."
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The unique identifier for the item. Usually generated as a UUID."
                  },
                  "hidden": {
                    "type": "boolean",
                    "description": "Whether to hide the item from the resume."
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The name of the reference, or a note such as 'Available upon request'."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the reference. Can be used to display a quote, a testimonial, etc. This should be a HTML-formatted string. Leave blank to hide."
                  }
                },
                "required": [
                  "id",
                  "hidden",
                  "name",
                  "description"
                ],
                "additionalProperties": false
              },
              "description": "The items to display in the references section."
            }
          },
          "required": [
            "title",
            "columns",
            "hidden",
            "items"
          ],
          "additionalProperties": false,
          "description": "The section to display the references of the author."
        }
      },
      "required": [
        "profiles",
        "experience",
        "education",
        "projects",
        "skills",
        "languages",
        "interests",
        "awards",
        "certifications",
        "publications",
        "volunteer",
        "references"
      ],
      "additionalProperties": false,
      "description": "Various sections of the resume, such as experience, education, projects, etc."
    },
    "customSections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the section."
          },
          "columns": {
            "type": "number",
            "description": "The number of columns the section should span across."
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether to hide the section from the resume."
          },
          "id": {
            "type": "string",
            "description": "The unique identifier for the custom section. Usually generated as a UUID."
          },
          "content": {
            "type": "string",
            "description": "The content of the custom section. This should be a HTML-formatted string. Leave blank to hide."
          }
        },
        "required": [
          "title",
          "columns",
          "hidden",
          "id",
          "content"
        ],
        "additionalProperties": false
      },
      "description": "Custom sections of the resume, such as a custom section for notes, etc."
    },
    "metadata": {
      "type": "object",
      "properties": {
        "template": {
          "default": "onyx",
          "description": "The template to use for the resume. Determines the overall design and appearance of the resume.",
          "type": "string",
          "enum": [
            "azurill",
            "bronzor",
            "chikorita",
            "ditto",
            "gengar",
            "glalie",
            "kakuna",
            "lapras",
            "leafish",
            "onyx",
            "pikachu",
            "rhyhorn"
          ]
        },
        "layout": {
          "type": "object",
          "properties": {
            "sidebarWidth": {
              "default": 35,
              "description": "The width of the sidebar column, defined as a percentage of the page width.",
              "type": "number",
              "minimum": 10,
              "maximum": 50
            },
            "pages": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "fullWidth": {
                    "type": "boolean",
                    "description": "Whether the layout of the page should be full width. If true, the main column will span the entire width of the page. This means that there should be no items in the sidebar column."
                  },
                  "main": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The items to display in the main column of the page. A string array of section IDs (experience, education, projects, skills, languages, interests, awards, certifications, publications, volunteer, references, profiles, summary or UUIDs for custom sections)."
                  },
                  "sidebar": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The items to display in the sidebar column of the page. A string array of section IDs (experience, education, projects, skills, languages, interests, awards, certifications, publications, volunteer, references, profiles, summary or UUIDs for custom sections)."
                  }
                },
                "required": [
                  "fullWidth",
                  "main",
                  "sidebar"
                ],
                "additionalProperties": false
              },
              "description": "The pages to display in the layout."
            }
          },
          "required": [
            "sidebarWidth",
            "pages"
          ],
          "additionalProperties": false,
          "description": "The layout of the resume. Determines the structure and arrangement of the sections on the resume."
        },
        "css": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Whether to enable custom CSS for the resume."
            },
            "value": {
              "type": "string",
              "description": "The custom CSS to apply to the resume. This should be a valid CSS string."
            }
          },
          "required": [
            "enabled",
            "value"
          ],
          "additionalProperties": false,
          "description": "Custom CSS to apply to the resume. Can be used to override the default styles of the template."
        },
        "page": {
          "type": "object",
          "properties": {
            "gapX": {
              "type": "number",
              "minimum": 0,
              "description": "The horizontal gap between the sections of the page, defined in points (pt)."
            },
            "gapY": {
              "type": "number",
              "minimum": 0,
              "description": "The vertical gap between the sections of the page, defined in points (pt)."
            },
            "marginX": {
              "type": "number",
              "minimum": 0,
              "description": "The horizontal margin of the page, defined in points (pt)."
            },
            "marginY": {
              "type": "number",
              "minimum": 0,
              "description": "The vertical margin of the page, defined in points (pt)."
            },
            "format": {
              "type": "string",
              "enum": [
                "a4",
                "letter"
              ],
              "description": "The format of the page. Can be 'a4' or 'letter'."
            },
            "locale": {
              "default": "en-US",
              "anyOf": [
                {
                  "type": "string",
                  "const": "af-ZA"
                },
                {
                  "type": "string",
                  "const": "am-ET"
                },
                {
                  "type": "string",
                  "const": "ar-SA"
                },
                {
                  "type": "string",
                  "const": "az-AZ"
                },
                {
                  "type": "string",
                  "const": "bg-BG"
                },
                {
                  "type": "string",
                  "const": "bn-BD"
                },
                {
                  "type": "string",
                  "const": "ca-ES"
                },
                {
                  "type": "string",
                  "const": "cs-CZ"
                },
                {
                  "type": "string",
                  "const": "da-DK"
                },
                {
                  "type": "string",
                  "const": "de-DE"
                },
                {
                  "type": "string",
                  "const": "el-GR"
                },
                {
                  "type": "string",
                  "const": "en-US"
                },
                {
                  "type": "string",
                  "const": "es-ES"
                },
                {
                  "type": "string",
                  "const": "fa-IR"
                },
                {
                  "type": "string",
                  "const": "fi-FI"
                },
                {
                  "type": "string",
                  "const": "fr-FR"
                },
                {
                  "type": "string",
                  "const": "he-IL"
                },
                {
                  "type": "string",
                  "const": "hi-IN"
                },
                {
                  "type": "string",
                  "const": "hu-HU"
                },
                {
                  "type": "string",
                  "const": "id-ID"
                },
                {
                  "type": "string",
                  "const": "it-IT"
                },
                {
                  "type": "string",
                  "const": "ja-JP"
                },
                {
                  "type": "string",
                  "const": "km-KH"
                },
                {
                  "type": "string",
                  "const": "kn-IN"
                },
                {
                  "type": "string",
                  "const": "ko-KR"
                },
                {
                  "type": "string",
                  "const": "lt-LT"
                },
                {
                  "type": "string",
                  "const": "lv-LV"
                },
                {
                  "type": "string",
                  "const": "ml-IN"
                },
                {
                  "type": "string",
                  "const": "mr-IN"
                },
                {
                  "type": "string",
                  "const": "ms-MY"
                },
                {
                  "type": "string",
                  "const": "ne-NP"
                },
                {
                  "type": "string",
                  "const": "nl-NL"
                },
                {
                  "type": "string",
                  "const": "no-NO"
                },
                {
                  "type": "string",
                  "const": "or-IN"
                },
                {
                  "type": "string",
                  "const": "pl-PL"
                },
                {
                  "type": "string",
                  "const": "pt-BR"
                },
                {
                  "type": "string",
                  "const": "pt-PT"
                },
                {
                  "type": "string",
                  "const": "ro-RO"
                },
                {
                  "type": "string",
                  "const": "ru-RU"
                },
                {
                  "type": "string",
                  "const": "sk-SK"
                },
                {
                  "type": "string",
                  "const": "sq-AL"
                },
                {
                  "type": "string",
                  "const": "sr-SP"
                },
                {
                  "type": "string",
                  "const": "sv-SE"
                },
                {
                  "type": "string",
                  "const": "ta-IN"
                },
                {
                  "type": "string",
                  "const": "te-IN"
                },
                {
                  "type": "string",
                  "const": "th-TH"
                },
                {
                  "type": "string",
                  "const": "tr-TR"
                },
                {
                  "type": "string",
                  "const": "uk-UA"
                },
                {
                  "type": "string",
                  "const": "uz-UZ"
                },
                {
                  "type": "string",
                  "const": "vi-VN"
                },
                {
                  "type": "string",
                  "const": "zh-CN"
                },
                {
                  "type": "string",
                  "const": "zh-TW"
                },
                {
                  "type": "string",
                  "const": "zu-ZA"
                }
              ],
              "description": "The language used in the resume, used for displaying pre-translated section headings, if not overridden."
            }
          },
          "required": [
            "gapX",
            "gapY",
            "marginX",
            "marginY",
            "format",
            "locale"
          ],
          "additionalProperties": false,
          "description": "The page settings of the resume. Determines the margins, format, and locale of the resume."
        },
        "design": {
          "type": "object",
          "properties": {
            "level": {
              "type": "object",
              "properties": {
                "icon": {
                  "type": "string",
                  "description": "The icon to display for the custom field. Must be a valid icon name from @phosphor-icons/web icon set, or an empty string to hide. Default to '' (empty string) when unsure which icons are available."
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "hidden",
                    "circle",
                    "square",
                    "rectangle",
                    "rectangle-full",
                    "progress-bar",
                    "icon"
                  ],
                  "description": "The type of the level design. 'hidden' will hide the level design, 'circle' will display a circle, 'square' will display a square, 'rectangle' will display a rectangle, 'rectangle-full' will display a full rectangle, 'progress-bar' will display a progress bar, and 'icon' will display an icon. If 'icon' is selected, the icon to display should be specified in the 'icon' field."
                }
              },
              "required": [
                "icon",
                "type"
              ],
              "additionalProperties": false
            },
            "colors": {
              "type": "object",
              "properties": {
                "primary": {
                  "type": "string",
                  "description": "The primary color of the design, defined as rgba(r, g, b, a)."
                },
                "text": {
                  "type": "string",
                  "description": "The text color of the design, defined as rgba(r, g, b, a). Usually set to black: rgba(0, 0, 0, 1)."
                },
                "background": {
                  "type": "string",
                  "description": "The background color of the design, defined as rgba(r, g, b, a). Usually set to white: rgba(255, 255, 255, 1)."
                }
              },
              "required": [
                "primary",
                "text",
                "background"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "level",
            "colors"
          ],
          "additionalProperties": false,
          "description": "The design settings of the resume. Determines the colors, level designs, and typography of the resume."
        },
        "typography": {
          "type": "object",
          "properties": {
            "body": {
              "type": "object",
              "properties": {
                "fontFamily": {
                  "type": "string",
                  "description": "The family of the font to use. Must be a font that is available on Google Fonts."
                },
                "fontWeights": {
                  "default": [
                    "400"
                  ],
                  "description": "The weight of the font, defined as a number between 100 and 900. Default to 400 when unsure if the weight is available in the font.",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "100",
                      "200",
                      "300",
                      "400",
                      "500",
                      "600",
                      "700",
                      "800",
                      "900"
                    ]
                  }
                },
                "fontSize": {
                  "default": 11,
                  "description": "The size of the font to use, defined in points (pt).",
                  "type": "number",
                  "minimum": 6,
                  "maximum": 24
                },
                "lineHeight": {
                  "default": 1.5,
                  "description": "The line height of the font to use, defined as a multiplier of the font size (e.g. 1.5 for 1.5x).",
                  "type": "number",
                  "minimum": 0.5,
                  "maximum": 4
                }
              },
              "required": [
                "fontFamily",
                "fontWeights",
                "fontSize",
                "lineHeight"
              ],
              "additionalProperties": false,
              "description": "The typography for the body of the resume."
            },
            "heading": {
              "type": "object",
              "properties": {
                "fontFamily": {
                  "type": "string",
                  "description": "The family of the font to use. Must be a font that is available on Google Fonts."
                },
                "fontWeights": {
                  "default": [
                    "400"
                  ],
                  "description": "The weight of the font, defined as a number between 100 and 900. Default to 400 when unsure if the weight is available in the font.",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "100",
                      "200",
                      "300",
                      "400",
                      "500",
                      "600",
                      "700",
                      "800",
                      "900"
                    ]
                  }
                },
                "fontSize": {
                  "default": 11,
                  "description": "The size of the font to use, defined in points (pt).",
                  "type": "number",
                  "minimum": 6,
                  "maximum": 24
                },
                "lineHeight": {
                  "default": 1.5,
                  "description": "The line height of the font to use, defined as a multiplier of the font size (e.g. 1.5 for 1.5x).",
                  "type": "number",
                  "minimum": 0.5,
                  "maximum": 4
                }
              },
              "required": [
                "fontFamily",
                "fontWeights",
                "fontSize",
                "lineHeight"
              ],
              "additionalProperties": false,
              "description": "The typography for the headings of the resume."
            }
          },
          "required": [
            "body",
            "heading"
          ],
          "additionalProperties": false,
          "description": "The typography settings of the resume. Determines the fonts and sizes of the body and headings of the resume."
        },
        "notes": {
          "type": "string",
          "description": "Personal notes for the resume. Can be used to add any additional information or instructions for the resume. These notes are not displayed on the resume, they are only visible to the author of the resume when editing the resume. This should be a HTML-formatted string."
        }
      },
      "required": [
        "template",
        "layout",
        "css",
        "page",
        "design",
        "typography",
        "notes"
      ],
      "additionalProperties": false,
      "description": "Metadata for the resume, such as template, layout, typography, etc. This section describes the overall design and appearance of the resume."
    },
    "version": {
      "type": "string",
      "const": "5.0.0",
      "description": "The version of the Reactive Resume JSON Schema"
    },
    "$schema": {
      "type": "string",
      "const": "https://beta.rxresu.me/schema.json",
      "description": "The URL of the Reactive Resume JSON Schema, used for validation and documentation purposes."
    }
  },
  "required": [
    "picture",
    "basics",
    "summary",
    "sections",
    "customSections",
    "metadata",
    "version",
    "$schema"
  ],
  "additionalProperties": false
}