Removing Data

To ensure compliance we have provided :

1. Rich data extraction facilities for you to supply your customers with data that you hold about them
2. The ability to remove data records from the system in their entirety

This second facility is provided with the 'Purge' functionality which works by you specifying the object types and Id lists you wish to remove and the system will work through that list in the background - removing all related media and job records.

The ShredFormData() method mirrors the "Shred" option in the website. All data for the specified form marked as "downloaded" are deleted. Data can only be deleted if marked as downloaded. Data can be marked as downloaded by downloading through the website (with the "mark as downloaded" checkbox ticked), or by retrieving through the API (with the mark as downloaded parameter set to
true). Be aware do not use this for GDPR compliance as it will *intentionally* not remove media or related job data. 

The media is left so that any hotlinks that you may have distributed to customers continues to work and with regard to Jobs - you still have  an audit trial of each individual job - but no longer the captured data.

If neither of these repositories of data contain anything personal - then using this simple 'Shred' option may be a simpler alternative and will still keep you GDPR compliant. 

Using Purge

wmBAPILive.WMCrendential wmc = wmiLive.WMAuthorisation(EmailAddress, Password);
wmBAPILive.BOPurgeHeader ph = new wmBAPILive.BOPurgeHeader();
wmBAPILive.Purge[] ListPurgeData = new wmBAPILive.Purge[2]; //max 1000
wmBAPILive.Purge p1 = new wmBAPILive.Purge();
p1.JobId = int.Parse(txtJobId.Text);
p1.CustomerId = wmc.CustomerId;
p1.FormId = int.Parse(txtFormId.Text);
p1.LoginId = wmc.LoginId;

ListPurgeData[0] = p1;

wmBAPILive.Purge p2 = new wmBAPILive.Purge();
p2.CustomerId = wmc.CustomerId;
p2.FormId = int.Parse(txtFormId.Text);
p2.LoginId = wmc.LoginId;
//add to array
ListPurgeData[1] = p2;

//update purger header array with ListPurgeData
ph.ListPurgeData = ListPurgeData;

//send to API and get a handle to the submitted job
int purgeheaderid = wmiLive.Add(ph, wmc); 

The actual purge work is done in the background removing all related records, media, unseen links and versions of records that may in existence. For this reason, this call is asynchronous and will return before the data is removed

It is possible to check on the progress of the purge by retrieving by purgeheaderid as  you would for the simple entities listed in previous sections.

You will see the following exposed properties

        Complete : boolean : int
        Numberofrowstodelete  :int
        Numberofrowscurrently : int
        ErrorStatusboolean: boolean

These properties may be inspected to monitor progress and also to ascertain if an error has occurred.


Using Shred


BOUserForm form = new BOUserForm();
form.UserFormId = REQUIRED_FORM_ID;
form.UserId = credentials.CustomerId;
service.ShredFormData(form, credentials);


BOUserForm form = new BOUserForm();
service.shredFormData(form, credentials);