Project Linking
Adding a reference project to a consultant's CV (résumé) creates a project experience on their master CV (résumé). You choose how that experience relates to the project it came from.
- Copy. Flowcase copies the project's fields onto the CV (résumé) once, at the moment you add it. The two drift apart from then on. Editing the project leaves the CV (résumé) untouched.
- Hard link. The CV (résumé) stores nothing for the inherited fields. It reads them from the reference project every time. One edit to the project updates every CV (résumé) that carries it.
This guide covers the second case: adding consultants to a reference project so that each new project experience is hard-linked to it.
Add consultants to a project as a hard link
POST https://<subdomain>.flowcase.com/api/v2/company/cv/customers/<customer_id>/projects/<project_id>/consultants
One project per request, as many consultants as you like. Each named user gets a new project experience on their master CV (résumé).
Request body
{
"user_ids": ["<user_id>"],
"link_to_project": true,
"include_dates": true,
"notify_by_email": false,
"include_section_ids": true
}
| Field | Type | Description |
|---|---|---|
user_ids |
array[string] | Required. The users whose master CVs (résumés) get the project. |
link_to_project |
boolean | Optional, default false. Send true to create a hard link. A non-boolean value is rejected with 400. |
include_dates |
boolean | Optional. Send true to seed the experience with the project's month_from, year_from, month_to and year_to. |
notify_by_email |
boolean | Optional, default false. Emails each consultant that a project was added. |
include_section_ids |
boolean | Optional. Adds section_id to each entry of the response, so you can address the new project experience without re-reading the CV (résumé). |
customer_contact_ids and project_image_ids are ignored on a hard link, because contacts and images are read from the reference project. Add them to the project instead.
Response body
{
"updated_cvs": [
{
"user_id": "<user_id>",
"cv_id": "<cv_id>",
"name": "<name>",
"section_id": "<project_experience_id>"
}
]
}
What the hard link inherits
These fields on the project experience are read from the reference project. The names differ on each side.
| Project experience field | Reference project field |
|---|---|
description |
project_name |
long_description |
project_description |
project_type |
type |
contract_type |
contract_type |
project_address |
project_address |
location_country_code |
location_country_code |
project_extent_amt |
extent_amt |
project_extent_currency |
extent_currency |
project_extent_hours |
extent_hours_new |
total_extent_amt |
total_extent_amt |
total_extent_currency |
total_extent_currency |
total_extent_hours |
total_extent_hours |
area_amt |
area_amt |
area_unit |
area_unit |
customer_value_proposition |
the project's first enabled value proposition |
images |
project_introduction_images |
project_experience_customer_contacts |
the project's enabled customer_contacts |
These come from the reference project's customer.
| Project experience field | Reference customer field |
|---|---|
customer |
customer_name |
customer_description |
customer_description |
industry |
the customer's masterdata industry |
reference_customer_id |
the customer's ID |
What each CV (résumé) still owns
A hard link does not take over the whole record. These stay per CV (résumé), and the consultant or your integration can change them freely on a linked experience:
month_from, year_from, month_to, year_to, percent_allocated, extent_hours, expected_roll_off_date, disabled, starred, order, exclude_tags, external_unique_id, and the roles and project_experience_skills sub-resources.
Dates are seeded from the reference project when the link is made and then drift. Two consultants linked to the same project can hold different dates for it, which is usually right: they worked on it at different times.
Check the link
Read the CV (résumé) back to confirm the link:
GET https://<subdomain>.flowcase.com/api/v3/cvs/<user_id>/<cv_id>
Each entry in project_experiences carries the link fields:
{
"_id": "<project_experience_id>",
"link_type": "linked",
"reference_project_id": "<project_id>",
"reference_customer_id": "<customer_id>",
"reference_project": {
"external_unique_id": "EXT-1234"
},
"description": { "int": "Acme platform rebuild" },
"customer": { "int": "Acme Corporation" }
}
Read link_type to tell a hard link from a copy. Both states carry reference_project_id, so that field alone does not answer the question. The inherited values are resolved for you, so description and customer read the same as they would on a copy.
reference_project.external_unique_id appears only on hard links. Join on it if your external system owns the project IDs, and you save a call to look the project up.
To read one experience rather than the whole CV (résumé), use the section_id from the response above:
GET https://<subdomain>.flowcase.com/api/v3/cvs/<user_id>/<cv_id>/project_experiences/<section_id>
From the project side, GET https://<subdomain>.flowcase.com/api/v2/company/cv/customers/<customer_id>/projects/<project_id> returns has_linked_project_experiences. It is true when at least one CV (résumé) holds a hard link to the project. Copies do not count.
Editing a linked project experience
Write the inherited fields on the reference project, not on the CV (résumé). Sending description, customer, long_description or any other inherited field in a section update against a hard-linked experience is an error, not a silent no-op.
Two sub-resource writes are blocked outright and return 422:
- adding an image to a hard-linked project experience
- adding a customer contact to a hard-linked project experience
Both come from the reference project. Add them there and every linked CV (résumé) picks them up.
Roles and skills are not inherited, so you can add, change and remove them as normal.
Before you commit to hard links
- The API cannot undo a link. Linking and unlinking an existing project experience is available in the Flowcase web app only. Treat
link_to_project: trueas a one-way door and get the reference project right before you link consultants to it. - A project with hard links cannot be deleted. The request returns
409with"reason": "linked-project-experiences". The message is translated into the account's language, so branch onreason, not on the text. - Merging projects keeps hard links. Linked experiences move to the surviving project. Copies have their
reference_project_idcleared, so a merge quietly ends the association for every CV (résumé) that holds a copy. - The older sync endpoints skip linked experiences. Overwriting project fields across CVs (résumés) works by matching the customer and project name stored on the CV (résumé). A hard-linked experience stores neither, so those endpoints pass it over. A hard link is already in sync by construction, but it does mean the two mechanisms cover different sets of CVs (résumés).
- Proposals carry the link. Copying a CV (résumé) into a proposal keeps the link, so a tailored CV (résumé) still reads from the reference project. See Proposals.
Use hard links when the reference project is the single source of truth and you want one edit to reach every CV (résumé). If you sync projects from an external system, hard links keep Flowcase downstream of that system with no reconciliation work. The cost is that consultants lose the ability to tailor the wording, and you cannot undo a link from the API. Omit link_to_project to create copies instead.
Response codes
| Status | Meaning |
|---|---|
| 200 | The call succeeded. |
| 400 | link_to_project was not a boolean, or hard linking is not enabled for the account. |
| 403 | The key lacks the role needed to write to one of the target CVs (résumés), or an external user tried to create a hard link. |
| 404 | The customer, project, or one of the users does not exist. No CV (résumé) is changed. |
| 409 | A reference project with hard links cannot be deleted. |
| 422 | An image or customer contact was added to a hard-linked project experience. |
| 429 | Rate limit exceeded. See Rate Limits. |