mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-10-03 10:13:47 +10:00
feat: make cover letters documents of their own
Resumes no longer hold cover-letter sections. A migration saves every letter a resume carried as a letter linked to that resume's details and design, hands a resume's only letter to its only letter-less application, then removes the sections from resumes and their layouts. rollback.sql puts them back. Every resume write on the server moves any letter it still carries into a saved letter in the same transaction, so stale tabs, older files, API clients and restored versions keep working without duplicating letters. The resume editor no longer adds or imports letters, the resume download drops its Cover letter tab, and resume PDF downloads (API, signed links, MCP) no longer take a cover-letter target. copy_embedded_cover_letter and POST /cover-letters/from-resume are removed.
This commit is contained in:
@@ -1,171 +1,64 @@
|
||||
---
|
||||
title: "Adding a cover letter"
|
||||
description: "Learn how to create a cover letter as a custom section in Reactive Resume, format it professionally, and place it on a separate page."
|
||||
description: "Write a cover letter in Reactive Resume as a document of its own, match it to your resume's design, attach it to a job application, and export it."
|
||||
---
|
||||
|
||||
A cover letter goes alongside your resume when you apply for a job. It introduces you to the employer, points to your relevant qualifications, and explains why you fit the position. In Reactive Resume you write one as a custom section, so you control its formatting and where it appears.
|
||||
A cover letter goes alongside your resume when you apply for a job. In Reactive Resume a cover letter is a document of its own, next to your resumes in **Documents**. It is not a section inside a resume.
|
||||
|
||||
## Why include a cover letter?
|
||||
|
||||
- It shows genuine interest in the position
|
||||
- You can tailor your message to each employer and role
|
||||
- You have room to address career changes or gaps in your resume
|
||||
- It demonstrates that you write clearly and professionally
|
||||
|
||||
## Creating a cover letter section
|
||||
## Create a cover letter
|
||||
|
||||
<Steps>
|
||||
<Step title="Open the resume builder">
|
||||
Navigate to your resume and open it in the builder.
|
||||
<Step title="Open New">
|
||||
In **Documents**, click **New**, then **New cover letter instead**.
|
||||
</Step>
|
||||
|
||||
<Step title="Scroll to Custom Sections">
|
||||
In the left sidebar, scroll down to find the **Custom Sections** area at the bottom.
|
||||
</Step>
|
||||
<Step title="Pick who it's from">
|
||||
Under **From**, choose the resume the letter goes with. The letter uses that resume's name, contact details and design, and follows them when you change the resume.
|
||||
</Step>
|
||||
|
||||
<Step title="Add a new custom section">
|
||||
Click <Badge>Add a new custom section</Badge> to open the section creation dialog.
|
||||
</Step>
|
||||
<Step title="Pick who it's for">
|
||||
Under **For**, link the job application the letter is for. The recipient fills in from the application, and the application lists the letter as the one you sent.
|
||||
</Step>
|
||||
|
||||
<Step title="Select 'Cover Letter' as the type">
|
||||
In the dialog: - Enter a **Title** for your section (e.g., "Cover Letter" or "Cover Letter - [Company Name]") - Select
|
||||
**Cover Letter** from the **Type** dropdown - Click **Create** to add the section
|
||||
</Step>
|
||||
|
||||
<Step title="Add a cover letter item">
|
||||
In your new cover letter section, click <Badge>Add a new item</Badge> to create your cover letter.
|
||||
<Step title="Write">
|
||||
Write the body. The greeting and sign-off follow the recipient's name and your name.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Formatting your cover letter
|
||||
You can also start a letter from an application: open it in **Applications** and click **Write a letter** under **What you sent**.
|
||||
|
||||
A cover letter has two main fields:
|
||||
## Match your resume, or design it on its own
|
||||
|
||||
### Recipient field
|
||||
By default a letter matches its resume's template, type and colors. Turn off **Match** in the letter's **Design** mode to give it a template, type, colors and page settings of its own.
|
||||
|
||||
The **Recipient** field is where you enter the recipient's information. This typically includes:
|
||||
## Attach a letter to an application
|
||||
|
||||
- Date (optional)
|
||||
- Hiring manager's name
|
||||
- Their job title
|
||||
- Company name
|
||||
- Company address
|
||||
A letter linked to an application under **For** is that application's letter. Each application has one letter; linking a letter to another application moves it there. When the application reaches **Applied**, the letter is saved in its History as the version you sent.
|
||||
|
||||
<Tip>
|
||||
Use line breaks to format the address block. For example:
|
||||
## Export a letter
|
||||
|
||||
```
|
||||
January 31, 2026
|
||||
Open the letter and click **Share & export**, then **Download**, and pick PDF or DOCX. When you download a resume whose application has a letter, the resume's **Download** tab offers to include the letter as a second file.
|
||||
|
||||
Jane Smith
|
||||
Senior Hiring Manager
|
||||
Acme Corporation
|
||||
123 Main Street, Suite 400
|
||||
New York, NY 10001
|
||||
```
|
||||
## Letters written inside a resume
|
||||
|
||||
</Tip>
|
||||
Older versions of Reactive Resume let you add a cover letter as a section of a resume. Those letters have moved to **Documents**:
|
||||
|
||||
### Content field
|
||||
- Each one is a letter of its own, named after its resume and section, for example "Frontend Resume — Cover Letter".
|
||||
- It stays linked to that resume's details and design, so it looks as it did.
|
||||
- If the resume was used by one application that had no letter, the letter is attached to that application.
|
||||
- The resume no longer contains the letter. Older versions of the resume in its History still do; restoring one saves those letters again as letters.
|
||||
|
||||
The **Content** field is where you write the body of your cover letter. Include:
|
||||
|
||||
- **Salutation**: "Dear Ms. Smith," or "Dear Hiring Team,"
|
||||
- **Opening paragraph**: State the position you're applying for and how you learned about it
|
||||
- **Body paragraphs**: Highlight relevant experience, skills, and achievements
|
||||
- **Closing paragraph**: Express enthusiasm and include a call to action
|
||||
- **Sign-off**: "Sincerely," followed by your name
|
||||
|
||||
<Info>
|
||||
The recipient and content are both rendered directly on your resume, without a section header.
|
||||
</Info>
|
||||
|
||||
## Using fullscreen mode for writing
|
||||
|
||||
The rich text editor can expand to fill the screen when you want to write without distraction:
|
||||
|
||||
<Steps>
|
||||
<Step title="Open the cover letter item">
|
||||
Click on your cover letter item in the sidebar to open the edit dialog.
|
||||
</Step>
|
||||
|
||||
<Step title="Expand the editor">
|
||||
In either the Recipient or Content field, click the **expand icon** (arrows pointing outward) in the bottom-right
|
||||
corner of the editor.
|
||||
</Step>
|
||||
|
||||
<Step title="Write in fullscreen">
|
||||
The editor expands to nearly fill your screen, with every formatting tool still available.
|
||||
</Step>
|
||||
|
||||
<Step title="Exit fullscreen">
|
||||
Click the **collapse icon** or press **Escape** to return to the normal view.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Formatting options
|
||||
|
||||
The rich text editor supports:
|
||||
|
||||
- **Text styling**: Bold, italic, underline, strikethrough, highlight
|
||||
- **Headings**: H1 through H6 (though typically not needed in a cover letter)
|
||||
- **Alignment**: Left, center, right, or justified text
|
||||
- **Lists**: Bullet points and numbered lists
|
||||
- **Links**: Add hyperlinks to your portfolio or LinkedIn
|
||||
|
||||
## Exporting the cover letter separately
|
||||
|
||||
You do not need to move the cover letter to a specific page to send it on its own. When you download your resume, the download dialog gives you a **Resume** tab and a **Cover letter** tab, so you can export either document as a standalone PDF, DOCX, or Markdown file.
|
||||
|
||||
See [Exporting your resume](/guides/exporting-your-resume) for the full workflow.
|
||||
|
||||
## Moving your cover letter to a separate page
|
||||
|
||||
If you also want the cover letter to appear on its own page inside the combined preview or the public resume view, place it on a new page:
|
||||
|
||||
<Steps>
|
||||
<Step title="Create a second page">
|
||||
In the right sidebar, go to the **Layout** section and add a new page to your resume.
|
||||
</Step>
|
||||
|
||||
<Step title="Move the cover letter section">
|
||||
Use the **Move to** feature to relocate your cover letter section to the second page.
|
||||
|
||||
<Tip>
|
||||
See [Moving items between sections](/guides/moving-items-between-sections) for detailed instructions on how to move sections between pages.
|
||||
</Tip>
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Verify the layout">
|
||||
Check the preview to confirm your cover letter appears on its own page and is formatted the way you want.
|
||||
</Step>
|
||||
</Steps>
|
||||
Importing a resume file that contains cover letters, or sending one through the API, does the same: the letters are saved as letters and the resume keeps none.
|
||||
|
||||
## Tips for effective cover letters
|
||||
|
||||
<Tip>**Keep it concise**: Aim for 250-400 words. Recruiters spend about one minute reading cover letters.</Tip>
|
||||
|
||||
<Tip>
|
||||
**Tailor each letter**: Customize your cover letter for each application. Reference specific job requirements and
|
||||
company values.
|
||||
</Tip>
|
||||
|
||||
<Tip>
|
||||
**Use the same styling**: Your cover letter inherits the fonts and colors from your resume template, so both
|
||||
documents match.
|
||||
**Tailor each letter**: Write one letter per application. Reference specific job requirements and company values.
|
||||
</Tip>
|
||||
|
||||
<Tip>
|
||||
**Proofread carefully**: Spelling and grammar errors can disqualify your application. Review your letter before
|
||||
exporting.
|
||||
</Tip>
|
||||
|
||||
## Managing multiple cover letters
|
||||
|
||||
Since cover letters are custom sections, you can:
|
||||
|
||||
- Create multiple cover letter sections for different job applications
|
||||
- Name each section descriptively (e.g., "Cover Letter - Google", "Cover Letter - Meta")
|
||||
- Show or hide sections as needed when exporting
|
||||
- Duplicate sections to use as templates for new applications
|
||||
|
||||
@@ -18,10 +18,6 @@ Use PDF when you are submitting the finished resume. Use Markdown when you want
|
||||
Click **Download** in the builder header, or open the **Export** section in the right sidebar and click **Download**.
|
||||
</Step>
|
||||
|
||||
<Step title="Choose Resume or Cover letter">
|
||||
Select **Resume** to export the resume content. Select **Cover letter** if you want a Markdown copy of the cover letter instead.
|
||||
</Step>
|
||||
|
||||
<Step title="Download Markdown">
|
||||
In the **Markdown** row, click **Download**. Your browser saves a `.md` file.
|
||||
</Step>
|
||||
@@ -95,7 +91,7 @@ C++ - Blueprints - UE5 Features
|
||||
|
||||
## What Markdown includes
|
||||
|
||||
Markdown export includes the visible resume or cover-letter content for the selected tab. It keeps the document structure, section headings, item headings, rich-text paragraphs, lists, links, bold text, and italic text.
|
||||
Markdown export includes the visible resume content. It keeps the document structure, section headings, item headings, rich-text paragraphs, lists, links, bold text, and italic text.
|
||||
|
||||
Markdown export does not include visual-only choices such as template design, page size, column layout, colors, icon styling, spacing, or PDF page breaks.
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
title: "Exporting your resume"
|
||||
description: "Download your resume or cover letter from Reactive Resume as PDF, DOCX, Markdown, or JSON, and pick the right format for each situation."
|
||||
description: "Download your resume from Reactive Resume as PDF, DOCX, Markdown, or JSON, and pick the right format for each situation."
|
||||
---
|
||||
|
||||
Reactive Resume can export your resume, and your cover letter separately when you have one, in four formats.
|
||||
Reactive Resume can export your resume in four formats.
|
||||
|
||||
| Format | Best for |
|
||||
| --- | --- |
|
||||
@@ -25,10 +25,6 @@ Every export runs from the same **Download** dialog. You can open it two ways.
|
||||
Select the **Download** button in the top-right of the builder header, next to the sidebar toggle. You can also open the same dialog from the **Export** section of the right sidebar.
|
||||
</Step>
|
||||
|
||||
<Step title="Pick what to export">
|
||||
At the top of the dialog, use the tabs to choose **Resume** or **Cover letter**. The **Cover letter** tab is only available when your resume contains a visible cover letter section.
|
||||
</Step>
|
||||
|
||||
<Step title="Choose a format">
|
||||
Select **Download** on the format you want. The dialog closes and your browser saves the file using the resume name as the filename.
|
||||
</Step>
|
||||
@@ -38,18 +34,9 @@ Every export runs from the same **Download** dialog. You can open it two ways.
|
||||
While an export is running, the trigger button and format buttons show a spinner and stay disabled until the file is ready.
|
||||
</Tip>
|
||||
|
||||
## Export the resume and cover letter separately
|
||||
## Cover letters
|
||||
|
||||
If your resume includes a [cover letter section](/guides/adding-a-cover-letter), the download dialog treats the resume and cover letter as two distinct documents.
|
||||
|
||||
- For PDF, DOCX, and Markdown, the **Resume** tab exports only your resume content and excludes cover letter sections. Its JSON export retains embedded cover-letter custom sections; independent cover letters remain separate dashboard exports.
|
||||
- The **Cover letter** tab exports only visible cover letter sections, rendered full width on their own page.
|
||||
|
||||
You do not need to reorder pages or hide sections by hand to produce a resume-only or cover-letter-only PDF. Select the tab that matches what you want, then pick a format.
|
||||
|
||||
<Info>
|
||||
The **Cover letter** tab is disabled when the resume has no cover letter section, or when every cover letter section or item is hidden.
|
||||
</Info>
|
||||
Cover letters are documents of their own. Export one from the letter itself: open it and click **Share & export**. See [Adding a cover letter](/guides/adding-a-cover-letter). When the resume's application has a letter, the **Download** tab offers to include it as a second file.
|
||||
|
||||
## Export as PDF
|
||||
|
||||
@@ -68,7 +55,7 @@ Use PDF for:
|
||||
|
||||
## Export as DOCX
|
||||
|
||||
Choose **DOCX** when you want to continue editing your resume or cover letter in a word processor.
|
||||
Choose **DOCX** when you want to continue editing your resume in a word processor.
|
||||
|
||||
Use DOCX for:
|
||||
|
||||
@@ -82,7 +69,7 @@ Use DOCX for:
|
||||
|
||||
## Export as Markdown
|
||||
|
||||
Choose **Markdown** when you want a plain-text version of your resume or cover letter that is easy to edit anywhere and easy to feed into AI tools.
|
||||
Choose **Markdown** when you want a plain-text version of your resume that is easy to edit anywhere and easy to feed into AI tools.
|
||||
|
||||
Use Markdown for:
|
||||
|
||||
@@ -98,7 +85,7 @@ For examples and common workflows, see [Exporting a resume to Markdown](/guides/
|
||||
|
||||
Choose **JSON** when you want a structured backup of your resume.
|
||||
|
||||
The JSON export includes your full resume content and settings, including any cover letter sections embedded in that resume. You can import it later from the dashboard to restore the resume or create another version.
|
||||
The JSON export includes your full resume content and settings. Cover letters are exported on their own. You can import it later from the dashboard to restore the resume or create another version.
|
||||
|
||||
JSON is also useful when working with AI assistants that understand structured data. Export JSON, ask an assistant to review or edit the fields, then import the revised JSON as a new resume.
|
||||
|
||||
@@ -120,7 +107,7 @@ Reactive Resume provides three different JSON shapes:
|
||||
|
||||
| Export | How to create it | What it contains | Can you import it as one resume? |
|
||||
| --- | --- | --- | --- |
|
||||
| **Single resume** | In the builder, open **Download**, stay on **Resume**, and download **JSON**. | Resume content and settings, including cover letter sections embedded in that resume. | Yes. |
|
||||
| **Single resume** | In the builder, open **Download** and download **JSON**. | Resume content and settings. | Yes. |
|
||||
| **Independent cover letter** | Open a letter from **Cover Letters** on the dashboard and select **Export JSON**. | That letter's content and copied resume styling in the Reactive Resume cover-letter format. | No. Import it through the cover-letter library instead. |
|
||||
| **Account archive** | Open **Settings**, go to **Account**, and under **Your data** select **Export**. | A zip with `account.json` (profile and an `exportedAt` timestamp), each resume and cover letter as its own JSON file, and `applications.json`. | No. It is an archive, not a single-resume import file. |
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@ Tool names use canonical unprefixed `snake_case` names.
|
||||
| `list_resumes` | List all resumes with IDs, names, tags, and status. Supports filtering by tags and sorting by last updated, creation date, or name |
|
||||
| `list_resume_tags` | List every distinct tag in use across your resumes (sorted) |
|
||||
| `read_resume` | Get the full data of a specific resume by ID |
|
||||
| `download_resume_pdf` | Create a 10-minute authenticated PDF download URL. Defaults to the resume; set `target: "cover-letter"` for its visible cover letter |
|
||||
| `download_resume_pdf` | Create a 10-minute authenticated PDF download URL for a resume |
|
||||
| `create_resume` | Create a new, empty resume with a name and slug. Optionally pre-fill with sample data |
|
||||
| `import_resume` | Create a resume from a full ResumeData JSON export (random name/slug). Large files may exceed client limits |
|
||||
| `duplicate_resume` | Create a copy of an existing resume with a new name and slug |
|
||||
@@ -230,14 +230,13 @@ Tool names use canonical unprefixed `snake_case` names.
|
||||
| `lock_resume` | Lock a resume to prevent edits, patches, and deletion |
|
||||
| `unlock_resume` | Unlock a previously locked resume to re-enable editing |
|
||||
| `get_resume_statistics` | Get view and download statistics for a resume |
|
||||
| `list_cover_letters` | List independent cover letters in the cover-letter library; embedded resume cover letters are not listed here |
|
||||
| `list_cover_letters` | List the account's cover letters, which are documents of their own |
|
||||
| `read_cover_letter` | Read one independent library cover letter by ID |
|
||||
| `create_cover_letter` | Create an independent library cover letter, optionally linked to a resume or application |
|
||||
| `update_cover_letter` | Update an independent cover letter with revision-checked concurrency |
|
||||
| `refresh_cover_letter_style` | Refresh independent-letter styling from a resume without changing its content or template |
|
||||
| `duplicate_cover_letter` | Create an independent copy of a library cover letter |
|
||||
| `delete_cover_letter` | Permanently delete an independent library cover letter; requires its current revision |
|
||||
| `copy_embedded_cover_letter` | Copy a cover-letter item from a resume into the independent cover-letter library; leaves embedded item unchanged |
|
||||
| `export_cover_letter` | Export one independent library cover letter as versioned cover-letter JSON |
|
||||
| `import_cover_letter` | Import versioned cover-letter JSON as a new independent library letter |
|
||||
| `list_applications` | List tracked job applications. Supports stage, tag, and archived filters |
|
||||
|
||||
+2
-687
@@ -14320,687 +14320,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/cover-letters/from-resume": {
|
||||
"post": {
|
||||
"operationId": "copyEmbeddedCoverLetter",
|
||||
"summary": "Copy an embedded cover letter",
|
||||
"description": "Creates a saved cover letter by copying an embedded cover-letter item from a resume.",
|
||||
"tags": [
|
||||
"Cover Letters"
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"resumeId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"sectionId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"itemId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 100
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"resumeId",
|
||||
"sectionId",
|
||||
"itemId"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "The newly created cover letter.",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 100
|
||||
},
|
||||
"recipient": {
|
||||
"type": "string",
|
||||
"maxLength": 20000
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"maxLength": 100000
|
||||
},
|
||||
"style": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"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": {
|
||||
"type": "string",
|
||||
"description": "The email address of the author of the resume."
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "The phone number of the author of the resume."
|
||||
},
|
||||
"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://)."
|
||||
},
|
||||
"label": {
|
||||
"type": "string",
|
||||
"description": "The label to display for the URL. Leave blank to display the URL as-is."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"url",
|
||||
"label"
|
||||
],
|
||||
"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."
|
||||
},
|
||||
"link": {
|
||||
"type": "string",
|
||||
"description": "If the custom field should be a link, the URL to link to."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"icon",
|
||||
"text",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"description": "The custom fields to display on the resume."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"headline",
|
||||
"email",
|
||||
"phone",
|
||||
"location",
|
||||
"website",
|
||||
"customFields"
|
||||
]
|
||||
},
|
||||
"picture": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hidden": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to hide the picture from the resume."
|
||||
},
|
||||
"fit": {
|
||||
"enum": [
|
||||
"cover",
|
||||
"contain"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "How the picture fits its frame: cover crops overflow, while contain preserves the whole image."
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"description": "The URL to the picture to display on the resume. Prefer local app-served paths (for example /uploads/...) populated via upload."
|
||||
},
|
||||
"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",
|
||||
"fit",
|
||||
"url",
|
||||
"size",
|
||||
"rotation",
|
||||
"aspectRatio",
|
||||
"borderRadius",
|
||||
"borderColor",
|
||||
"borderWidth",
|
||||
"shadowColor",
|
||||
"shadowWidth"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"template": {
|
||||
"enum": [
|
||||
"azurill",
|
||||
"bronzor",
|
||||
"chikorita",
|
||||
"ditgar",
|
||||
"ditto",
|
||||
"gengar",
|
||||
"glalie",
|
||||
"kakuna",
|
||||
"lapras",
|
||||
"leafish",
|
||||
"meowth",
|
||||
"onyx",
|
||||
"pikachu",
|
||||
"rhyhorn",
|
||||
"scizor"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "The template to use for the resume. Determines the overall design and appearance of the resume."
|
||||
},
|
||||
"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,
|
||||
"maximum": 100,
|
||||
"description": "The horizontal margin of the page, defined in points (pt)."
|
||||
},
|
||||
"marginY": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"description": "The vertical margin of the page, defined in points (pt)."
|
||||
},
|
||||
"format": {
|
||||
"enum": [
|
||||
"a4",
|
||||
"letter",
|
||||
"free-form"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "The format of the page. Can be 'a4', 'letter', or 'free-form'."
|
||||
},
|
||||
"locale": {
|
||||
"type": "string",
|
||||
"description": "The locale of the page. Used for displaying pre-translated section headings, if not overridden."
|
||||
},
|
||||
"dateFormat": {
|
||||
"enum": [
|
||||
"short",
|
||||
"long",
|
||||
"numeric",
|
||||
"iso"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "How dates print: 'short' (Mar 2022), 'long' (March 2022), 'numeric' (03/2022) or 'iso' (2022-03). When missing, it's read from how the dates were typed."
|
||||
},
|
||||
"hideLinkUnderline": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to hide the underlines of the links."
|
||||
},
|
||||
"hideIcons": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to hide the item-level icons (skills, profiles, interests)."
|
||||
},
|
||||
"hideSectionIcons": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to hide the section heading icons displayed before section titles."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"gapX",
|
||||
"gapY",
|
||||
"marginX",
|
||||
"marginY",
|
||||
"format",
|
||||
"locale",
|
||||
"hideLinkUnderline",
|
||||
"hideIcons",
|
||||
"hideSectionIcons"
|
||||
],
|
||||
"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": {
|
||||
"enum": [
|
||||
"hidden",
|
||||
"circle",
|
||||
"square",
|
||||
"rectangle",
|
||||
"rectangle-full",
|
||||
"progress-bar",
|
||||
"icon"
|
||||
],
|
||||
"type": "string",
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"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"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"level",
|
||||
"colors"
|
||||
],
|
||||
"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 supported resume font."
|
||||
},
|
||||
"fontWeights": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"enum": [
|
||||
"100",
|
||||
"200",
|
||||
"300",
|
||||
"400",
|
||||
"500",
|
||||
"600",
|
||||
"700",
|
||||
"800",
|
||||
"900"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"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."
|
||||
},
|
||||
"fontSize": {
|
||||
"type": "number",
|
||||
"minimum": 6,
|
||||
"maximum": 24,
|
||||
"description": "The size of the font to use, defined in points (pt)."
|
||||
},
|
||||
"lineHeight": {
|
||||
"type": "number",
|
||||
"minimum": 0.5,
|
||||
"maximum": 4,
|
||||
"description": "The line height of the font to use, defined as a multiplier of the font size (e.g. 1.5 for 1.5x)."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"fontFamily",
|
||||
"fontWeights",
|
||||
"fontSize",
|
||||
"lineHeight"
|
||||
],
|
||||
"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 supported resume font."
|
||||
},
|
||||
"fontWeights": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"enum": [
|
||||
"100",
|
||||
"200",
|
||||
"300",
|
||||
"400",
|
||||
"500",
|
||||
"600",
|
||||
"700",
|
||||
"800",
|
||||
"900"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"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."
|
||||
},
|
||||
"fontSize": {
|
||||
"type": "number",
|
||||
"minimum": 6,
|
||||
"maximum": 24,
|
||||
"description": "The size of the font to use, defined in points (pt)."
|
||||
},
|
||||
"lineHeight": {
|
||||
"type": "number",
|
||||
"minimum": 0.5,
|
||||
"maximum": 4,
|
||||
"description": "The line height of the font to use, defined as a multiplier of the font size (e.g. 1.5 for 1.5x)."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"fontFamily",
|
||||
"fontWeights",
|
||||
"fontSize",
|
||||
"lineHeight"
|
||||
],
|
||||
"description": "The typography for the headings of the resume."
|
||||
},
|
||||
"hyphenation": {
|
||||
"type": "boolean",
|
||||
"description": "Enable automatic PDF hyphenation using the resume language. Currently supports German. Defaults to false."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"body",
|
||||
"heading"
|
||||
],
|
||||
"description": "The typography settings of the resume. Determines the fonts and sizes of the body and headings of the resume."
|
||||
},
|
||||
"styleRules": {
|
||||
"description": "Structured style rules that target semantic resume sections and slots for PDF rendering."
|
||||
},
|
||||
"stylesheet": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"mode": {
|
||||
"enum": [
|
||||
"legacy",
|
||||
"semantic"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"source": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"languageVersion": {
|
||||
"type": "integer",
|
||||
"minimum": -9007199254740991,
|
||||
"maximum": 9007199254740991,
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"text": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"languageVersion",
|
||||
"text"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"mode",
|
||||
"source"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"check": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"ignored": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Check issues the author chose to ignore, by issue key (the rule code and where it applies)."
|
||||
},
|
||||
"hiddenTerms": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Job-posting terms the author hid from Job match as not true for them."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ignored",
|
||||
"hiddenTerms"
|
||||
],
|
||||
"description": "The author's Check choices for this resume. Not printed; missing until a choice is made."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"template",
|
||||
"page",
|
||||
"design",
|
||||
"typography"
|
||||
]
|
||||
},
|
||||
"sectionId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"itemId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"basics",
|
||||
"picture",
|
||||
"metadata",
|
||||
"sectionId",
|
||||
"itemId"
|
||||
]
|
||||
},
|
||||
"layout": {
|
||||
"enum": [
|
||||
"structured",
|
||||
"freeform"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "structured: recipient name, company and date fields, a greeting from the name, the body and a sign-off. freeform: the recipient block and body as written (letters from before structured letters).",
|
||||
"default": "freeform"
|
||||
},
|
||||
"recipientName": {
|
||||
"type": "string",
|
||||
"maxLength": 200,
|
||||
"default": "",
|
||||
"description": "Who the letter is to: a person, or a team."
|
||||
},
|
||||
"recipientCompany": {
|
||||
"type": "string",
|
||||
"maxLength": 200,
|
||||
"default": ""
|
||||
},
|
||||
"letterDate": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"description": "The letter's date, as YYYY-MM-DD."
|
||||
},
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"sourceResumeId": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sourceApplicationId": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"senderLinked": {
|
||||
"type": "boolean",
|
||||
"description": "The sender's details come live from the source resume, instead of the copy in `style`."
|
||||
},
|
||||
"designLinked": {
|
||||
"type": "boolean",
|
||||
"description": "The design comes live from the source resume, instead of the copy in `style`."
|
||||
},
|
||||
"isLocked": {
|
||||
"type": "boolean",
|
||||
"description": "Locked letters can't be edited or moved to Trash until they're unlocked."
|
||||
},
|
||||
"revision": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 9007199254740991
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"x-native-type": "date"
|
||||
},
|
||||
"updatedAt": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"x-native-type": "date"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"recipient",
|
||||
"content",
|
||||
"style",
|
||||
"id",
|
||||
"sourceResumeId",
|
||||
"sourceApplicationId",
|
||||
"senderLinked",
|
||||
"designLinked",
|
||||
"isLocked",
|
||||
"revision",
|
||||
"createdAt",
|
||||
"updatedAt"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/cover-letters/{id}/export": {
|
||||
"get": {
|
||||
"operationId": "exportCoverLetter",
|
||||
@@ -46878,12 +46197,8 @@
|
||||
"name": "target",
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"enum": [
|
||||
"resume",
|
||||
"cover-letter"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Which document to download."
|
||||
"const": "resume",
|
||||
"description": "Deprecated, only `resume`: cover letters are documents of their own (`/cover-letters`)."
|
||||
},
|
||||
"allowEmptyValue": true,
|
||||
"allowReserved": true
|
||||
|
||||
Reference in New Issue
Block a user