Documentation Index
Fetch the complete documentation index at: https://api-docs.jarvi.tech/llms.txt
Use this file to discover all available pages before exploring further.
Hier is hoe je te werk moet gaan:
Mijn API-sleutels verkrijgen
Laat je inspireren door integratie-voorbeelden
Je bent zeker niet de eerste, wees gerust, en hieronder vind je waarschijnlijk voorbeelden van integraties
die vergelijkbaar zijn met wat je zoekt.
Hier is een voorbeeld van een integratie in WebFlow. Deze integratie werkt ook voor een klassieke website. document.querySelector('#form-submit-button').addEventListener('click', function() {
var formElement = document.querySelector('.inscription-candidat-form');
var formData = new FormData(formElement);
var formDataAsObject = {}
for (var [key, value] of formData.entries()) {
console.log(key, value);
formDataAsObject[key] = value
}
if(!formDataAsObject.linkedinUrl) console.error("linkedinUrl is mandatory");
const data = {
"referenceId":"PROJECT-REFERENCE-ID",
...formDataAsObject
}
console.log("data to send",data)
fetch('https://functions.prod.jarvi.tech/v1/public-api/rest/applicants', {
method: 'POST',
mode:'cors',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': 'JARVI_PRIVATE_API_KEY'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log("data sent",data))
.catch((error) => {
console.error('Error:', error);
});
});
Hier is een voorbeeld van een integratie in WebFlow. Deze integratie werkt ook voor een klassieke website.
// Vul deze constanten in met je eigen waarden
const FORM_SELECTOR = "#candidature-form";
const SUBMIT_BUTTON_SELECTOR = "#form-submit-button";
const RESUME_INPUT_NAME = "resumesFiles";
const PROJECT_REFERENCE_ID = "PROJECT-REFERENCE-ID";
const JARVI_PRIVATE_API_KEY = "YOUR JARVI PRIVATE API KEY";
// Hulpfunctie om bestand als base64 te lezen
const readFileAsBase64 = (file) => {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = (event) => resolve(event.target.result);
reader.onerror = (error) => reject(error);
reader.readAsDataURL(file);
});
};
// Hulpfunctie om formuliergegevens te valideren
const validateFormData = (formData) => {
if (!formData.linkedinUrl) {
throw new Error("LinkedIn URL is verplicht");
}
return true;
};
// Hoofdfunctie voor formulierindiening
document.querySelector(SUBMIT_BUTTON_SELECTOR).addEventListener("click", async function (event) {
event.preventDefault(); // Voorkom standaard formulierindiening
try {
const formElement = document.querySelector(FORM_SELECTOR);
if (!formElement) {
throw new Error("Formulierelement niet gevonden");
}
// Converteer FormData naar object
const formData = new FormData(formElement);
const formDataAsObject = Object.fromEntries(formData.entries());
// Valideer formuliergegevens
validateFormData(formDataAsObject);
// Haal bestand op en valideer
const fileInput = formElement.querySelector(`input[name="${RESUME_INPUT_NAME}"]`);
if (!fileInput) {
throw new Error("CV-invoerveld niet gevonden");
}
const file = fileInput.files[0];
if (!file) {
throw new Error("Geen bestand geüpload");
}
// Lees bestand en bereid gegevens voor
const base64Data = await readFileAsBase64(file);
const resumesFiles = [
{
fileName: file.name,
data: base64Data,
},
];
const data = {
referenceId: "PROJECT-REFERENCE-ID", // Update met je project referentie ID
...formDataAsObject,
resumesFiles,
};
console.log("Gegevens verzenden:", data);
// Stuur gegevens naar API
const response = await fetch("https://functions.prod.jarvi.tech/v1/public-api/rest/v2/applicants", {
method: "POST",
mode: "cors",
headers: {
"Content-Type": "application/json",
"X-Api-Key": JARVI_PRIVATE_API_KEY,
},
body: JSON.stringify(data),
});
if (!response.ok) {
throw new Error(`HTTP-fout! status: ${response.status}`);
}
const responseData = await response.json();
console.log("Gegevens succesvol verzonden:", responseData);
// Optioneel: Toon succesbericht aan gebruiker
alert("Sollicitatie succesvol ingediend!");
} catch (error) {
console.error("Fout:", error);
alert(`Fout: ${error.message}`);
}
});