API Docs

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.

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>"
    }
  ]
}
NOTE: The new project experience is created disabled and marked as recently added, and it is placed first in the list. The consultant decides whether to show it on their CV (résumé). Creating it does not publish it.
NOTE: There is no duplicate check. Call this twice for the same user and project and you get two project experiences. If one of the user IDs cannot be found, the whole request fails with 404 and no CV (résumé) is changed.

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.

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.

  • 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: true as 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 409 with "reason": "linked-project-experiences". The message is translated into the account's language, so branch on reason, not on the text.
  • Merging projects keeps hard links. Linked experiences move to the surviving project. Copies have their reference_project_id cleared, 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.