Het wijzigen van gegevens gebeurt op min of meer dezelfde manier als het aanmaken van een gegeven.


Echter moet je bij wijzigingen steeds de volledige URI van het gegeven dat je wil wijzigen meegeven (dus inclusief ID). Zo geeft je bijvoorbeeld https://eenvoudigfactureren.be/api/v1/invoices/1001 door om factuur met ID 1001 te wijzigen.


De gebruikte methode (POST of PUT) heeft een grote invloed op hoe de gegevens worden gewijzigd.


De methode POST gebruik je om slechts een gedeelte van de bestaande gegevens te wijzigen. Zo kan je bijvoorbeeld enkel de omschrijving van een factuur-item meegeven en zullen andere velden zoals het bedrag ongewijzigd blijven.


Bij gebruik van de methode PUT moet je steeds alle gegevens meegeven. Niet meegegeven gegevens zullen worden verwijderd.


Als je  XML of JSON als formaat gebruikt is het belangrijk om de ID van onderliggende elementen mee te geven (zowel bij POST als bij PUT). Geef je een onderliggend element mee zonder ID dan wordt verondersteld dat je dit gegeven wil aanmaken.


Gebruik je de methode PUT en wens je bijvoorbeeld enkele details van een factuur te wijzigen maar daarnaast ook alle betalingen van de factuur te verwijderen dan moet je in de factuur een leeg blok (XML) of lege array (JSON) voor ‘payments’ meegeven. Geef je geen ‘payments’-blok of array mee dan worden er ook geen ‘payments’ verwijderd. Dus bij het meegeven van een leeg blok of lege array worden de gegevens uit deze blok/array verwijderd. Anders worden ze ongemoeid gelaten.


Een voorbeeld in PHP hoe je een item van een factuur kan wijzigen (methode PUT):

$item = "<item><description>bestelling van 1/4/2012</description><amount_with_tax>25</amount_with_tax><tax_rate>21</tax_rate></item>";
 
$p = curl_init('https://eenvoudigfactureren.be/api/v1/invoices/1001/items/2893');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "X-API-Key: your_api_key_here",
    "Content-Type: text/xml",
    "Accept: text/xml"
]);
curl_setopt($p, CURLOPT_POSTFIELDS, $item);
curl_setopt($p, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($p, CURLOPT_RETURNTRANSFER, true);
$result_in_xml_string = curl_exec($p);
  Meer info over de API? Lees onderstaande nuttige artikels