{"openapi":"3.0.1","info":{"title":"Jarvi API","description":"Read and write your Jarvi workspace: profiles (talents and contacts), projects, companies, job offers and files.\n\n**Authentication.** Send your API key in the `X-API-KEY` header. Keys are created in Jarvi under Preferences → API. The public key may only create profiles and applications; every other route needs the private key.\n\n**Pagination.** List endpoints answer `{ data, total }`. `limit` defaults to 100 and caps at 1000, so read `total` and walk `offset` until you have collected it — a single call does not return the whole set.\n\n**Filtering and sorting.** `where` and `orderBy` are JSON objects sent as query strings. What each resource accepts is the `ProfilesFilters`, `CompaniesFilters` and `ProjectsFilters` schemas of this document, and is explained at https://api-docs.jarvi.tech/en/search. Use the `_search` operator rather than `_ilike`: it queries an index instead of scanning the workspace.\n\n**Writing is upserting.** POST creates the record when it does not exist and updates it when it does, matched on the Jarvi id you pass (`profileId`, `companyId`, `projectId`) or on your own `externalId`.\n\n**Custom fields.** Any property you send that is not documented here is read as a custom field, and custom field values come back alongside the standard ones. See https://api-docs.jarvi.tech/en/custom-fields.\n\n**Rate limit.** Budgeted on cumulative execution time rather than on a number of calls: 5 minutes per rolling hour, enforced Monday to Friday 8:00–19:00 Europe/Paris only. Nights and weekends are unmetered — that is the window for batch jobs. Over budget answers 429 with a `Retry-After` header.\n\n**Errors** are JSON: `error` carries a stable code, `message` explains, `documentation_url` points at the page that covers it.\n\nAn assistant can also reach this data through the Jarvi MCP server at https://mcp.jarvi.tech — see https://api-docs.jarvi.tech/en/mcp.","license":{"name":"Proprietary","url":"https://api-docs.jarvi.tech/en/introduction#terms-of-use"},"version":"2.0.0"},"externalDocs":{"description":"Guides, use cases and the filter reference","url":"https://api-docs.jarvi.tech/en/introduction"},"servers":[{"url":"https://functions.prod.jarvi.tech/v1/public-api"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"Profiles","description":"People — talents, contacts, or both"},{"name":"Applicants","description":"Job applications, profile and CV in one call"},{"name":"Projects","description":"Recruitment assignments, talent pools and sales projects"},{"name":"Companies","description":"Organisations linked to profiles and projects"},{"name":"Offers","description":"Published job offers, for a careers page"},{"name":"Files","description":"Uploads to attach to a profile"},{"name":"GraphQL","description":"Everything the REST routes do not cover"}],"paths":{"/rest/v2/projects":{"get":{"parameters":[{"in":"query","name":"updatedAfter","schema":{"type":"string"},"required":false,"description":"An ISO 8601 date string to filter projects updated after this date","example":"2024-05-30T10:19:11.381731+00:00"},{"in":"query","name":"where","required":false,"example":"{\"projectNameSearch\":{\"_search\":\"Developer\"}}","description":"A JSON object, sent JSON-encoded in the query string. Combine filters with _and, _or and _not. What it accepts is the ProjectsFilters schema this parameter points at, described at [every filter projects accepts](https://api-docs.jarvi.tech/en/search#projects).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectsFilters"},"example":{"projectNameSearch":{"_search":"Developer"}}}}},{"in":"query","name":"orderBy","schema":{"type":"string"},"required":false,"example":"{\"createdAt\":\"desc\"}","description":"A JSON object string pairing one field with \"asc\" or \"desc\". Allowed fields: name, referenceId, createdAt, status.order, company.name, customFieldsValue., customFieldsNumericValue.."},{"in":"query","name":"limit","schema":{"type":"number"},"required":false,"description":"The number of projects to return. Default is 100. Maximum is 1000"},{"in":"query","name":"offset","schema":{"type":"number"},"required":false,"description":"The number of projects to skip. Default is 0."}],"description":"Get all projects (recruitment, sales, etc.) with their custom fields, files, and more. Results are paginated: `limit` defaults to 100 and caps at 1000, so read `total` and walk `offset` until you have collected every record.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the project, used in the public API and in app URLs."},"name":{"type":"string","description":"Title of the project — a job opening, a sales mission or a talent pool. Typed by the user, or taken from the LinkedIn recruiter project or Sales Navigator list name when the project comes from an import."},"userId":{"type":"string","format":"uuid"},"linkedinId":{"type":"string","description":"Represents either a linkedin recruiter project OR sales navigator list"},"createdAt":{"type":"string","format":"date-time","description":"Date the project was created. Data imports replace it with the creation date coming from the source ATS or CRM."},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time"},"colorId":{"type":"string"},"presetId":{"type":"string","format":"uuid","description":"The preset is the project model (fields, statuses, templates)"},"isMadeForRecruitment":{"type":"boolean"},"isMadeForSales":{"type":"boolean"},"groupId":{"type":"string","format":"uuid"},"group":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"user":{"type":"object","properties":{"displayName":{"type":"string"},"email":{"type":"string"},"id":{"type":"string","format":"uuid"},"disabled":{"type":"boolean"}},"description":"An object relationship"},"users":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"}},"description":"An array relationship"}},"assignees":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"displayName":{"type":"string"},"email":{"type":"string"},"id":{"type":"string","format":"uuid"},"disabled":{"type":"boolean"}},"description":"An object relationship"}},"description":"An array relationship"}},"linkedinContractId":{"type":"integer"},"statusId":{"type":"string","format":"uuid"},"ignoreHistoryBeforeProjectCreatedAt":{"type":"boolean"},"companyId":{"type":"string","format":"uuid","description":"Client company the project is for. Optional — a project can exist without a company, and deleting the company clears the link rather than the project."},"externalId":{"type":"string","description":"Identifier of the project in the client's own system. Unique per group, and used as the matching key by imports and by the public API."},"referenceId":{"type":"string","description":"The project reference id is used to map external job applications on website or jobboard to the project."},"linkedinIdType":{"type":"string","enum":["LINKEDIN_JOB_POSTING","LINKEDIN_SALES_NAVIGATOR_LIST","LINKEDIN_TALENT_PROJECT"]},"shortId":{"type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"file":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"size":{"type":"integer"},"mimeType":{"type":"string"}},"description":"An object relationship"}},"description":"An array relationship"}},"status":{"type":"object","properties":{"title":{"type":"string"},"colorId":{"type":"string"},"isAuto":{"type":"boolean"},"id":{"type":"string","format":"uuid"},"isArchived":{"type":"boolean"}},"description":"An object relationship"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"description":{"type":"string","description":"Description of the company, written by the user in the app or filled by an import. This is not the LinkedIn description, which lives on the linked LinkedIn company data."},"website":{"type":"string"},"name":{"type":"string","description":"Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger."},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"},"parent":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"name":{"type":"string","description":"Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger."},"linkedinCompanyData":{"type":"object","properties":{"name":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"},"linkedinCompanyData":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"foundedAt":{"type":"string","format":"date-time","description":"Year the company was founded, as published on its LinkedIn page. LinkedIn only gives the year, so the day and month fall back to January 1st — treat the day and month as meaningless."},"linkedinEmployeeCount":{"type":"integer","description":"How many LinkedIn members declare this company as their employer. A live headcount, which can be far above the size bracket the company declares."},"linkedinEmployeeStartCount":{"type":"integer","description":"Lower bound of the company size bracket declared on LinkedIn — 0, 2, 11, 51, 201, 501, 1001, 5001 or 10001 — paired with linkedinEmployeeEndCount (linkedin_employee_end_count). This is a declared size, not a headcount."},"linkedinEmployeeEndCount":{"type":"integer"},"linkedinUrl":{"type":"string"},"website":{"type":"string","description":"Company website, as published on its LinkedIn page."},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"},"legaldata":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"activity":{"type":"string","description":"Declared corporate purpose (\"objet social\") of the company as filed with the French registry."}},"description":"An object relationship"}},"description":"An object relationship"},"fieldsValues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"field":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["boolean","date","group","multiplechoice","number","rating","richtext","singlechoice","singlelocation","text","url"]},"name":{"type":"string"},"purpose":{"type":"string","enum":["business_estimated_revenue","joboffer","joboffer_activity_area","joboffer_benefits","joboffer_company_description","joboffer_company_name","joboffer_contract_duration_in_months","joboffer_contract_type","joboffer_currency","joboffer_description","joboffer_employee_status","joboffer_is_fulltime","joboffer_job_category","joboffer_level_of_study","joboffer_location","joboffer_min_years_of_experience","joboffer_profile_description","joboffer_remote_days_per_week","joboffer_salary_is_public","joboffer_salary_per_year_max","joboffer_salary_per_year_min","joboffer_salary_range_eur","joboffer_sponsored","joboffer_title"],"description":"The purpose of a field determine how it is used when broadcasting job offers"},"isPublic":{"type":"boolean","description":"Indicates if the field data is public or not, if yes it will be in jobboards offers lists"}},"description":"An object relationship"},"fieldValue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"technicalValue":{"type":"string","description":"When the field is used for job offers broadcasting, we sometimes want a value different from the label"}},"description":"An object relationship"},"location":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"search":{"type":"string"},"locality":{"type":"string"},"postalCode":{"type":"string"},"administrativeAreaLevel2":{"type":"string"},"administrativeAreaLevel1":{"type":"string"},"countryName":{"type":"string"},"countryShortName":{"type":"string"},"formattedAddress":{"type":"string"},"center":{"type":"object","description":"PostGIS geography, as GeoJSON"},"route":{"type":"string"},"streetNumber":{"type":"string"},"accuracyLevel":{"type":"integer"}},"description":"An object relationship"},"value":{"type":"string"}},"description":"An array relationship"}},"jobBoardsOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"description":"An array relationship"}},"projectJobBoards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time"},"enabledAt":{"type":"string","format":"date-time"},"projectId":{"type":"string","format":"uuid"},"data":{"description":"Arbitrary JSON — its shape depends on the field"},"jobBoard":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"canonicalName":{"type":"string"},"name":{"type":"string","description":"The name of the job board"}},"description":"An object relationship"}},"description":"An array relationship"}},"profilesCountPerStatusGroup":{"type":"array","items":{"type":"object","properties":{"statusId":{"type":"string","format":"uuid"},"count":{"type":"integer","format":"int64"}},"description":"An array relationship"}}}}},"total":{"type":"integer","description":"The total number of projects matching the query"},"warnings":{"type":"array","description":"Present only when the request used an operator that is being retired. The request itself was answered normally.","items":{"$ref":"#/components/schemas/DeprecationWarning"}}}},"example":{"data":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","userId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","linkedinId":"Lorem ipsum","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","deletedAt":"2026-01-15T09:30:00Z","colorId":"Lorem ipsum","presetId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","isMadeForRecruitment":true,"isMadeForSales":true,"groupId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","group":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"user":{"displayName":"Lorem ipsum","email":"lorem.ipsum@example.com","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","disabled":true},"users":[{"userId":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}],"assignees":[{"user":{"displayName":"Lorem ipsum","email":"lorem.ipsum@example.com","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","disabled":true}}],"linkedinContractId":42,"statusId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","ignoreHistoryBeforeProjectCreatedAt":true,"companyId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","externalId":"Lorem ipsum","referenceId":"Lorem ipsum","linkedinIdType":"LINKEDIN_JOB_POSTING","shortId":"Lorem ipsum","files":[{"fileId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","file":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","size":42,"mimeType":"Lorem ipsum"}}],"status":{"title":"Lorem ipsum","colorId":"Lorem ipsum","isAuto":true,"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","isArchived":true},"company":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","description":"Lorem ipsum","website":"Lorem ipsum","name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"},"parent":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","linkedinCompanyData":{"name":"Lorem ipsum"}},"linkedinCompanyData":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","tagline":"Lorem ipsum","description":"Lorem ipsum","foundedAt":"2026-01-15T09:30:00Z","linkedinEmployeeCount":42,"linkedinEmployeeStartCount":42,"linkedinEmployeeEndCount":42,"linkedinUrl":"Lorem ipsum","website":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"}},"legaldata":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","activity":"Lorem ipsum"}},"fieldsValues":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","field":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"boolean","name":"Lorem ipsum","purpose":"business_estimated_revenue","isPublic":true},"fieldValue":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","technicalValue":"Lorem ipsum"},"location":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","search":"Lorem ipsum","locality":"Lorem ipsum","postalCode":"Lorem ipsum","administrativeAreaLevel2":"Lorem ipsum","administrativeAreaLevel1":"Lorem ipsum","countryName":"Lorem ipsum","countryShortName":"Lorem ipsum","formattedAddress":"Lorem ipsum","center":{},"route":"Lorem ipsum","streetNumber":"Lorem ipsum","accuracyLevel":42},"value":"Lorem ipsum"}],"jobBoardsOffers":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}],"projectJobBoards":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","deletedAt":"2026-01-15T09:30:00Z","enabledAt":"2026-01-15T09:30:00Z","projectId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","data":{},"jobBoard":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","canonicalName":"Lorem ipsum","name":"Lorem ipsum"}}],"profilesCountPerStatusGroup":[{"statusId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","count":42}]}],"total":1}}},"description":"Responses for GET /api/rest/projects"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Get Projects","operationId":"listProjects","tags":["Projects"]},"post":{"summary":"Creates or update a project","security":[{"ApiKeyAuth":[]}],"description":"Save a project in Jarvi. It creates the project if it does not exist, updates it if it does.","requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"projectId":{"type":"string","description":"The id of the project you want to update. ","example":"713a8005-e54d-4ee3-b6a4-89b27167dde6"},"name":{"type":"string","description":"The name of the project you want to update/create.","example":"Dev JAVA - IDF"},"externalId":{"type":"string","description":"The id of the project you want to update in your system.","example":"123456"},"isMadeForRecruitment":{"type":"boolean","description":"Whether the project is made for recruitment, and should be displayed in the ATS","example":true},"isMadeForSales":{"type":"boolean","description":"Whether the project is made for sales, and should be displayed in the CRM","example":true},"createdAt":{"type":"string","description":"The date of creation of the project","example":"2024-01-01T00:00:00.000Z"},"assignees":{"type":"string","description":"The assignees of the project","example":"Sarah Le Roué, Johan Barri, Quentin DECRE"},"statusId":{"type":"string","description":"The status of the project","example":"dbab8773-8b59-4597-af75-b31333dd5409"},"companyId":{"type":"string","description":"The company of the project","example":"df587e25-03e6-4b9a-aaa4-c9c20a913f4d"},"colorId":{"type":"string","description":"The color of the project","example":"#d81b60"},"customFieldsValues":{"type":"object","description":"Custom fields values for the project. The key should be the field ID and the value can be any text value.","example":{"00da911c-e3e1-46c1-86cc-0c1ec53e3213":"

Custom field content

","de7fae4a-5f73-43a4-a92f-e19c4ecd81f1":"true","8f4e7a2b-c9d1-45e6-b3a2-f8e9c7d6b5a4":"Angular, React, Vue"}}}}}}},"responses":{"201":{"description":"The application has been saved","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"Project saved successfully"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"},"projectId":{"type":"string","example":"d730cca9-d8b0-49e7-b2e0-c58c1bb7af9f"}}}}}},"400":{"description":"Cannot save profile, see details","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"Error details"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"description":"Unknown error","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"An error occured"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"}}}}}}},"operationId":"upsertProject","tags":["Projects"]}},"/rest/v2/applicants":{"post":{"summary":"Creates or update a profile and job application","security":[{"ApiKeyAuth":[]}],"description":"Save a new job application in Jarvi. It creates the profile if it does not exist, upload the file, link the profile to the recruitment project,...","requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"referenceId":{"type":"string","description":"The reference id of the job application. If provided, Jarvi will associate the profile to the right recruitment project","example":"JARVI001"},"projectId":{"type":"string","description":"(rarely used) As for the reference id, but with the Jarvi internal project id. You can use projectId, referenceId or none of them if you want to create a profile without linking it to a project","example":"713a8005-e54d-4ee3-b6a4-89b27167dde6"},"firstName":{"type":"string","description":"If not provided, will be extracted from the resume or Linkedin URL. If no resume or Linkedin URL, will be required","example":"Quentin"},"lastName":{"type":"string","description":"If not provided, will be extracted from the resume or Linkedin URL. If no resume or Linkedin URL, will be required","example":"Decré"},"emailAddresses":{"type":"string","description":"Multiple email addresses separated by a comma. If not provided, will be extracted from the resume or Linkedin URL.","example":"quentin@jarvi.tech, quentin@decre.tech"},"phoneNumbers":{"type":"string","description":"Multiple phone numbers separated by a comma. If not provided, will be extracted from the resume or Linkedin URL.","example":"+33752626164,0240493773"},"linkedinUrl":{"type":"string","description":"The linkedin URL of the profile. If provided, Jarvi will extract the profile informations from the linkedin profile","example":"https://www.linkedin.com/in/quentindecre/"},"historyEntrySubject":{"type":"string","description":"The subject of the historyentry you want to show in the profile’s Jarvi history. If not provided, will be \"Candidature depuis formulaire web\"","example":"Application from website"},"historyEntryMessage":{"type":"string","description":"The message of the historyentry you want to show in the profile’s Jarvi history","example":"The message of the historyentry you want to show in the profile’s Jarvi history"},"resumesFiles":{"type":"array","description":"The resume(s) of the profile. Will be parsed by Jarvi. Remember to convert to base64 before sending","items":{"type":"object","properties":{"fileName":{"type":"string","description":"The name of the file, including the extension","example":"cv.pdf"},"data":{"type":"string","description":"The base64 of the file.","example":"data:@file/pdf;base64,JVBERi0......AABTLAAAAAA="}}}},"files":{"type":"array","description":"(rarely used) Any file you want to upload with the profile. Will not be parsed. Remember to convert to base64 before sending","items":{"type":"object","properties":{"fileName":{"type":"string","description":"The name of the file, including the extension","example":"motivation.docx"},"data":{"type":"string","description":"The base64 of the file.","example":"data:@file/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,UEsDBBQ......AABTLAAAAAA="}}}},"externalId":{"type":"string","description":"(rarely used) Your id. Will merge with exisiting profile with same externalId","example":"Your id. Will merge with exisiting profile with same externalId"},"id":{"type":"string","description":"(rarely used) Jarvi uuid. Will merge with exisiting profile with same id","example":"Jarvi uuid. Will merge with exisiting profile with same id"},"location":{"type":"string","description":"The location of the profile. If not provided, will be extracted from the resume or Linkedin URL","example":"Rennes, France"},"headline":{"type":"string","description":"The headline of the profile. If not provided, will be extracted from the resume or Linkedin URL","example":"Co-Founder Jarvi"},"currentCompanyName":{"type":"string","description":"The current company name of the profile (creates a work experience / position line on the profile). If not provided, will be extracted from the resume or Linkedin URL. Note: this does NOT link the profile as a contact of a company record. To attach a contact to a company, use the `data.associations` payload with a COMPANY_CONTACT association (see currentCompanyId).","example":"Jarvi"},"currentCompanyId":{"type":"string","deprecated":true,"description":"Deprecated: this field no longer creates a company association. To attach a profile as a contact of an existing company, pass a `data` object with an `associations` array, e.g. data: { associations: [{ associationType: \"COMPANY_CONTACT\", company: { jarviId: \"\" } }] }. Use company.jarviId for an existing Jarvi company, or company.externalId + name + statusId to upsert one.","example":"713a8005-e54d-4ee3-b6a4-89b27167dde6"},"currentPosition":{"type":"string","description":"The current job title of the profile. If not provided, will be extracted from the resume or Linkedin URL","example":"Co-founder"},"":{"type":"string","description":"Any custom field you want to add to the profile. You can find the uuid of the custom field in the Jarvi settings. If you want to provide multiple values, you can separate them with a comma","example":"My custom field value for this profile"}}}}}},"responses":{"201":{"description":"The application has been saved","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"Profile saved successfully"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"},"profileId":{"type":"string","example":"d730cca9-d8b0-49e7-b2e0-c58c1bb7af9f"}}}}}},"400":{"description":"Cannot save profile, see details","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"Error details"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"description":"Unknown error","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"An error occured"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"}}}}}}},"operationId":"submitApplication","tags":["Applicants"]}},"/rest/v2/profiles":{"get":{"parameters":[{"in":"query","name":"updatedAfter","schema":{"type":"string"},"required":false,"description":"An ISO 8601 date string to filter profiles updated after this date","example":"2024-05-30T10:19:11.381731+00:00"},{"in":"query","name":"where","required":false,"example":"{\"quickSearch\":{\"_search\":\"Dupont\"}}","description":"A JSON object, sent JSON-encoded in the query string. Combine filters with _and, _or and _not. What it accepts is the ProfilesFilters schema this parameter points at, described at [every filter profiles accepts](https://api-docs.jarvi.tech/en/search#profiles).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilesFilters"},"example":{"quickSearch":{"_search":"Dupont"}}}}},{"in":"query","name":"orderBy","schema":{"type":"string"},"required":false,"example":"{\"createdAt\":\"desc\"}","description":"A JSON object string pairing one field with \"asc\" or \"desc\". Allowed fields: createdAt, addedAt, lastInteractionDate, firstName, source, createdByUserId, lastResumeUpdatedAt, countMessagesReceivedFromThisProfile, countMessagesSentToThisProfile, countMessagesScheduledToThisProfile, location.formattedAddressForSorting, lastPosition.companyName, lastPosition.title, lastPosition.startDate, customFieldsValue., customFieldsNumericValue., status.title, association.updatedAt."},{"in":"query","name":"limit","schema":{"type":"number"},"required":false,"description":"The number of profiles to return. Default is 100, max is 1000"},{"in":"query","name":"offset","schema":{"type":"number"},"required":false,"description":"Return profiles starting from this offset","example":0}],"description":"Get all profiles with their custom fields, files, and more. Results are paginated: `limit` defaults to 100 and caps at 1000, so read `total` and walk `offset` until you have collected every record.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the profile, used in the public API and in app URLs."},"shortId":{"type":"string","description":"Short readable reference for the profile — what users type in quick search and what appears on generated documents. Assigned once at creation and never changes."},"addedAt":{"type":"string","format":"date-time","description":"Date the profile entered the group's base — what recruiters read as \"added on\". Set automatically when the profile is created or restored, unless the caller provides its own value, which is what imports do to keep the original date."},"birthday":{"description":"Arbitrary JSON — its shape depends on the field"},"canSendInMail":{"type":"boolean"},"countConnexionsWithThisProfile":{"type":"integer"},"countInvitationsScheduledToThisProfile":{"type":"integer"},"countInvitationsSentToThisProfile":{"type":"integer"},"countApplicationsFromThisProfile":{"type":"integer"},"countMessagesReceivedFromThisProfile":{"type":"integer","description":"How many messages this profile has sent back, across every channel — LinkedIn, email, SMS, WhatsApp, Telegram. Maintained by a trigger. A profile with at least one is automatically moved to the \"replied\" status."},"countMessagesScheduledToThisProfile":{"type":"integer","description":"How many messages are still waiting to be sent to this profile. The count drops back once a message has been sent and synced back, so it reflects what is pending rather than everything ever scheduled. Drafts and connection invitations are excluded. Maintained by a trigger."},"countMessagesSentToThisProfile":{"type":"integer","description":"How many messages have been sent to this profile, across every channel. Connection invitations are counted apart, in countInvitationsSentToThisProfile (trigger_count_invitations_sent_to_this_profile). Maintained by a trigger."},"countAttachedFiles":{"type":"number"},"createdAt":{"type":"string","format":"date-time","description":"Technical timestamp of the row creation. For the date the profile entered the base, use addedAt (added_at) instead."},"createdByUserId":{"type":"string","format":"uuid","description":"User who brought the profile into the group's base. Set from the session user when the profile is created, and set again if a deleted profile is restored."},"deletedAt":{"type":"string","format":"date-time"},"distance":{"type":"string","enum":["DISTANCE_1","DISTANCE_2","DISTANCE_3","OUT_OF_NETWORK","SELF"]},"externalId":{"type":"string","description":"Identifier of the profile in the client's own system — their ATS, their CRM, or whatever calls the public API. Never a Jarvi identifier. Unique per group, and used to recognise a profile that is sent again."},"firstInteractionDate":{"type":"string","format":"date-time"},"firstName":{"type":"string","description":"First name actually used for the profile: the one entered by a user when there is one, otherwise the one parsed from LinkedIn or from a CV. Maintained by a trigger."},"firstNameParsed":{"type":"string"},"firstNameManual":{"type":"string","description":"First name entered by a user. Wins over first_name_parsed: trigger_first_name takes this value whenever it is set, and falls back to the parsed one otherwise."},"groupId":{"type":"string","format":"uuid"},"countResumes":{"type":"integer"},"headline":{"type":"string","description":"Headline of the profile: the tagline shown under the name on LinkedIn, or the summary line extracted from the CV for profiles that have no LinkedIn page. Editable by hand only when the profile has no LinkedIn identifier."},"imageId":{"type":"string","format":"uuid"},"isTalent":{"type":"boolean","description":"Used to decide if the profile should be visible in the talent pool (all profiles of the ATS part)"},"isContact":{"type":"boolean","description":"Used to decide if the profile should be visible in the leads / clients pool (all profiles of the CRM part)"},"isHiring":{"type":"boolean"},"isOpenToNewOpportunities":{"type":"boolean"},"isInfluencer":{"type":"boolean"},"isPremium":{"type":"boolean"},"lastInteractionDate":{"type":"string","format":"date-time","description":"Date of the last interaction with the profile. Every kind of history entry counts — call, email, note, meeting, LinkedIn message, including those logged by hand — and messages still waiting to be sent are taken into account too. Maintained by a trigger. See lastPastInteractionDate (trigger_last_past_interaction_date) for the value that ignores pending messages."},"lastPastInteractionDate":{"type":"string","format":"date-time"},"lastInteractionType":{"type":"string"},"lastResumeUpdatedAt":{"type":"string","format":"date-time","description":"When the profile was last fully refreshed from its source, either a LinkedIn scrape or a CV parsing. Used to re-queue profiles that have not been refreshed for six months."},"lastName":{"type":"string"},"lastNameParsed":{"type":"string"},"lastNameManual":{"type":"string","description":"Last name entered by a user. Wins over last_name_parsed: trigger_last_name takes this value whenever it is set, and falls back to the parsed one otherwise."},"linkedinId":{"type":"integer","description":"Numeric LinkedIn identifier of the person. Unique per group. Not to be confused with memberId (member_id), which holds the obfuscated \"ACoAA…\" identifier, nor with publicIdentifier (public_identifier), which holds the URL slug."},"memberId":{"type":"string"},"profileUrl":{"type":"string"},"publicIdentifier":{"type":"string","description":"LinkedIn public slug, the part after linkedin.com/in/. Unique per group. The person can change it on LinkedIn, which makes it the least reliable of the LinkedIn identifiers."},"primaryLocale":{"type":"string","enum":["ar","bn","bs","cs","da","de","el","en","es","fa","fi","fr","gu","he","hi","hr","hu","hy","in","is","it","ja","jv","km","kn","ko","lb","lt","lv","ml","mr","ms","my","ne","nl","no","pa","pl","pt","ro","ru","si","sk","sq","sr","sv","ta","te","th","tl","tr","uk","ur","vi","xx","zh"],"description":"Main language of the profile itself — the language its LinkedIn page or CV is written in. Different from the profiles_locales table, which lists the languages the person speaks and how well."},"searchString":{"type":"string","description":"Full name of the profile in a normalized form — lowercase, accent- and punctuation-insensitive — maintained by a trigger from the first and last names. Holds names only, no email and no phone number. Backs name search and duplicate detection."},"source":{"type":"string","description":"Where the profile came from: LinkedIn, an import, a manual creation, a job board, a referral… Groups can add their own values, so this is not a closed list."},"statusId":{"type":"string","format":"uuid"},"talentIdentifier":{"type":"string"},"linkedinSalesNavigatorIdentifier":{"type":"string"},"linkedinSignificantIdentifier":{"type":"string"},"summary":{"type":"string","description":"The free-text \"About\" section of the profile, taken from LinkedIn or from an import."},"updatedAt":{"type":"string","format":"date-time"},"pendingExecuteTriggerTasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"priority":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time"},"doneAt":{"type":"string","format":"date-time"},"cancelAt":{"type":"string","format":"date-time","description":"When set, a cron auto-cancels this task if it is still TODO past this timestamp. Used for time-limited resources (e.g. LinkedIn download URLs). Set by application code, never by a trigger."},"userId":{"type":"string","format":"uuid"},"groupId":{"type":"string","format":"uuid"},"linkedinSeatId":{"type":"integer","description":"Indicates if the task must be executed against a given linkedin contract / seat"},"type":{"type":"string","enum":["CHECK_PROFILE_PHONE_NUMBER_PROVIDERS","EXECUTE_TRIGGER","EXPORT_DATA","INGEST_CONNECTIONS","INGEST_HELLOWORK_APPLICATION","INGEST_HELLOWORK_PROFILE","INGEST_INDEED_APPLICATION","INGEST_INVITATIONS_SENT","INGEST_JOBPOSTINGPRO_APPLICATION","INGEST_LINKEDIN_COMPANY","INGEST_LINKEDIN_CONVERSATIONS","INGEST_LINKEDIN_CONVERSATIONS_MESSAGES","INGEST_LINKEDIN_FILE","INGEST_LINKEDIN_HIRING_APPLICANTS","INGEST_LINKEDIN_HIRING_APPLICANT_DETAIL","INGEST_LINKEDIN_IDENTIFIER_FROM_NAME_COMPANY","INGEST_LINKEDIN_JOB","INGEST_LINKEDIN_PROFILE_CONVERSATIONS","INGEST_LINKEDIN_PROFILE_RESUME","INGEST_LINKEDIN_PROFILE_WITH_NETWORK","INGEST_LINKEDIN_SALES_NAVIGATOR_INMAIL_CONVERSATIONS","INGEST_LINKEDIN_SALES_NAVIGATOR_INMAIL_CONVERSATION_MESSAGES","INGEST_LINKEDIN_SALES_NAVIGATOR_LISTPROFILES","INGEST_LINKEDIN_SALES_NAVIGATOR_PROFILE","INGEST_LINKEDIN_SALES_NAVIGATOR_PROFILE_INMAIL_CONVERSATIONS","INGEST_LINKEDIN_TALENT_INMAIL_CONVERSATIONS","INGEST_LINKEDIN_TALENT_INMAIL_CONVERSATION_MESSAGES","INGEST_LINKEDIN_TALENT_PROFILE","INGEST_LINKEDIN_TALENT_PROFILE_CONVERSATIONS","INGEST_LINKEDIN_TALENT_PROJECTPROFILES","INGEST_MEETING_RECORDING","INGEST_RECORDING_SUMMARY","INGEST_RECORDING_TRANSCRIPT","INGEST_WEBHOOK_ALLO","INGEST_WEBHOOK_APPLICATION","INGEST_WEBHOOK_FORM_PROFILE","INGEST_WEBHOOK_IMPORT","INGEST_WEBHOOK_NYLAS","INGEST_WEBHOOK_RINGCENTRAL","INGEST_WEBHOOK_RINGOVER","INGEST_WEBHOOK_UNIPILE","LIVECHECK_EXTENSION","NOTIFY_HELLOWORK_APPLICATION_UPDATE","NOTIFY_JOBBOARD_APPLICATION_UPDATE","PARSE_RESUME","RETREIVE_AND_INGEST_ALLO_HISTORY_FOR_NUMBER","RETREIVE_AND_INGEST_ALLO_THREADS","RETREIVE_AND_INGEST_EMAILS","RETREIVE_AND_INGEST_EMAILS_FOR_EMAILADDRESSES","RETREIVE_AND_INGEST_EMAILS_THREADS","RETREIVE_AND_INGEST_EVENTS","RETREIVE_AND_INGEST_EVENTS_FOR_EMAILADDRESSES","RETREIVE_AND_INGEST_EVENTS_THREADS","RETREIVE_AND_INGEST_JOB_APPLICATIONS_EMAILS","RETREIVE_AND_INGEST_PENNYLANE_DATA","RETREIVE_AND_INGEST_PROFILE_EMAILADDRESSES_IN_EVENTS","RETREIVE_AND_INGEST_RINGCENTRAL_HISTORY","RETREIVE_AND_INGEST_RINGCENTRAL_HISTORY_FOR_NUMBER","RETREIVE_AND_INGEST_RINGCENTRAL_THREADS","RETREIVE_AND_INGEST_UNIPILE_MESSAGES_FOR_USER_CHAT","RETREIVE_AND_INGEST_USERS_CHATS","RETREIVE_CONNECTIONS","RETREIVE_CONNECTIONS_ALL","RETREIVE_GITHUB_EMAIL","RETREIVE_HELLOWORK_PROFILE","RETREIVE_INVITATIONS_SENT","RETREIVE_INVITATIONS_SENT_ALL","RETREIVE_LINKEDIN_COMPANY","RETREIVE_LINKEDIN_CONVERSATIONS","RETREIVE_LINKEDIN_CONVERSATIONS_MESSAGES","RETREIVE_LINKEDIN_FILE","RETREIVE_LINKEDIN_HIRING_APPLICANTS","RETREIVE_LINKEDIN_HIRING_APPLICANT_DETAIL","RETREIVE_LINKEDIN_IDENTIFIER_FROM_NAME_COMPANY","RETREIVE_LINKEDIN_JOB","RETREIVE_LINKEDIN_PROFILE_CONVERSATIONS","RETREIVE_LINKEDIN_PROFILE_RESUME","RETREIVE_LINKEDIN_PROFILE_WITH_NETWORK","RETREIVE_LINKEDIN_SALES_NAVIGATOR_INMAIL_CONVERSATIONS","RETREIVE_LINKEDIN_SALES_NAVIGATOR_INMAIL_CONVERSATION_MESSAGES","RETREIVE_LINKEDIN_SALES_NAVIGATOR_LISTPROFILES","RETREIVE_LINKEDIN_SALES_NAVIGATOR_PROFILE","RETREIVE_LINKEDIN_SALES_NAVIGATOR_PROFILE_INMAIL_CONVERSATIONS","RETREIVE_LINKEDIN_TALENT_INMAIL_CONVERSATIONS","RETREIVE_LINKEDIN_TALENT_INMAIL_CONVERSATION_MESSAGES","RETREIVE_LINKEDIN_TALENT_PROFILE","RETREIVE_LINKEDIN_TALENT_PROFILE_CONVERSATIONS","RETREIVE_LINKEDIN_TALENT_PROJECTPROFILES","RETREIVE_MEETING_RECORDING","SEND_EMAIL","SEND_LINKEDIN_INMAIL","SEND_LINKEDIN_INVITATION","SEND_LINKEDIN_MESSAGE","SEND_SMS","SEND_SMS_ALLO","SEND_TELEGRAM_MESSAGE","SEND_WHATSAPP_MESSAGE","WITHDRAW_LINKEDIN_INVITATION"]},"status":{"type":"string","enum":["CANCELED","DOING","DONE","ERROR","PAUSED","RETRY_AT","RETRY_LATER","RETRY_TOMORROW","TODO"]},"since":{"type":"string","format":"date-time"},"retries":{"type":"integer"},"parameters":{"description":"Arbitrary JSON — its shape depends on the field"},"profileId":{"type":"string","format":"uuid"},"version":{"type":"number"},"duration":{"type":"string"},"profile":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the profile, used in the public API and in app URLs."},"firstName":{"type":"string","description":"First name actually used for the profile: the one entered by a user when there is one, otherwise the one parsed from LinkedIn or from a CV. Maintained by a trigger."},"lastName":{"type":"string"},"talentIdentifier":{"type":"string"},"linkedinSalesNavigatorIdentifier":{"type":"string"},"linkedinId":{"type":"integer","description":"Numeric LinkedIn identifier of the person. Unique per group. Not to be confused with memberId (member_id), which holds the obfuscated \"ACoAA…\" identifier, nor with publicIdentifier (public_identifier), which holds the URL slug."},"linkedinSignificantIdentifier":{"type":"string"},"memberId":{"type":"string"},"publicIdentifier":{"type":"string","description":"LinkedIn public slug, the part after linkedin.com/in/. Unique per group. The person can change it on LinkedIn, which makes it the least reliable of the LinkedIn identifiers."},"externalId":{"type":"string","description":"Identifier of the profile in the client's own system — their ATS, their CRM, or whatever calls the public API. Never a Jarvi identifier. Unique per group, and used to recognise a profile that is sent again."},"isContact":{"type":"boolean","description":"Used to decide if the profile should be visible in the leads / clients pool (all profiles of the CRM part)"},"isTalent":{"type":"boolean","description":"Used to decide if the profile should be visible in the talent pool (all profiles of the ATS part)"},"deletedAt":{"type":"string","format":"date-time"}},"description":"An object relationship"},"triggerId":{"type":"string","format":"uuid"},"trigger":{"type":"object","properties":{"name":{"type":"string"},"userId":{"type":"string","format":"uuid"},"updatedAt":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"groupId":{"type":"string","format":"uuid"},"targetedEntity":{"type":"string"},"eventTypes":{"type":"array","items":{"type":"string","description":"When event_table_name = 'historyentries', the action will be triggered only if event_types is NULL or includes historyentries.type"}},"eventTableName":{"type":"string","description":"The table for which an insert / update should trigger the action (supported: historyentries, profiles_associations, manual)"},"eventProjectsIds":{"type":"array","items":{"type":"string","format":"uuid","description":"When event_table_name = 'profiles_associations', the action will be triggered only if event_projects_ids is NULL or includes profiles_associations.project_id"}},"eventStatusesIds":{"type":"array","items":{"type":"string","format":"uuid","description":"The action will be triggered only if event_statuses_ids is NULL or includes the status_id of the profile"}},"deletedAt":{"type":"string","format":"date-time"},"disabledAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"conditions":{"type":"array","items":{"type":"string","description":"The action is executed only if all conditions are sataisfied. Each condition is a postgres function taking the row (NEW) and returning a boolean saying if this condition is satisfied"}},"cancelIfStatusChangesToArchived":{"type":"boolean","description":"Should cancel the trigger execution if the profile status is changed to a status.is_archived for the same project_id as the task created by the project."},"cancelIfStatusChanges":{"type":"boolean","description":"Should cancel the trigger execution if the profile status is changed again for the same project_id as the task created by the project."},"cancelIfNewMessageReceived":{"type":"boolean","description":"Should cancel the trigger if a user receive a message from this profile"},"cancelIfNewEventScheduled":{"type":"boolean","description":"Should cancel the trigger is a new event (meeting) is scheduled"},"actionTaskParameters":{"description":"When all conditions are valid, an EXECUTE_TRIGGER task is created, with the content of this column as parameters."},"restrictedToUsersIds":{"description":"If null, works for all users in the group. If set to an array of UUIDS, only actions / interactions of those users can trigger this trigger."},"aiLegalValidatedAt":{"type":"string","format":"date-time"},"aiLegalValidatedBy":{"type":"string","format":"uuid"}},"description":"An object relationship"},"projectId":{"type":"string","format":"uuid"},"project":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the project, used in the public API and in app URLs."},"name":{"type":"string","description":"Title of the project — a job opening, a sales mission or a talent pool. Typed by the user, or taken from the LinkedIn recruiter project or Sales Navigator list name when the project comes from an import."},"referenceId":{"type":"string","description":"The project reference id is used to map external job applications on website or jobboard to the project."},"linkedinId":{"type":"string","description":"Represents either a linkedin recruiter project OR sales navigator list"},"linkedinIdType":{"type":"string","enum":["LINKEDIN_JOB_POSTING","LINKEDIN_SALES_NAVIGATOR_LIST","LINKEDIN_TALENT_PROJECT"]},"isMadeForSales":{"type":"boolean"},"isMadeForRecruitment":{"type":"boolean"},"status":{"type":"object","properties":{"title":{"type":"string"},"id":{"type":"string","format":"uuid"}},"description":"An object relationship"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"description":{"type":"string","description":"Description of the company, written by the user in the app or filled by an import. This is not the LinkedIn description, which lives on the linked LinkedIn company data."},"linkedinCompanyData":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"}},"description":"An object relationship"},"recordingId":{"type":"string","format":"uuid"},"historyEntryId":{"type":"string","format":"uuid"},"historyEntry":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"eventStartAt":{"type":"string","format":"date-time"},"eventEndAt":{"type":"string","format":"date-time"},"type":{"type":"string","enum":["CONNECT","EMAIL_RECEIVED","EMAIL_SENT","EVENT_SCHEDULED","JOB_APPLICATION","LINKEDIN_INMAIL_RECEIVED","LINKEDIN_INMAIL_SENT","LINKEDIN_INVITATION_SENT","LINKEDIN_INVITATION_WITHDRAWN","LINKEDIN_MESSAGE_RECEIVED","LINKEDIN_MESSAGE_SENT","LINKEDIN_NOTE","OTHER","PHONECALL","PHONECALL_MISSED","SHARE","SMS_RECEIVED","SMS_SENT","TELEGRAM_RECEIVED","TELEGRAM_SENT","WHATSAPP_RECEIVED","WHATSAPP_SENT"],"description":"What kind of interaction this entry records: emails, LinkedIn messages and InMails, connection invitations, SMS, WhatsApp, Telegram, phone calls, scheduled meetings, job applications, or a free note."},"sender":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"displayName":{"type":"string"}},"description":"An object relationship"},"subject":{"type":"string","description":"Subject of the interaction: the email subject, the meeting title, or the job offer title. Empty for channels that carry no subject, such as LinkedIn messages, WhatsApp and SMS."},"message":{"type":"string","description":"Content of the interaction: the email body, the text of the LinkedIn, WhatsApp, SMS or Telegram message, or what the recruiter typed for a manual note."}},"description":"An object relationship"},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"displayName":{"type":"string"},"email":{"type":"string"}},"description":"An object relationship"},"fileId":{"type":"string","format":"uuid"},"emailAddress":{"type":"string"},"phoneNumberProviderId":{"type":"string","description":"External provider id, ex: 33644004700@s.whatsapp.net"},"messageScheduledId":{"type":"string","format":"uuid"},"externalId":{"type":"string"},"return":{"description":"Arbitrary JSON — its shape depends on the field"},"returnStatusCode":{"type":"number"},"oAuthAccountId":{"type":"string"},"typeComment":{"type":"object","properties":{"comment":{"type":"string"}},"description":"An object relationship"},"retryAt":{"type":"string","format":"date-time"},"resumeWhen":{"description":"Arbitrary JSON — its shape depends on the field"},"skipExtensionQueueAndExecuteImmediately":{"type":"boolean"}},"description":"An array relationship"}},"unreadMessagesNotifications":{"type":"object","properties":{"aggregate":{"type":"object","properties":{"count":{"type":"integer"}}}},"description":"An aggregate relationship"},"protectedCompaniesWorksIn":{"type":"array","items":{"type":"object","properties":{"companyId":{"type":"string","format":"uuid"},"companyName":{"type":"string"}},"description":"An array relationship"}},"createdBy":{"type":"object","properties":{"displayName":{"type":"string"},"id":{"type":"string","format":"uuid"}},"description":"An object relationship"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"},"locations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"source":{"type":"string"},"aiRunId":{"type":"string","format":"uuid"},"location":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"search":{"type":"string"},"center":{"type":"object","description":"PostGIS geography, as GeoJSON"},"formattedAddress":{"type":"string"},"locality":{"type":"string"},"postalCode":{"type":"string"},"countryName":{"type":"string"},"accuracyLevel":{"type":"integer"}},"description":"An object relationship"}},"description":"An array relationship"}},"files":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"shouldBeParsed":{"type":"boolean"},"parsedAt":{"type":"string","format":"date-time"},"textContent":{"type":"string"},"file":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"etag":{"type":"string"},"mimeType":{"type":"string"}},"description":"An object relationship"}},"description":"An array relationship"}},"lastPosition":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"title":{"type":"string"},"source":{"type":"string"},"companyName":{"type":"string"},"linkedinCompanyId":{"type":"string","format":"uuid"},"linkedinCompanyData":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"}},"description":"An object relationship"},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"title":{"type":"string","description":"Job title held at this position, coming from LinkedIn, from a parsed CV or entered by hand. This is the main field behind job title search."},"source":{"type":"string"},"companyName":{"type":"string"},"linkedinCompanyId":{"type":"string","format":"uuid"},"linkedinCompanyData":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"}},"description":"An array relationship"}},"manualHistoryEntries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid","description":"Jarvi user this entry belongs to. Determines the group the entry is attached to, and is used as its sender by default."},"occurredAt":{"type":"string","format":"date-time","description":"Single date used to place the interaction on the timeline: the meeting start for a scheduled event, the creation date otherwise. Maintained by a trigger."},"sender":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"displayName":{"type":"string"}},"description":"An object relationship"},"subType":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"eventStartAt":{"type":"string","format":"date-time"},"eventEndAt":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the project, used in the public API and in app URLs."},"name":{"type":"string","description":"Title of the project — a job opening, a sales mission or a talent pool. Typed by the user, or taken from the LinkedIn recruiter project or Sales Navigator list name when the project comes from an import."}},"description":"An object relationship"},"subjectWithConfidentialitySettings":{"type":"string","description":"A computed field, executes function \"historyentries_subject_with_confidentiality_settings\""},"messageWithConfidentialitySettings":{"type":"string","description":"A computed field, executes function \"historyentries_message_with_confidentiality_settings\""},"source":{"type":"string"},"tags":{"description":"Tags are free string values, to display on the UI"},"files":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string","format":"uuid"},"externalId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"file":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"size":{"type":"integer"},"mimeType":{"type":"string"}},"description":"An object relationship"}},"description":"An array relationship"}}},"description":"An array relationship"}},"lastMessages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid","description":"Jarvi user this entry belongs to. Determines the group the entry is attached to, and is used as its sender by default."},"occurredAt":{"type":"string","format":"date-time","description":"Single date used to place the interaction on the timeline: the meeting start for a scheduled event, the creation date otherwise. Maintained by a trigger."},"sender":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"displayName":{"type":"string"}},"description":"An object relationship"},"type":{"type":"string","enum":["CONNECT","EMAIL_RECEIVED","EMAIL_SENT","EVENT_SCHEDULED","JOB_APPLICATION","LINKEDIN_INMAIL_RECEIVED","LINKEDIN_INMAIL_SENT","LINKEDIN_INVITATION_SENT","LINKEDIN_INVITATION_WITHDRAWN","LINKEDIN_MESSAGE_RECEIVED","LINKEDIN_MESSAGE_SENT","LINKEDIN_NOTE","OTHER","PHONECALL","PHONECALL_MISSED","SHARE","SMS_RECEIVED","SMS_SENT","TELEGRAM_RECEIVED","TELEGRAM_SENT","WHATSAPP_RECEIVED","WHATSAPP_SENT"],"description":"What kind of interaction this entry records: emails, LinkedIn messages and InMails, connection invitations, SMS, WhatsApp, Telegram, phone calls, scheduled meetings, job applications, or a free note."},"subType":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"eventStartAt":{"type":"string","format":"date-time"},"eventEndAt":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the project, used in the public API and in app URLs."},"name":{"type":"string","description":"Title of the project — a job opening, a sales mission or a talent pool. Typed by the user, or taken from the LinkedIn recruiter project or Sales Navigator list name when the project comes from an import."}},"description":"An object relationship"},"subjectWithConfidentialitySettings":{"type":"string","description":"A computed field, executes function \"historyentries_subject_with_confidentiality_settings\""},"messageWithConfidentialitySettings":{"type":"string","description":"A computed field, executes function \"historyentries_message_with_confidentiality_settings\""},"source":{"type":"string"},"tags":{"description":"Tags are free string values, to display on the UI"},"files":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string","format":"uuid"},"externalId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"file":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"size":{"type":"integer"},"mimeType":{"type":"string"}},"description":"An object relationship"}},"description":"An array relationship"}}},"description":"An array relationship"}},"locales":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string","enum":["ar","bn","bs","cs","da","de","el","en","es","fa","fi","fr","gu","he","hi","hr","hu","hy","in","is","it","ja","jv","km","kn","ko","lb","lt","lv","ml","mr","ms","my","ne","nl","no","pa","pl","pt","ro","ru","si","sk","sq","sr","sv","ta","te","th","tl","tr","uk","ur","vi","xx","zh"]},"country":{"type":"string"},"proficiency":{"type":"string","description":"Language proficiency level: NATIVE_OR_BILINGUAL, FULL_PROFESSIONAL, PROFESSIONAL_WORKING, LIMITED_WORKING, ELEMENTARY"}},"description":"An array relationship"}},"educations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"schoolId":{"type":"string","format":"uuid"},"schoolName":{"type":"string","description":"Free-text school name. Used when school_id could not be resolved, or when the recruiter typed a school that is not in the shared `schools` referential."},"school":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"title":{"type":"string","description":"Label of the education entry — in practice the diploma or the programme name. This is not the school, which is carried by the linked school record and is not searchable through this field."},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"source":{"type":"string"}},"description":"An array relationship"}},"skills":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"A skill claimed by the profile, coming from LinkedIn, from a parsed CV or entered by hand. One row per skill, unique for a given profile."}},"description":"An array relationship"}},"fieldsValues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fieldId":{"type":"string","format":"uuid"},"fieldValueId":{"type":"string","format":"uuid"},"value":{"type":"string","description":"Answer to a custom field when the user types it freely — text, rich text, number, rating, date or yes/no. Stays empty for fields offering a list of choices, where the answer is the linked field value, and for location fields, where it is the linked location."},"aiRunId":{"type":"string","format":"uuid"},"field":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["boolean","date","group","multiplechoice","number","rating","richtext","singlechoice","singlelocation","text","url"]},"name":{"type":"string"},"parent":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"},"fieldValue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"location":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"search":{"type":"string"},"formattedAddress":{"type":"string"},"accuracyLevel":{"type":"integer"}},"description":"An object relationship"}},"description":"An array relationship"}},"emailAddresses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","description":"Email address of the profile or the company it belongs to. Normalized on save: lowercased, and when the input is not a clean address the first valid one found inside it is kept, the row being dropped if there is none."},"source":{"type":"string"},"userId":{"type":"string","format":"uuid","description":"auth.users.id ; renseigné côté Hasura (x-hasura-User-Id) sur insert utilisateur. NULL si import ou autre origine."},"aiRunId":{"type":"string","format":"uuid"}},"description":"An array relationship"}},"phoneNumbers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"string"},"source":{"type":"string"},"type":{"type":"string"},"canonicalNumber":{"type":"string"},"whatsappIdentifier":{"type":"string"},"whatsappLastCheckedAt":{"type":"string","format":"date-time"},"telegramIdentifier":{"type":"string"},"telegramLastCheckedAt":{"type":"string","format":"date-time"},"userId":{"type":"string","format":"uuid","description":"auth.users.id ; renseigné côté Hasura (x-hasura-User-Id) sur insert utilisateur. NULL si import ou autre origine."},"aiRunId":{"type":"string","format":"uuid"}},"description":"An array relationship"}},"assignees":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"displayName":{"type":"string"},"id":{"type":"string","format":"uuid"}},"description":"An object relationship"}},"description":"An array relationship"}},"status":{"type":"object","properties":{"title":{"type":"string"},"colorId":{"type":"string"},"isAuto":{"type":"boolean"},"id":{"type":"string","format":"uuid"},"isProtected":{"type":"boolean","description":"When true, means the profils having this status are protected from unwanted messages"}},"description":"An object relationship"},"associations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"statusId":{"type":"string","format":"uuid"},"associationType":{"type":"string","enum":["COMPANY_CONTACT","PROJECT_CONTACT","PROJECT_PROFILE"]},"source":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"updatedByUserId":{"type":"string","format":"uuid"},"updatedStatusAt":{"type":"string","format":"date-time"},"status":{"type":"object","properties":{"title":{"type":"string"},"colorId":{"type":"string"},"isAuto":{"type":"boolean"},"isProtected":{"type":"boolean","description":"When true, means the profils having this status are protected from unwanted messages"},"isArchived":{"type":"boolean"},"isRejected":{"type":"boolean"},"isHired":{"type":"boolean"},"id":{"type":"string","format":"uuid"},"order":{"type":"number","description":"Position of the status in the group's list: statuses are displayed in ascending order."},"parentId":{"type":"string","format":"uuid"},"parent":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"order":{"type":"number","description":"Position of the status in the group's list: statuses are displayed in ascending order."}},"description":"An object relationship"}},"description":"An object relationship"},"externalId":{"type":"string","format":"uuid"},"companyId":{"type":"string","format":"uuid"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"name":{"type":"string","description":"Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger."},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"},"assignees":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"description":"An object relationship"}},"description":"An array relationship"}},"fieldsValues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"field":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["boolean","date","group","multiplechoice","number","rating","richtext","singlechoice","singlelocation","text","url"]},"name":{"type":"string"}},"description":"An object relationship"},"fieldValue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"location":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"locality":{"type":"string"}},"description":"An object relationship"},"value":{"type":"string"}},"description":"An array relationship"}},"linkedinCompanyId":{"type":"string","format":"uuid","description":"Link to the LinkedIn page data of this company. That data is shared across all groups, and a given LinkedIn page can be attached to at most one company per group."},"linkedinCompanyData":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"},"parent":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"name":{"type":"string","description":"Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger."},"linkedinCompanyData":{"type":"object","properties":{"name":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"}},"description":"An object relationship"},"projectId":{"type":"string","format":"uuid"},"project":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the project, used in the public API and in app URLs."},"referenceId":{"type":"string","description":"The project reference id is used to map external job applications on website or jobboard to the project."},"isMadeForSales":{"type":"boolean"},"isMadeForRecruitment":{"type":"boolean"},"presetId":{"type":"string","format":"uuid","description":"The preset is the project model (fields, statuses, templates)"},"assignees":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"description":"An object relationship"}},"description":"An array relationship"}},"status":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"colorId":{"type":"string"},"isArchived":{"type":"boolean"}},"description":"An object relationship"},"fieldsValues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"field":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["boolean","date","group","multiplechoice","number","rating","richtext","singlechoice","singlelocation","text","url"]},"name":{"type":"string"}},"description":"An object relationship"},"fieldValue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"location":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"locality":{"type":"string"}},"description":"An object relationship"},"value":{"type":"string"}},"description":"An array relationship"}},"colorId":{"type":"string"},"name":{"type":"string","description":"Title of the project — a job opening, a sales mission or a talent pool. Typed by the user, or taken from the LinkedIn recruiter project or Sales Navigator list name when the project comes from an import."},"publicUrl":{"type":"string"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"name":{"type":"string","description":"Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger."},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"},"fieldsValues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"field":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["boolean","date","group","multiplechoice","number","rating","richtext","singlechoice","singlelocation","text","url"]},"name":{"type":"string"}},"description":"An object relationship"},"fieldValue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"value":{"type":"string"}},"description":"An array relationship"}},"linkedinCompanyId":{"type":"string","format":"uuid","description":"Link to the LinkedIn page data of this company. That data is shared across all groups, and a given LinkedIn page can be attached to at most one company per group."},"linkedinCompanyData":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"}},"description":"An object relationship"}},"description":"An object relationship"}},"description":"An array relationship"}}}}},"total":{"type":"integer","description":"The total number of profiles matching the query"},"warnings":{"type":"array","description":"Present only when the request used an operator that is being retired. The request itself was answered normally.","items":{"$ref":"#/components/schemas/DeprecationWarning"}}}},"example":{"data":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","shortId":"Lorem ipsum","addedAt":"2026-01-15T09:30:00Z","birthday":{},"canSendInMail":true,"countConnexionsWithThisProfile":42,"countInvitationsScheduledToThisProfile":42,"countInvitationsSentToThisProfile":42,"countApplicationsFromThisProfile":42,"countMessagesReceivedFromThisProfile":42,"countMessagesScheduledToThisProfile":42,"countMessagesSentToThisProfile":42,"countAttachedFiles":42,"createdAt":"2026-01-15T09:30:00Z","createdByUserId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","deletedAt":"2026-01-15T09:30:00Z","distance":"DISTANCE_1","externalId":"Lorem ipsum","firstInteractionDate":"2026-01-15T09:30:00Z","firstName":"Lorem ipsum","firstNameParsed":"Lorem ipsum","firstNameManual":"Lorem ipsum","groupId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","countResumes":42,"headline":"Lorem ipsum","imageId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","isTalent":true,"isContact":true,"isHiring":true,"isOpenToNewOpportunities":true,"isInfluencer":true,"isPremium":true,"lastInteractionDate":"2026-01-15T09:30:00Z","lastPastInteractionDate":"2026-01-15T09:30:00Z","lastInteractionType":"Lorem ipsum","lastResumeUpdatedAt":"2026-01-15T09:30:00Z","lastName":"Lorem ipsum","lastNameParsed":"Lorem ipsum","lastNameManual":"Lorem ipsum","linkedinId":42,"memberId":"Lorem ipsum","profileUrl":"Lorem ipsum","publicIdentifier":"Lorem ipsum","primaryLocale":"ar","searchString":"Lorem ipsum","source":"Lorem ipsum","statusId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","talentIdentifier":"Lorem ipsum","linkedinSalesNavigatorIdentifier":"Lorem ipsum","linkedinSignificantIdentifier":"Lorem ipsum","summary":"Lorem ipsum","updatedAt":"2026-01-15T09:30:00Z","pendingExecuteTriggerTasks":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","priority":42,"createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","deletedAt":"2026-01-15T09:30:00Z","doneAt":"2026-01-15T09:30:00Z","cancelAt":"2026-01-15T09:30:00Z","userId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","groupId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","linkedinSeatId":42,"type":"CHECK_PROFILE_PHONE_NUMBER_PROVIDERS","status":"CANCELED","since":"2026-01-15T09:30:00Z","retries":42,"parameters":{},"profileId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","version":42,"duration":"Lorem ipsum","profile":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","firstName":"Lorem ipsum","lastName":"Lorem ipsum","talentIdentifier":"Lorem ipsum","linkedinSalesNavigatorIdentifier":"Lorem ipsum","linkedinId":42,"linkedinSignificantIdentifier":"Lorem ipsum","memberId":"Lorem ipsum","publicIdentifier":"Lorem ipsum","externalId":"Lorem ipsum","isContact":true,"isTalent":true,"deletedAt":"2026-01-15T09:30:00Z"},"triggerId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","trigger":{"name":"Lorem ipsum","userId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","updatedAt":"2026-01-15T09:30:00Z","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","groupId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","targetedEntity":"Lorem ipsum","eventTypes":["Lorem ipsum"],"eventTableName":"Lorem ipsum","eventProjectsIds":["3fa85f64-5717-4562-b3fc-2c963f66afa6"],"eventStatusesIds":["3fa85f64-5717-4562-b3fc-2c963f66afa6"],"deletedAt":"2026-01-15T09:30:00Z","disabledAt":"2026-01-15T09:30:00Z","createdAt":"2026-01-15T09:30:00Z","conditions":["Lorem ipsum"],"cancelIfStatusChangesToArchived":true,"cancelIfStatusChanges":true,"cancelIfNewMessageReceived":true,"cancelIfNewEventScheduled":true,"actionTaskParameters":{},"restrictedToUsersIds":{},"aiLegalValidatedAt":"2026-01-15T09:30:00Z","aiLegalValidatedBy":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"projectId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","project":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","referenceId":"Lorem ipsum","linkedinId":"Lorem ipsum","linkedinIdType":"LINKEDIN_JOB_POSTING","isMadeForSales":true,"isMadeForRecruitment":true,"status":{"title":"Lorem ipsum","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"company":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","description":"Lorem ipsum","linkedinCompanyData":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"}}},"recordingId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","historyEntryId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","historyEntry":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","createdAt":"2026-01-15T09:30:00Z","eventStartAt":"2026-01-15T09:30:00Z","eventEndAt":"2026-01-15T09:30:00Z","type":"CONNECT","sender":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","displayName":"Lorem ipsum"},"subject":"Lorem ipsum","message":"Lorem ipsum"},"user":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","displayName":"Lorem ipsum","email":"lorem.ipsum@example.com"},"fileId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","emailAddress":"Lorem ipsum","phoneNumberProviderId":"Lorem ipsum","messageScheduledId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","externalId":"Lorem ipsum","return":{},"returnStatusCode":42,"oAuthAccountId":"Lorem ipsum","typeComment":{"comment":"Lorem ipsum"},"retryAt":"2026-01-15T09:30:00Z","resumeWhen":{},"skipExtensionQueueAndExecuteImmediately":true}],"unreadMessagesNotifications":{"aggregate":{"count":42}},"protectedCompaniesWorksIn":[{"companyId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","companyName":"Lorem ipsum"}],"createdBy":{"displayName":"Lorem ipsum","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"image":{"publicUrl":"Lorem ipsum"},"locations":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","source":"Lorem ipsum","aiRunId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","location":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","search":"Lorem ipsum","center":{},"formattedAddress":"Lorem ipsum","locality":"Lorem ipsum","postalCode":"Lorem ipsum","countryName":"Lorem ipsum","accuracyLevel":42}}],"files":[{"fileId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","shouldBeParsed":true,"parsedAt":"2026-01-15T09:30:00Z","textContent":"Lorem ipsum","file":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","etag":"Lorem ipsum","mimeType":"Lorem ipsum"}}],"lastPosition":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","startDate":"2026-01-15T09:30:00Z","endDate":"2026-01-15T09:30:00Z","title":"Lorem ipsum","source":"Lorem ipsum","companyName":"Lorem ipsum","linkedinCompanyId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","linkedinCompanyData":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"}}},"positions":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","startDate":"2026-01-15T09:30:00Z","endDate":"2026-01-15T09:30:00Z","title":"Lorem ipsum","source":"Lorem ipsum","companyName":"Lorem ipsum","linkedinCompanyId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","linkedinCompanyData":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"}}}],"manualHistoryEntries":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","userId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","occurredAt":"2026-01-15T09:30:00Z","sender":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","displayName":"Lorem ipsum"},"subType":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"eventStartAt":"2026-01-15T09:30:00Z","eventEndAt":"2026-01-15T09:30:00Z","project":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"subjectWithConfidentialitySettings":"Lorem ipsum","messageWithConfidentialitySettings":"Lorem ipsum","source":"Lorem ipsum","tags":{},"files":[{"fileId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","externalId":"Lorem ipsum","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","file":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","size":42,"mimeType":"Lorem ipsum"}}]}],"lastMessages":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","userId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","occurredAt":"2026-01-15T09:30:00Z","sender":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","displayName":"Lorem ipsum"},"type":"CONNECT","subType":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"eventStartAt":"2026-01-15T09:30:00Z","eventEndAt":"2026-01-15T09:30:00Z","project":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"subjectWithConfidentialitySettings":"Lorem ipsum","messageWithConfidentialitySettings":"Lorem ipsum","source":"Lorem ipsum","tags":{},"files":[{"fileId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","externalId":"Lorem ipsum","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","file":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","size":42,"mimeType":"Lorem ipsum"}}]}],"locales":[{"language":"ar","country":"Lorem ipsum","proficiency":"Lorem ipsum"}],"educations":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schoolId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schoolName":"Lorem ipsum","school":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"title":"Lorem ipsum","startDate":"2026-01-15T09:30:00Z","endDate":"2026-01-15T09:30:00Z","source":"Lorem ipsum"}],"skills":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"}],"fieldsValues":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","fieldId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","fieldValueId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","value":"Lorem ipsum","aiRunId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","field":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"boolean","name":"Lorem ipsum","parent":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"}},"fieldValue":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"location":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","search":"Lorem ipsum","formattedAddress":"Lorem ipsum","accuracyLevel":42}}],"emailAddresses":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","email":"Lorem ipsum","source":"Lorem ipsum","userId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","aiRunId":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}],"phoneNumbers":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","number":"Lorem ipsum","source":"Lorem ipsum","type":"Lorem ipsum","canonicalNumber":"Lorem ipsum","whatsappIdentifier":"Lorem ipsum","whatsappLastCheckedAt":"2026-01-15T09:30:00Z","telegramIdentifier":"Lorem ipsum","telegramLastCheckedAt":"2026-01-15T09:30:00Z","userId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","aiRunId":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}],"assignees":[{"user":{"displayName":"Lorem ipsum","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}}],"status":{"title":"Lorem ipsum","colorId":"Lorem ipsum","isAuto":true,"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","isProtected":true},"associations":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","statusId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","associationType":"COMPANY_CONTACT","source":"Lorem ipsum","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","updatedByUserId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","updatedStatusAt":"2026-01-15T09:30:00Z","status":{"title":"Lorem ipsum","colorId":"Lorem ipsum","isAuto":true,"isProtected":true,"isArchived":true,"isRejected":true,"isHired":true,"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","order":42,"parentId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","title":"Lorem ipsum","order":42}},"externalId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","companyId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","company":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"},"assignees":[{"user":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}}],"fieldsValues":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","field":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"boolean","name":"Lorem ipsum"},"fieldValue":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"location":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","locality":"Lorem ipsum"},"value":"Lorem ipsum"}],"linkedinCompanyId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","linkedinCompanyData":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"}},"parent":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","linkedinCompanyData":{"name":"Lorem ipsum"}}},"projectId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","project":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","referenceId":"Lorem ipsum","isMadeForSales":true,"isMadeForRecruitment":true,"presetId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","assignees":[{"user":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}}],"status":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","title":"Lorem ipsum","colorId":"Lorem ipsum","isArchived":true},"fieldsValues":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","field":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"boolean","name":"Lorem ipsum"},"fieldValue":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"location":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","locality":"Lorem ipsum"},"value":"Lorem ipsum"}],"colorId":"Lorem ipsum","name":"Lorem ipsum","publicUrl":"Lorem ipsum","company":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"},"fieldsValues":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","field":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"boolean","name":"Lorem ipsum"},"fieldValue":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"value":"Lorem ipsum"}],"linkedinCompanyId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","linkedinCompanyData":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"}}}}}]}],"total":1}}},"description":"Responses for GET /api/rest/profiles"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Get Profiles","operationId":"listProfiles","tags":["Profiles"]},"post":{"summary":"Creates or update a profile","security":[{"ApiKeyAuth":[]}],"description":"Save a profile in Jarvi. It creates the profile if it does not exist, updates it if it does.","requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"projectId":{"type":"string","description":"(rarely used) As for the reference id, but with the Jarvi internal project id. You can use projectId, referenceId or none of them if you want to create a profile without linking it to a project","example":"713a8005-e54d-4ee3-b6a4-89b27167dde6"},"firstName":{"type":"string","description":"If not provided, will be extracted from the resume or Linkedin URL. If no resume or Linkedin URL, will be required","example":"Quentin"},"lastName":{"type":"string","description":"If not provided, will be extracted from the resume or Linkedin URL. If no resume or Linkedin URL, will be required","example":"Decré"},"emailAddresses":{"type":"string","description":"Multiple email addresses separated by a comma. If not provided, will be extracted from the resume or Linkedin URL.","example":"quentin@jarvi.tech, quentin@decre.tech"},"phoneNumbers":{"type":"string","description":"Multiple phone numbers separated by a comma. If not provided, will be extracted from the resume or Linkedin URL.","example":"+33752626164,0240493773"},"linkedinUrl":{"type":"string","description":"The linkedin URL of the profile. If provided, Jarvi will extract the profile informations from the linkedin profile","example":"https://www.linkedin.com/in/quentindecre/"},"historyEntrySubject":{"type":"string","description":"The subject of the historyentry you want to show in the profile’s Jarvi history.","example":"Interview notes"},"historyEntryMessage":{"type":"string","description":"The message of the historyentry you want to show in the profile’s Jarvi history","example":"The message of the historyentry you want to show in the profile’s Jarvi history"},"resumesFiles":{"type":"array","description":"The resume(s) of the profile. Will be parsed by Jarvi. Remember to convert to base64 before sending","items":{"type":"object","properties":{"fileName":{"type":"string","description":"The name of the file, including the extension","example":"cv.pdf"},"data":{"type":"string","description":"The base64 of the file.","example":"data:@file/pdf;base64,JVBERi0......AABTLAAAAAA="}}}},"files":{"type":"array","description":"(rarely used) Any file you want to upload with the profile. Will not be parsed. Remember to convert to base64 before sending","items":{"type":"object","properties":{"fileName":{"type":"string","description":"The name of the file, including the extension","example":"motivation.docx"},"data":{"type":"string","description":"The base64 of the file.","example":"data:@file/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,UEsDBBQ......AABTLAAAAAA="}}}},"externalId":{"type":"string","description":"(rarely used) Your id. Will merge with exisiting profile with same externalId","example":"Your id. Will merge with exisiting profile with same externalId"},"id":{"type":"string","description":"(rarely used) Jarvi uuid. Will merge with exisiting profile with same id","example":"Jarvi uuid. Will merge with exisiting profile with same id"},"location":{"type":"string","description":"The location of the profile. If not provided, will be extracted from the resume or Linkedin URL","example":"Rennes, France"},"headline":{"type":"string","description":"The headline of the profile. If not provided, will be extracted from the resume or Linkedin URL","example":"Co-Founder Jarvi"},"currentCompanyName":{"type":"string","description":"The current company name of the profile (creates a work experience / position line on the profile). If not provided, will be extracted from the resume or Linkedin URL. Note: this does NOT link the profile as a contact of a company record. To attach a contact to a company, use the `data.associations` payload with a COMPANY_CONTACT association (see currentCompanyId).","example":"Jarvi"},"currentCompanyId":{"type":"string","deprecated":true,"description":"Deprecated: this field no longer creates a company association. To attach a profile as a contact of an existing company, pass a `data` object with an `associations` array, e.g. data: { associations: [{ associationType: \"COMPANY_CONTACT\", company: { jarviId: \"\" } }] }. Use company.jarviId for an existing Jarvi company, or company.externalId + name + statusId to upsert one.","example":"713a8005-e54d-4ee3-b6a4-89b27167dde6"},"currentPosition":{"type":"string","description":"The current job title of the profile. If not provided, will be extracted from the resume or Linkedin URL","example":"Co-founder"},"":{"type":"string","description":"Any custom field you want to add to the profile. You can find the uuid of the custom field in the Jarvi settings. If you want to provide multiple values, you can separate them with a comma","example":"My custom field value for this profile"},"historyEntryType":{"type":"string","description":"The type of the historyentry you want to show in the profile’s Jarvi history. It can be one of EVENT_SCHEDULED, EMAIL_SENT, EMAIL_RECEIVED, LINKEDIN_MESSAGE_SENT, LINKEDIN_MESSAGE_RECEIVED, LINKEDIN_INMAIL_SENT, LINKEDIN_INMAIL_RECEIVED, LINKEDIN_INVITATION_SENT, PHONECALL, PHONECALL_MISSED, SMS_SENT, SMS_RECEIVED, WHATSAPP_SENT, WHATSAPP_RECEIVED, TELEGRAM_SENT, TELEGRAM_RECEIVED, JOB_APPLICATION, LINKEDIN_NOTE, OTHER, or the uuid of any custom interaction type you may have created. ","example":"2788baea-1119-46d9-8e60-af9d6a1268e1"}}}}}},"responses":{"201":{"description":"The application has been saved","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"Profile saved successfully"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"},"profileId":{"type":"string","example":"d730cca9-d8b0-49e7-b2e0-c58c1bb7af9f"}}}}}},"400":{"description":"Cannot save profile, see details","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"Error details"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"description":"Unknown error","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"An error occured"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"}}}}}}},"operationId":"upsertProfile","tags":["Profiles"]}},"/rest/v2/companies":{"get":{"parameters":[{"in":"query","name":"updatedAfter","schema":{"type":"string"},"required":false,"description":"An ISO 8601 date string to filter companies updated after this date","example":"2024-05-30T10:19:11.381731+00:00"},{"in":"query","name":"where","required":false,"example":"{\"companyQuickSearch\":{\"_search\":\"Jarvi\"}}","description":"A JSON object, sent JSON-encoded in the query string. Combine filters with _and, _or and _not. What it accepts is the CompaniesFilters schema this parameter points at, described at [every filter companies accepts](https://api-docs.jarvi.tech/en/search#companies).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesFilters"},"example":{"companyQuickSearch":{"_search":"Jarvi"}}}}},{"in":"query","name":"orderBy","schema":{"type":"string"},"required":false,"example":"{\"createdAt\":\"desc\"}","description":"A JSON object string pairing one field with \"asc\" or \"desc\". Allowed fields: name, createdAt, status.order, linkedinCompanyData.foundedAt, linkedinCompanyData.linkedinEmployeeCount, linkedinCompanyData.linkedinEmployeeStartCount, linkedinCompanyData.website, legaldata.codenaf, legaldata.codenafTitle, legaldata.activity, customFieldsValue., customFieldsNumericValue.."},{"in":"query","name":"limit","schema":{"type":"number"},"required":false,"description":"The number of companies to return. Default is 100. Maximum is 1000"},{"in":"query","name":"offset","schema":{"type":"number"},"required":false,"description":"The number of companies to skip. Default is 0."}],"description":"Get all companies (recruitment, sales, etc.) with their custom fields, files, and more. Results are paginated: `limit` defaults to 100 and caps at 1000, so read `total` and walk `offset` until you have collected every record.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"name":{"type":"string","description":"Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger."},"description":{"type":"string","description":"Description of the company, written by the user in the app or filled by an import. This is not the LinkedIn description, which lives on the linked LinkedIn company data."},"website":{"type":"string"},"foundedAt":{"type":"string","format":"date-time"},"imageId":{"type":"string","format":"uuid"},"statusId":{"type":"string","format":"uuid"},"externalId":{"type":"string","description":"Identifier of the company in the client's own system. Unique per group, and used as the matching key by imports and by the public API."},"isProtectedUntil":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time"},"groupId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time","description":"Date the company record was created. Data imports replace it with the creation date coming from the source ATS or CRM."},"updatedAt":{"type":"string","format":"date-time"},"parentId":{"type":"string","format":"uuid","description":"Parent company when this record is a subsidiary. Used as a single level: searching on a parent can include its direct subsidiaries, but not their own."},"parent":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"name":{"type":"string","description":"Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger."},"linkedinCompanyData":{"type":"object","properties":{"name":{"type":"string"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the company, used in the public API and in app URLs."},"name":{"type":"string","description":"Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger."},"linkedinCompanyData":{"type":"object","properties":{"name":{"type":"string"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An object relationship"},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"}},"description":"An array relationship"}},"assignees":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"displayName":{"type":"string"},"id":{"type":"string","format":"uuid"}},"description":"An object relationship"}},"description":"An array relationship"}},"projectsCountPerStatusGroup":{"type":"array","items":{"type":"object","properties":{"status":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"isHidden":{"type":"boolean"},"isAuto":{"type":"boolean"},"order":{"type":"number","description":"Position of the status in the group's list: statuses are displayed in ascending order."},"parentId":{"type":"string","format":"uuid"},"colorId":{"type":"string"}},"description":"An object relationship"},"count":{"type":"integer","format":"int64"}},"description":"An array relationship"}},"files":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"file":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"size":{"type":"integer"},"mimeType":{"type":"string"}},"description":"An object relationship"}},"description":"An array relationship"}},"status":{"type":"object","properties":{"title":{"type":"string"},"colorId":{"type":"string"},"isAuto":{"type":"boolean"},"id":{"type":"string","format":"uuid"}},"description":"An object relationship"},"legaldata":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"legalName":{"type":"string"},"siren":{"type":"string"},"vatNumber":{"type":"string"},"activity":{"type":"string","description":"Declared corporate purpose (\"objet social\") of the company as filed with the French registry."},"codenaf":{"type":"string","description":"French INSEE activity code (NAF/APE) of the company, for example \"58.29C\"."},"codenafTitle":{"type":"string","description":"Readable label of the NAF/APE code, for example \"Édition de logiciels applicatifs\"."},"foundedAt":{"type":"string","format":"date-time"},"locations":{"type":"array","items":{"type":"object","properties":{"siret":{"type":"string"},"isHeadquarters":{"type":"boolean"},"locationId":{"type":"string","format":"uuid"},"location":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"search":{"type":"string"},"center":{"type":"object","description":"PostGIS geography, as GeoJSON"},"formattedAddress":{"type":"string"},"streetNumber":{"type":"string"},"route":{"type":"string"},"postalCode":{"type":"string"},"locality":{"type":"string"},"administrativeAreaLevel1":{"type":"string"},"administrativeAreaLevel2":{"type":"string"},"countryName":{"type":"string"},"accuracyLevel":{"type":"integer"}},"description":"An object relationship"}},"description":"An array relationship"}}},"description":"An object relationship"},"linkedinCompanyId":{"type":"string","format":"uuid","description":"Link to the LinkedIn page data of this company. That data is shared across all groups, and a given LinkedIn page can be attached to at most one company per group."},"linkedinCompanyData":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"tagline":{"type":"string"},"foundedAt":{"type":"string","format":"date-time","description":"Year the company was founded, as published on its LinkedIn page. LinkedIn only gives the year, so the day and month fall back to January 1st — treat the day and month as meaningless."},"linkedinEmployeeCount":{"type":"integer","description":"How many LinkedIn members declare this company as their employer. A live headcount, which can be far above the size bracket the company declares."},"linkedinEmployeeStartCount":{"type":"integer","description":"Lower bound of the company size bracket declared on LinkedIn — 0, 2, 11, 51, 201, 501, 1001, 5001 or 10001 — paired with linkedinEmployeeEndCount (linkedin_employee_end_count). This is a declared size, not a headcount."},"linkedinEmployeeEndCount":{"type":"integer"},"linkedinUrl":{"type":"string"},"universalName":{"type":"string"},"linkedinId":{"type":"string"},"website":{"type":"string","description":"Company website, as published on its LinkedIn page."},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"},"industries":{"type":"array","items":{"type":"object","properties":{"industry":{"type":"object","properties":{"nameEnglish":{"type":"string"},"nameFrench":{"type":"string"},"linkedinId":{"type":"number"},"id":{"type":"string","format":"uuid"}},"description":"An object relationship"}},"description":"An array relationship"}}},"description":"An object relationship"},"fieldsValues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"field":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["boolean","date","group","multiplechoice","number","rating","richtext","singlechoice","singlelocation","text","url"]},"name":{"type":"string"}},"description":"An object relationship"},"fieldValue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"description":"An object relationship"},"locationId":{"type":"string","format":"uuid"},"location":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"search":{"type":"string"},"formattedAddress":{"type":"string"},"locality":{"type":"string"},"accuracyLevel":{"type":"integer"}},"description":"An object relationship"},"value":{"type":"string"}},"description":"An array relationship"}},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Jarvi identifier of the project, used in the public API and in app URLs."},"colorId":{"type":"string"},"name":{"type":"string","description":"Title of the project — a job opening, a sales mission or a talent pool. Typed by the user, or taken from the LinkedIn recruiter project or Sales Navigator list name when the project comes from an import."}},"description":"An array relationship"}},"image":{"type":"object","properties":{"publicUrl":{"type":"string"}},"description":"An object relationship"},"phoneNumbers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"string"},"source":{"type":"string"}},"description":"An array relationship"}},"emailAddresses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","description":"Email address of the profile or the company it belongs to. Normalized on save: lowercased, and when the input is not a clean address the first valid one found inside it is kept, the row being dropped if there is none."},"source":{"type":"string"}},"description":"An array relationship"}}}}},"total":{"type":"integer","description":"The total number of companies matching the query"},"warnings":{"type":"array","description":"Present only when the request used an operator that is being retired. The request itself was answered normally.","items":{"$ref":"#/components/schemas/DeprecationWarning"}}}},"example":{"data":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","description":"Lorem ipsum","website":"Lorem ipsum","foundedAt":"2026-01-15T09:30:00Z","imageId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","statusId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","externalId":"Lorem ipsum","isProtectedUntil":"2026-01-15T09:30:00Z","deletedAt":"2026-01-15T09:30:00Z","groupId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","parentId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","linkedinCompanyData":{"name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"}},"image":{"publicUrl":"Lorem ipsum"}},"children":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","linkedinCompanyData":{"name":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"}},"image":{"publicUrl":"Lorem ipsum"}}],"assignees":[{"user":{"displayName":"Lorem ipsum","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}}],"projectsCountPerStatusGroup":[{"status":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","title":"Lorem ipsum","isHidden":true,"isAuto":true,"order":42,"parentId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","colorId":"Lorem ipsum"},"count":42}],"files":[{"fileId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","createdAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","file":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","size":42,"mimeType":"Lorem ipsum"}}],"status":{"title":"Lorem ipsum","colorId":"Lorem ipsum","isAuto":true,"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"legaldata":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","createdAt":"2026-01-15T09:30:00Z","deletedAt":"2026-01-15T09:30:00Z","updatedAt":"2026-01-15T09:30:00Z","legalName":"Lorem ipsum","siren":"Lorem ipsum","vatNumber":"Lorem ipsum","activity":"Lorem ipsum","codenaf":"Lorem ipsum","codenafTitle":"Lorem ipsum","foundedAt":"2026-01-15T09:30:00Z","locations":[{"siret":"Lorem ipsum","isHeadquarters":true,"locationId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","location":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","search":"Lorem ipsum","center":{},"formattedAddress":"Lorem ipsum","streetNumber":"Lorem ipsum","route":"Lorem ipsum","postalCode":"Lorem ipsum","locality":"Lorem ipsum","administrativeAreaLevel1":"Lorem ipsum","administrativeAreaLevel2":"Lorem ipsum","countryName":"Lorem ipsum","accuracyLevel":42}}]},"linkedinCompanyId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","linkedinCompanyData":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum","description":"Lorem ipsum","tagline":"Lorem ipsum","foundedAt":"2026-01-15T09:30:00Z","linkedinEmployeeCount":42,"linkedinEmployeeStartCount":42,"linkedinEmployeeEndCount":42,"linkedinUrl":"Lorem ipsum","universalName":"Lorem ipsum","linkedinId":"Lorem ipsum","website":"Lorem ipsum","image":{"publicUrl":"Lorem ipsum"},"industries":[{"industry":{"nameEnglish":"Lorem ipsum","nameFrench":"Lorem ipsum","linkedinId":42,"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}}]},"fieldsValues":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","field":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"boolean","name":"Lorem ipsum"},"fieldValue":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Lorem ipsum"},"locationId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","location":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","search":"Lorem ipsum","formattedAddress":"Lorem ipsum","locality":"Lorem ipsum","accuracyLevel":42},"value":"Lorem ipsum"}],"projects":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","colorId":"Lorem ipsum","name":"Lorem ipsum"}],"image":{"publicUrl":"Lorem ipsum"},"phoneNumbers":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","number":"Lorem ipsum","source":"Lorem ipsum"}],"emailAddresses":[{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","email":"Lorem ipsum","source":"Lorem ipsum"}]}],"total":1}}},"description":"Responses for GET /api/rest/companies"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Get Companies","operationId":"listCompanies","tags":["Companies"]},"post":{"summary":"Creates or update a company","security":[{"ApiKeyAuth":[]}],"description":"Save a company in Jarvi. It creates the company if it does not exist, updates it if it does.","requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"type":"string","description":"The name of the company","example":"Jarvi"},"description":{"type":"string","description":"The description of the company","example":"Jarvi is an ATS and CRM that gather your talents, conversations, opportunities, clients in one place."},"linkedinUrl":{"type":"string","description":"The linkedin url of the company","example":"https://www.linkedin.com/company/jarvi-tech/"},"companyId":{"type":"string","description":"The id of the company you want to update. ","example":"713a8005-e54d-4ee3-b6a4-89b27167dde6"},"externalId":{"type":"string","description":"The id of the company you want to update in your system.","example":"123456"},"assignees":{"type":"string","description":"The assignees of the company","example":"Sarah Le Roué, Johan Barri, Quentin DECRE"},"statusId":{"type":"string","description":"The status of the company","example":"dbab8773-8b59-4597-af75-b31333dd5409"}}}}}},"responses":{"201":{"description":"The application has been saved","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"Company saved successfully"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"},"companyId":{"type":"string","example":"d730cca9-d8b0-49e7-b2e0-c58c1bb7af9f"}}}}}},"400":{"description":"Cannot save profile, see details","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"Error details"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"description":"Unknown error","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","example":"An error occured"},"taskId":{"type":"string","example":"0b538428-7652-4243-baaf-3867803d7007"}}}}}}},"operationId":"upsertCompany","tags":["Companies"]}},"/graphql":{"post":{"summary":"Send a graphql query or mutation","security":[{"ApiKeyAuth":[]}],"description":"Use the playground console to build and test your requests and see all the possibilies","requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"operationName":{"type":"string","description":"The name of the operation. Used for log and debugging. If not provided, will be the first word of the query or mutation","example":"fields"},"query":{"type":"string","description":"The graphQL query as a SourcesEnum. You can use the playground console to build and test your requests and see all the possibilies","example":"query fields($limit: Int, $offset: Int, $order_by: [fields_order_by!]!, $where: fields_bool_exp) {\n items: fields(\n limit: $limit\n offset: $offset\n order_by: $order_by\n where: $where\n ) {\n id\n createdAt\n updatedAt\n deletedAt\n name\n userId\n type\n order\n targetedEntity\n isHidden\n defaultValue\n purpose\n isMadeForSales\n isMadeForRecruitment\n values(where: {deletedAt: {_is_null: true}}, order_by: {name: asc}) {\n id\n fieldId\n name\n isDefault\n technicalValue\n __typename\n }\n parentId\n parent {\n id\n name\n isMadeForSales\n isMadeForRecruitment\n __typename\n }\n children(where: {deletedAt: {_is_null: true}}, order_by: {order: asc}) {\n id\n createdAt\n updatedAt\n deletedAt\n name\n userId\n type\n order\n targetedEntity\n isHidden\n defaultValue\n purpose\n isMadeForSales\n isMadeForRecruitment\n values(where: {deletedAt: {_is_null: true}}, order_by: {name: asc}) {\n id\n fieldId\n name\n isDefault\n technicalValue\n __typename\n }\n parentId\n parent {\n id\n name\n isMadeForSales\n isMadeForRecruitment\n __typename\n }\n __typename\n }\n __typename\n }\n total: fields_aggregate(order_by: $order_by, where: $where) {\n aggregate {\n count\n __typename\n }\n __typename\n }\n }"},"variables":{"type":"object","description":"If you have variables in your query or mutation, you can provide them here. You can use the playground console to build and test your requests and see all the possibilies","example":{"where":{"_and":[{"parentId":{"_is_null":true}},{"deletedAt":{"_is_null":true}}]},"limit":1000,"offset":0,"order_by":{"order":"asc"}}}}}}}},"responses":{"200":{"description":"GraphQL response (can contain errors)","content":{"application/json":{"schema":{"properties":{"data":{"type":"object","example":"The data you wanted to get"},"errors":{"type":"object","example":"Errors details if any"}}}}}},"401":{"description":"Unauthorized, check your API key"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"description":"Unknown error"}},"operationId":"runGraphqlOperation","tags":["GraphQL"]}},"/rest/v2/offers":{"get":{"parameters":[{"in":"query","name":"limit","schema":{"type":"number"},"required":false,"description":"The number of offers to return. Default is 100. Maximum is 1000"},{"in":"query","name":"offset","schema":{"type":"number"},"required":false,"description":"The number of offers to skip. Default is 0."},{"in":"query","name":"where","schema":{"type":"string"},"required":false,"example":"{\"publishedAt\":{\"_is_null\":false}}","description":"A JSON object string filtering the underlying projects, in the same shape as the `where` of GET /rest/v2/projects."}],"description":"Get all offers with their custom fields, files, and more. Results are paginated: `limit` defaults to 100 and caps at 1000, so read `total` and walk `offset` until you have collected every record.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"integer","description":"The total number of offers matching the query"},"data":{"items":{"description":"columns and relationships of \"projects\"","nullable":false,"properties":{"__typename":{"nullable":false,"title":"String","type":"string"},"createdAt":{"$ref":"#/components/schemas/timestamptz_NonNull"},"externalId":{"nullable":true,"title":"String","type":"string"},"fieldsValues":{"items":{"description":"columns and relationships of \"projects_fieldsvalues\"","nullable":false,"properties":{"field":{"description":"columns and relationships of \"fields\"","nullable":false,"properties":{"id":{"$ref":"#/components/schemas/uuid_NonNull"},"name":{"nullable":false,"title":"String","type":"string"},"purpose":{"$ref":"#/components/schemas/fields_purposes_enum"},"type":{"$ref":"#/components/schemas/fields_types_enum_NonNull"}},"title":"fields","type":"object"},"fieldValue":{"description":"columns and relationships of \"fieldsvalues\"","nullable":true,"properties":{"id":{"$ref":"#/components/schemas/uuid_NonNull"},"name":{"nullable":false,"title":"String","type":"string"},"technicalValue":{"nullable":true,"title":"String","type":"string"}},"title":"fieldsvalues","type":"object"},"id":{"$ref":"#/components/schemas/uuid_NonNull"},"location":{"description":"columns and relationships of \"locations\"","nullable":true,"properties":{"administrativeAreaLevel1":{"nullable":true,"title":"String","type":"string"},"administrativeAreaLevel2":{"nullable":true,"title":"String","type":"string"},"countryName":{"nullable":true,"title":"String","type":"string"},"countryShortName":{"nullable":true,"title":"String","type":"string"},"formattedAddress":{"nullable":true,"title":"String","type":"string"},"id":{"$ref":"#/components/schemas/uuid_NonNull"},"locality":{"nullable":true,"title":"String","type":"string"},"postalCode":{"nullable":true,"title":"String","type":"string"},"search":{"nullable":false,"title":"String","type":"string"}},"title":"locations","type":"object"},"value":{"nullable":true,"title":"String","type":"string"}},"title":"projects_fieldsvalues","type":"object"},"nullable":false,"type":"array"},"id":{"$ref":"#/components/schemas/uuid_NonNull"},"name":{"nullable":false,"title":"String","type":"string"},"referenceId":{"nullable":true,"title":"String","type":"string"},"updatedAt":{"$ref":"#/components/schemas/timestamptz_NonNull"},"shortId":{"nullable":true,"title":"String","type":"string"},"publishedAt":{"$ref":"#/components/schemas/timestamptz_NonNull"},"userAssignees":{"items":{"description":"Users assigned to projects.","nullable":false,"properties":{"displayName":{"nullable":false,"title":"String","type":"string"},"email":{"nullable":true,"title":"String","type":"string"},"id":{"$ref":"#/components/schemas/uuid_NonNull"}},"title":"projects_userAssignees","type":"object"},"nullable":false,"type":"array"}},"title":"projects","type":"object"},"nullable":false,"type":"array"}}},"example":{"data":[{"id":"0c48cc86-352e-4098-9f34-5785e3aeafa3","name":"Dev JAVA - IDF","createdAt":"2024-05-30T10:19:11.381731+00:00","updatedAt":"2024-10-24T08:41:12.981473+00:00","externalId":"1234567890","referenceId":"1234567890","fieldsValues":[{"id":"1785a816-1cf3-4e07-849b-4be09a8ddad6","field":{"id":"00da911c-e3e1-46c1-86cc-0c1ec53e3213","type":"richtext","name":"Test Laurent","purpose":null,"__typename":"fields"},"fieldValue":null,"location":null,"value":"

contenu 1 :

Contenu 2

","__typename":"projects_fieldsvalues"},{"id":"049d767e-c7cb-42e8-b0fb-7668cfba391e","field":{"id":"de7fae4a-5f73-43a4-a92f-e19c4ecd81f1","type":"boolean","name":"resources.fields.purposes.joboffer_salary_is_public.name","purpose":"joboffer_salary_is_public","__typename":"fields"},"fieldValue":null,"location":null,"value":"true","__typename":"projects_fieldsvalues"}],"__typename":"projects"}],"total":1}}},"description":"Responses for GET /api/rest/offers"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Get Offers","operationId":"listOffers","tags":["Offers"]}},"/rest/v2/files":{"post":{"summary":"Upload a file","security":[{"ApiKeyAuth":[]}],"description":"Upload a file to Nhost Storage. Returns the file ID for subsequent association with entities. Requires a private API key (PAT).","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["data","fileName"],"properties":{"data":{"type":"string","description":"Base64-encoded file content. Optionally prefixed with a data URI (e.g. \"data:application/pdf;base64,...\")","example":"JVBERi0xLjQK..."},"fileName":{"type":"string","description":"File name including extension","example":"cv-dupont.pdf"},"mimeType":{"type":"string","description":"MIME type. Inferred from data URI prefix if omitted.","example":"application/pdf"}}}}}},"responses":{"201":{"description":"File uploaded successfully","content":{"application/json":{"schema":{"properties":{"fileId":{"type":"string","example":"d730cca9-d8b0-49e7-b2e0-c58c1bb7af9f"},"name":{"type":"string","example":"cv-dupont.pdf"},"mimeType":{"type":"string","example":"application/pdf"},"size":{"type":"integer","example":245320}}}}}},"400":{"description":"Invalid request (missing fields or empty file)","content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"413":{"description":"File too large","content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}}}}}},"429":{"$ref":"#/components/responses/TooManyRequests"}},"operationId":"uploadFile","tags":["Files"]}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY"}},"responses":{"Unauthorized":{"description":"The X-API-KEY header is missing, unknown, or not privileged enough for this route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"error":"UNAUTHORIZED","message":"The X-API-KEY header is missing or does not match any API key.","documentation_url":"https://api-docs.jarvi.tech/en/api-keys"}}}},"TooManyRequests":{"description":"The workspace has spent its hourly execution-time budget. Wait for the window to reset — the Retry-After header says how long — or run the job outside business hours, when nothing is metered.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","example":3600}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","properties":{"usedMinutes":{"type":"number","example":5.4},"limitMinutes":{"type":"number","example":5},"retryAfterSeconds":{"type":"integer","example":3600}}}]}}}}},"schemas":{"ApiError":{"type":"object","description":"The shape every error response takes.","properties":{"error":{"type":"string","description":"A stable code you can branch on","example":"UNAUTHORIZED"},"message":{"type":"string","description":"What went wrong, in English, meant to be read"},"documentation_url":{"type":"string","example":"https://api-docs.jarvi.tech/en/api-keys"}},"required":["error","message"]},"DeprecationWarning":{"type":"object","description":"Reports an operator that still works but is being retired. Purely informational: the request was answered normally, and the same information is repeated in the Warning response header.","properties":{"code":{"type":"string","enum":["DEPRECATED_OPERATOR"]},"operator":{"type":"string","example":"_ilike"},"field":{"type":"string","example":"lastName"},"message":{"type":"string","description":"What happened and what to use instead"}}},"bigint":{"type":"integer","format":"int64","nullable":true,"title":"bigint"},"citext":{"type":"string","description":"Case-insensitive text","nullable":true,"title":"citext"},"fields_purposes_enum":{"type":"string","enum":["business_estimated_revenue","joboffer","joboffer_activity_area","joboffer_benefits","joboffer_company_description","joboffer_company_name","joboffer_contract_duration_in_months","joboffer_contract_type","joboffer_description","joboffer_employee_status","joboffer_is_fulltime","joboffer_job_category","joboffer_level_of_study","joboffer_location","joboffer_min_years_of_experience","joboffer_profile_description","joboffer_remote_days_per_week","joboffer_salary_is_public","joboffer_salary_per_year_max","joboffer_salary_per_year_min","joboffer_salary_range_eur","joboffer_title"],"nullable":true,"title":"fields_purposes_enum"},"fields_types_enum_NonNull":{"type":"string","enum":["boolean","date","group","multiplechoice","number","rating","richtext","singlechoice","singlelocation","text"],"nullable":false,"title":"fields_types_enum"},"geography":{"type":"object","description":"PostGIS geography, as GeoJSON","nullable":true,"title":"geography"},"jsonb":{"description":"Arbitrary JSON — its shape depends on the field, and it may be null","title":"jsonb"},"locales_enum":{"type":"string","enum":["ar","bs","cs","da","de","el","en","es","fi","fr","hi","hr","hu","hy","in","is","it","ja","jv","kn","ko","lt","lv","ml","ms","my","nl","no","pl","pt","ro","ru","sk","sq","sr","sv","ta","te","th","tl","tr","uk","vi","xx","zh"],"nullable":true,"title":"locales_enum"},"locales_enum_NonNull":{"type":"string","enum":["ar","bs","cs","da","de","el","en","es","fi","fr","hi","hr","hu","hy","in","is","it","ja","jv","kn","ko","lt","lv","ml","ms","my","nl","no","pl","pt","ro","ru","sk","sq","sr","sv","ta","te","th","tl","tr","uk","vi","xx","zh"],"nullable":false,"title":"locales_enum"},"networkdistancelevels_enum":{"type":"string","enum":["DISTANCE_1","DISTANCE_2","DISTANCE_3","OUT_OF_NETWORK","SELF"],"nullable":true,"title":"networkdistancelevels_enum"},"numeric":{"type":"number","nullable":true,"title":"numeric"},"numeric_NonNull":{"type":"number","nullable":false,"title":"numeric"},"profiles_associations_types_enum_NonNull":{"type":"string","enum":["COMPANY_CONTACT","PROJECT_CONTACT","PROJECT_PROFILE"],"nullable":false,"title":"profiles_associations_types_enum"},"projects_linkedin_id_types_enum":{"type":"string","enum":["LINKEDIN_SALES_NAVIGATOR_LIST","LINKEDIN_TALENT_PROJECT"],"nullable":true,"title":"projects_linkedin_id_types_enum"},"sources_enum":{"type":"string","enum":["APEC","APEC_SOURCING","CADREEMPLOI","CALENDAR","CLIENT_APPLICATION","COOPTATION","CVADEN","CVADEN_SOURCING","GITHUB","HELLOWORK","HELLOWORK_SOURCING","HOSPIMEDIA","ICTJOB","ICTJOB_SOURCING","IMPORT","INDEED","INDEED_SOURCING","JEAN_MICHEL_SOURCING","JOBBOARD","JOBILLICO","JOBILLICO_SOURCING","JOBTEASER","JOBUP","LINKEDIN","LINKEDIN_JOBS","MANUAL","MARKETINGINBOUND","METEOJOB","METEOJOB_SOURCING","MONSTER","OTHER","OTHER_SOURCING","POLEEMPLOI","POLEEMPLOI_SOURCING","RESUME","SPONTANEOUSAPPLICATION","UNKNOWN","WELOVEDEVS","WTTJ"],"nullable":true,"title":"sources_enum"},"sources_enum_NonNull":{"type":"string","enum":["APEC","APEC_SOURCING","CADREEMPLOI","CALENDAR","CLIENT_APPLICATION","COOPTATION","CVADEN","CVADEN_SOURCING","GITHUB","HELLOWORK","HELLOWORK_SOURCING","HOSPIMEDIA","ICTJOB","ICTJOB_SOURCING","IMPORT","INDEED","INDEED_SOURCING","JEAN_MICHEL_SOURCING","JOBBOARD","JOBILLICO","JOBILLICO_SOURCING","JOBTEASER","JOBUP","LINKEDIN","LINKEDIN_JOBS","MANUAL","MARKETINGINBOUND","METEOJOB","METEOJOB_SOURCING","MONSTER","OTHER","OTHER_SOURCING","POLEEMPLOI","POLEEMPLOI_SOURCING","RESUME","SPONTANEOUSAPPLICATION","UNKNOWN","WELOVEDEVS","WTTJ"],"nullable":false,"title":"sources_enum"},"timestamptz":{"type":"string","format":"date-time","nullable":true,"title":"timestamptz"},"timestamptz_NonNull":{"type":"string","format":"date-time","nullable":false,"title":"timestamptz"},"uuid":{"nullable":true,"pattern":"[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}","title":"uuid","type":"string"},"uuid_NonNull":{"nullable":false,"pattern":"[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}","title":"uuid","type":"string"},"SearchExp":{"type":"object","description":"Full-text search on an indexed field. Accepts tantivy syntax: \"developer AND (java OR kotlin)\", exact phrases \"\\\"project manager\\\"\", boosts \"java^10\".","properties":{"_search":{"type":"string"}}},"TextExp":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}},"_is_null":{"type":"boolean"}}},"UuidExp":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}}},"DateExp":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}}},"NumberExp":{"type":"object","properties":{"_eq":{"type":"number"},"_gte":{"type":"number"},"_lte":{"type":"number"},"_is_null":{"type":"boolean"}}},"LocationExp":{"type":"object","description":"Geographic search. Use range 0 for an exact city or region match, or a radius in meters.","properties":{"_near":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid"},"range":{"type":"integer","description":"Radius in meters"}},"required":["locationId"]}}},"CustomFieldIdsExp":{"type":"object","description":"Custom field UUIDs. _all requires every field, _in requires any of them.","properties":{"_all":{"type":"array","items":{"type":"string","format":"uuid"}},"_in":{"type":"array","items":{"type":"string","format":"uuid"}}}},"ProfilesFilters":{"type":"object","description":"Filters for profiles. Combine them with _and, _or and _not. Every field listed here is index-backed. Other Hasura columns and relations are accepted too, but they are neither optimised nor guaranteed.","properties":{"_and":{"type":"array","items":{"$ref":"#/components/schemas/ProfilesFilters"}},"_or":{"type":"array","items":{"$ref":"#/components/schemas/ProfilesFilters"}},"_not":{"$ref":"#/components/schemas/ProfilesFilters"},"quickSearch":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Searches name, email, phone and short id — the target for simple person or name lookups."},"globalSearch":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Searches name, headline, summary, position titles, company names, skills, educations and custom field values — the target for skill, role or technology searches."},"emailPhoneAndNameSearch":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Searches name, email, phone and short id — the target for simple person or name lookups."},"fullPositionTitleSkillsAndTagsSearch":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Searches name, headline, summary, position titles, company names, skills, educations and custom field values — the target for skill, role or technology searches."},"headline":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Headline of the profile: the tagline shown under the name on LinkedIn, or the summary line extracted from the CV for profiles that have no LinkedIn page. Editable by hand only when the profile has no LinkedIn identifier."},"currentPositions.global":{"type":"object","properties":{"_search":{"type":"string","description":"Full-text over title, description"},"title":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Job title held at this position, coming from LinkedIn, from a parsed CV or entered by hand. This is the main field behind job title search."},"description":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"What the person wrote about this role on their profile or CV. Often empty on imported records."}}},"emails":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Email address of the profile or the company it belongs to. Normalized on save: lowercased, and when the input is not a clean address the first valid one found inside it is kept, the row being dropped if there is none."},"phones":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Phone number search. Only the digits are compared, so a number matches whatever spacing, separators or country prefix it was typed with, and a suffix matches too."},"profiles.shortId":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Short readable reference for the profile — what users type in quick search and what appears on generated documents. Assigned once at creation and never changes."},"historyEntries":{"type":"object","properties":{"_search":{"type":"string","description":"Full-text over subject, message"},"subject":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Subject of the interaction: the email subject, the meeting title, or the job offer title. Empty for channels that carry no subject, such as LinkedIn messages, WhatsApp and SMS."},"message":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Content of the interaction: the email body, the text of the LinkedIn, WhatsApp, SMS or Telegram message, or what the recruiter typed for a manual note."},"type":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}},"_is_null":{"type":"boolean"}},"description":"What kind of interaction this entry records: emails, LinkedIn messages and InMails, connection invitations, SMS, WhatsApp, Telegram, phone calls, scheduled meetings, job applications, or a free note."},"subTypeId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Optional sub-category of the interaction, defined by the group itself — naming its own kinds of notes or calls, for instance. Each sub-category belongs to a single parent type."},"occurredAt":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"Single date used to place the interaction on the timeline: the meeting start for a scheduled event, the creation date otherwise. Maintained by a trigger."},"userId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Jarvi user this entry belongs to. Determines the group the entry is attached to, and is used as its sender by default."}}},"historyEntries.hasFiles":{"type":"boolean","description":"The profile has at least one interaction carrying an attached file."},"historyEntries.hasRecording":{"type":"boolean","description":"The profile has at least one interaction with a meeting recording."},"customField":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Value of a custom field. Target one field by suffixing its id, as in \"customField.\"."},"location":{"$ref":"#/components/schemas/LocationExp"},"hasEmail":{"type":"boolean","description":"The profile has at least one email address."},"hasEmailType":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}},"_is_null":{"type":"boolean"}},"description":"The profile has an email address of this type. Takes the same values as the type of an email address."},"hasPhone":{"type":"boolean","description":"The profile has at least one phone number."},"hasValidPhone":{"type":"boolean","description":"The profile has at least one phone number not marked as invalid."},"hasLocation":{"type":"boolean","description":"The profile has at least one location."},"hasPhoneType":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}},"_is_null":{"type":"boolean"}},"description":"The profile has a phone number of this type. Takes the same values as the type of a phone number."},"hasWhatsApp":{"type":"boolean","description":"The profile has a phone number reachable on WhatsApp."},"isTalent":{"type":"boolean","description":"The profile is a talent — someone you recruit, followed in the ATS. A profile can be a talent and a contact at once."},"isContact":{"type":"boolean","description":"The profile is a contact — a client or a hiring manager, followed in the CRM. A profile can be a contact and a talent at once."},"hasLinkedin":{"type":"boolean","description":"The profile is matched to a LinkedIn account."},"hasResume":{"type":"boolean","description":"The profile has at least one CV attached."},"isConnectedOnLinkedinWithMe":{"type":"boolean","description":"The calling user is connected with this profile on LinkedIn, as recorded in the profile's history."},"hasReplied":{"type":"boolean","description":"The profile has answered at least once, on any channel."},"hasScheduledMessage":{"type":"boolean","description":"A message or a connection invitation is still waiting to be sent to this profile."},"hasUnreadMessagesNotifications":{"type":"boolean","description":"The profile has an unread message notification."},"firstPositionStartDate":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"Start date of the earliest position on the profile — the usual way to reason about years of experience."},"lastPositionStartDate":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"Start date of the current position, that is the one with no end date."},"currentPositions.companyId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"The profile currently works at this company. Takes the identifier of the LinkedIn company page, not a Jarvi company id."},"projectId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"The profile is associated with this project."},"statusId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Status of the profile. A parent status also matches profiles carrying any of its children, and the search is narrowed by the project or entity given in the context. Pass \"other\" for profiles whose status has no parent."},"hasProject":{"type":"boolean","description":"The profile is associated with at least one project."},"projectCount":{"type":"object","properties":{"_eq":{"type":"number"},"_gte":{"type":"number"},"_lte":{"type":"number"},"_is_null":{"type":"boolean"}},"description":"How many distinct projects the profile is associated with."},"emptyCustomFields":{"$ref":"#/components/schemas/CustomFieldIdsExp"},"filledCustomFields":{"$ref":"#/components/schemas/CustomFieldIdsExp"},"isInCrm":{"type":"boolean","description":"The profile is followed in the CRM, meaning it is a contact. Same as isContact."},"isInAts":{"type":"boolean","description":"The profile is followed in the ATS, meaning it is a talent. Same as isTalent."},"hasAttachedFiles":{"type":"boolean","description":"The profile has at least one attached file."},"isOpenToNewOpportunities":{"type":"boolean","description":"The profile is flagged as open to new opportunities."},"isHiring":{"type":"boolean","description":"The profile is flagged as hiring."},"id":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Jarvi identifier of the profile, used in the public API and in app URLs."},"createdAt":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"Technical timestamp of the row creation. For the date the profile entered the base, use addedAt (added_at) instead."},"addedAt":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"Date the profile entered the group's base — what recruiters read as \"added on\". Set automatically when the profile is created or restored, unless the caller provides its own value, which is what imports do to keep the original date."},"externalId":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}}},"description":"Identifier of the profile in the client's own system — their ATS, their CRM, or whatever calls the public API. Never a Jarvi identifier. Unique per group, and used to recognise a profile that is sent again."},"publicIdentifier":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}}},"description":"LinkedIn public slug, the part after linkedin.com/in/. Unique per group. The person can change it on LinkedIn, which makes it the least reliable of the LinkedIn identifiers."},"linkedinId":{"type":"object","properties":{"_eq":{"type":"number"},"_in":{"type":"array","items":{"type":"number"}}},"description":"Numeric LinkedIn identifier of the person. Unique per group. Not to be confused with memberId (member_id), which holds the obfuscated \"ACoAA…\" identifier, nor with publicIdentifier (public_identifier), which holds the URL slug."},"primaryLocale":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}},"_is_null":{"type":"boolean"}},"description":"Main language of the profile itself — the language its LinkedIn page or CV is written in. Different from the profiles_locales table, which lists the languages the person speaks and how well."},"auditLogs":{"type":"object","properties":{"createdAt":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"When the tracked change happened. This is the reference date for incremental synchronisation: fetching everything modified since a given date goes through this column."}}}}},"ProfilesSort":{"type":"object","description":"Allowed sort fields:\n- createdAt — Technical timestamp of the row creation. For the date the profile entered the base, use addedAt (added_at) instead.\n- addedAt — Date the profile entered the group's base — what recruiters read as \"added on\". Set automatically when the profile is created or restored, unless the caller provides its own value, which is what imports do to keep the original date.\n- lastInteractionDate — Date of the last interaction with the profile. Every kind of history entry counts — call, email, note, meeting, LinkedIn message, including those logged by hand — and messages still waiting to be sent are taken into account too. Maintained by a trigger. See lastPastInteractionDate (trigger_last_past_interaction_date) for the value that ignores pending messages.\n- firstName — First name actually used for the profile: the one entered by a user when there is one, otherwise the one parsed from LinkedIn or from a CV. Maintained by a trigger.\n- source — Where the profile came from: LinkedIn, an import, a manual creation, a job board, a referral… Groups can add their own values, so this is not a closed list.\n- createdByUserId — User who brought the profile into the group's base. Set from the session user when the profile is created, and set again if a deleted profile is restored.\n- lastResumeUpdatedAt — When the profile was last fully refreshed from its source, either a LinkedIn scrape or a CV parsing. Used to re-queue profiles that have not been refreshed for six months.\n- countMessagesReceivedFromThisProfile — How many messages this profile has sent back, across every channel — LinkedIn, email, SMS, WhatsApp, Telegram. Maintained by a trigger. A profile with at least one is automatically moved to the \"replied\" status.\n- countMessagesSentToThisProfile — How many messages have been sent to this profile, across every channel. Connection invitations are counted apart, in countInvitationsSentToThisProfile (trigger_count_invitations_sent_to_this_profile). Maintained by a trigger.\n- countMessagesScheduledToThisProfile — How many messages are still waiting to be sent to this profile. The count drops back once a message has been sent and synced back, so it reflects what is pending rather than everything ever scheduled. Drafts and connection invitations are excluded. Maintained by a trigger.\n- location.formattedAddressForSorting — Location, on the manual one first when there are several\n- lastPosition.companyName — Current company\n- lastPosition.title — Current job title\n- lastPosition.startDate — Start date of the current position\n- customFieldsValue. — Custom field value — suffix with the field UUID, e.g. \"customFieldsValue.\"\n- customFieldsNumericValue. — Numeric custom field value — suffix with the field UUID. Use for number and rating fields.\n- status.title — Status, narrowed by the project or entity given in the context\n- association.updatedAt — Date the association with the project or company in the context was last updated","properties":{"field":{"type":"string","enum":["createdAt","addedAt","lastInteractionDate","firstName","source","createdByUserId","lastResumeUpdatedAt","countMessagesReceivedFromThisProfile","countMessagesSentToThisProfile","countMessagesScheduledToThisProfile","location.formattedAddressForSorting","lastPosition.companyName","lastPosition.title","lastPosition.startDate","status.title","association.updatedAt"]},"order":{"type":"string","enum":["ASC","DESC"],"default":"DESC"}},"required":["field"],"x-sortFields":["createdAt","addedAt","lastInteractionDate","firstName","source","createdByUserId","lastResumeUpdatedAt","countMessagesReceivedFromThisProfile","countMessagesSentToThisProfile","countMessagesScheduledToThisProfile","location.formattedAddressForSorting","lastPosition.companyName","lastPosition.title","lastPosition.startDate","customFieldsValue.","customFieldsNumericValue.","status.title","association.updatedAt"]},"ProjectsFilters":{"type":"object","description":"Filters for projects. Combine them with _and, _or and _not. Every field listed here is index-backed. Other Hasura columns and relations are accepted too, but they are neither optimised nor guaranteed.","properties":{"_and":{"type":"array","items":{"$ref":"#/components/schemas/ProjectsFilters"}},"_or":{"type":"array","items":{"$ref":"#/components/schemas/ProjectsFilters"}},"_not":{"$ref":"#/components/schemas/ProjectsFilters"},"projectNameSearch":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Searches project name, its company name and its reference id — the target for project lookups."},"customField":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Value of a custom field. Target one field by suffixing its id, as in \"customField.\"."},"hasJobBoardEnabled":{"type":"boolean","description":"The project is published on at least one job board."},"hasLinkedinId":{"type":"boolean","description":"The project is matched to a LinkedIn job posting."},"filledCustomFields":{"$ref":"#/components/schemas/CustomFieldIdsExp"},"emptyCustomFields":{"$ref":"#/components/schemas/CustomFieldIdsExp"},"statusId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Status of the project. A parent status also matches projects carrying any of its children."},"id":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Jarvi identifier of the project, used in the public API and in app URLs."},"createdAt":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"Date the project was created. Data imports replace it with the creation date coming from the source ATS or CRM."},"externalId":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}}},"description":"Identifier of the project in the client's own system. Unique per group, and used as the matching key by imports and by the public API."},"referenceId":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}}},"description":"The project reference id is used to map external job applications on website or jobboard to the project."},"companyId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Client company the project is for. Optional — a project can exist without a company, and deleting the company clears the link rather than the project."},"auditLogs":{"type":"object","properties":{"createdAt":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"When the tracked change happened. This is the reference date for incremental synchronisation: fetching everything modified since a given date goes through this column."}}}}},"ProjectsSort":{"type":"object","description":"Allowed sort fields:\n- name — Title of the project — a job opening, a sales mission or a talent pool. Typed by the user, or taken from the LinkedIn recruiter project or Sales Navigator list name when the project comes from an import.\n- referenceId — The project reference id is used to map external job applications on website or jobboard to the project.\n- createdAt — Date the project was created. Data imports replace it with the creation date coming from the source ATS or CRM.\n- status.order — Position of the status in the group's list: statuses are displayed in ascending order.\n- company.name — Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger.\n- customFieldsValue. — Custom field value — suffix with the field UUID, e.g. \"customFieldsValue.\"\n- customFieldsNumericValue. — Numeric custom field value — suffix with the field UUID. Use for number and rating fields.","properties":{"field":{"type":"string","enum":["name","referenceId","createdAt","status.order","company.name"]},"order":{"type":"string","enum":["ASC","DESC"],"default":"DESC"}},"required":["field"],"x-sortFields":["name","referenceId","createdAt","status.order","company.name","customFieldsValue.","customFieldsNumericValue."]},"CompaniesFilters":{"type":"object","description":"Filters for companies. Combine them with _and, _or and _not. Every field listed here is index-backed. Other Hasura columns and relations are accepted too, but they are neither optimised nor guaranteed.","properties":{"_and":{"type":"array","items":{"$ref":"#/components/schemas/CompaniesFilters"}},"_or":{"type":"array","items":{"$ref":"#/components/schemas/CompaniesFilters"}},"_not":{"$ref":"#/components/schemas/CompaniesFilters"},"companySearch":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Searches company name and description, LinkedIn tagline and description, legal activity and NAF code, and custom fields — the target for keyword or industry searches."},"companyQuickSearch":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Searches company name, email and phone — for name lookups only."},"companies.global":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Company name and description."},"location":{"$ref":"#/components/schemas/LocationExp"},"customField":{"allOf":[{"$ref":"#/components/schemas/SearchExp"}],"description":"Value of a custom field. Target one field by suffixing its id, as in \"customField.\"."},"hasLinkedinCompanyId":{"type":"boolean","description":"The company is matched to a LinkedIn company page."},"hasContacts":{"type":"boolean","description":"The company has at least one profile associated as a contact."},"hasProject":{"type":"boolean","description":"The company has at least one project."},"isParentCompany":{"type":"boolean","description":"The company has at least one subsidiary."},"isSubsidiary":{"type":"boolean","description":"The company has a parent company."},"isProtected":{"type":"boolean","description":"The company is under protection, meaning its protection date is still in the future."},"statusId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Status of the company. A parent status also matches companies carrying any of its children."},"filledCustomFields":{"$ref":"#/components/schemas/CustomFieldIdsExp"},"emptyCustomFields":{"$ref":"#/components/schemas/CustomFieldIdsExp"},"id":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Jarvi identifier of the company, used in the public API and in app URLs."},"createdAt":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"Date the company record was created. Data imports replace it with the creation date coming from the source ATS or CRM."},"externalId":{"type":"object","properties":{"_eq":{"type":"string"},"_in":{"type":"array","items":{"type":"string"}}},"description":"Identifier of the company in the client's own system. Unique per group, and used as the matching key by imports and by the public API."},"linkedinCompanyId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}}},"description":"Link to the LinkedIn page data of this company. That data is shared across all groups, and a given LinkedIn page can be attached to at most one company per group."},"parentId":{"type":"object","properties":{"_eq":{"type":"string","format":"uuid"},"_in":{"type":"array","items":{"type":"string","format":"uuid"}},"_is_null":{"type":"boolean"}},"description":"Parent company when this record is a subsidiary. Used as a single level: searching on a parent can include its direct subsidiaries, but not their own."},"auditLogs":{"type":"object","properties":{"createdAt":{"type":"object","properties":{"_eq":{"type":"string","description":"ISO 8601 date"},"_gte":{"type":"string","description":"ISO 8601 date"},"_lte":{"type":"string","description":"ISO 8601 date"},"_is_null":{"type":"boolean"}},"description":"When the tracked change happened. This is the reference date for incremental synchronisation: fetching everything modified since a given date goes through this column."}}}}},"CompaniesSort":{"type":"object","description":"Allowed sort fields:\n- name — Name used for the company: the one entered by a user when there is one, otherwise the name coming from its LinkedIn page. Maintained by a trigger.\n- createdAt — Date the company record was created. Data imports replace it with the creation date coming from the source ATS or CRM.\n- status.order — Position of the status in the group's list: statuses are displayed in ascending order.\n- linkedinCompanyData.foundedAt — Year the company was founded, as published on its LinkedIn page. LinkedIn only gives the year, so the day and month fall back to January 1st — treat the day and month as meaningless.\n- linkedinCompanyData.linkedinEmployeeCount — How many LinkedIn members declare this company as their employer. A live headcount, which can be far above the size bracket the company declares.\n- linkedinCompanyData.linkedinEmployeeStartCount — Lower bound of the company size bracket declared on LinkedIn — 0, 2, 11, 51, 201, 501, 1001, 5001 or 10001 — paired with linkedinEmployeeEndCount (linkedin_employee_end_count). This is a declared size, not a headcount.\n- linkedinCompanyData.website — Company website, as published on its LinkedIn page.\n- legaldata.codenaf — French INSEE activity code (NAF/APE) of the company, for example \"58.29C\".\n- legaldata.codenafTitle — Readable label of the NAF/APE code, for example \"Édition de logiciels applicatifs\".\n- legaldata.activity — Declared corporate purpose (\"objet social\") of the company as filed with the French registry.\n- customFieldsValue. — Custom field value — suffix with the field UUID, e.g. \"customFieldsValue.\"\n- customFieldsNumericValue. — Numeric custom field value — suffix with the field UUID. Use for number and rating fields.","properties":{"field":{"type":"string","enum":["name","createdAt","status.order","linkedinCompanyData.foundedAt","linkedinCompanyData.linkedinEmployeeCount","linkedinCompanyData.linkedinEmployeeStartCount","linkedinCompanyData.website","legaldata.codenaf","legaldata.codenafTitle","legaldata.activity"]},"order":{"type":"string","enum":["ASC","DESC"],"default":"DESC"}},"required":["field"],"x-sortFields":["name","createdAt","status.order","linkedinCompanyData.foundedAt","linkedinCompanyData.linkedinEmployeeCount","linkedinCompanyData.linkedinEmployeeStartCount","linkedinCompanyData.website","legaldata.codenaf","legaldata.codenafTitle","legaldata.activity","customFieldsValue.","customFieldsNumericValue."]}}}}