Activateitems, DeActivateitems, Archiveitems, Deleteitems

Smartsite 8.0 - ...

Activateitems, DeActivateitems, Archiveitems, Deleteitems

Deze vier methods hebben in feite allemaal dezelfde implementatie binnen de WebAPI en ook de manier waarop ze kunnen worden aangeroepen vanuit C# of SXML is steeds hetzelfde, behalve dan de naam van de method.

Met behulp van de activateitems methode kunnen één of meerdere items geactiveerd worden. De methode deactivateitems zal juist de gespecificeerde items de-activeren (prepublished status). Items kunnen gearchiveerd worden door archiveitems te gebruiken. En tenslotte kunnen items verwijderd worden door deleteitems aan te roepen.

Hieronder wordt activateitems verder besproken, maar voor de andere methods geldt dus precies hetzelfde.

ActivateItems

Zoals bij de meeste methodes van de WebAPI, wordt ook hier de post data gebruikt om een xml payload mee te geven met "instructies". In dit geval één of meerdere itemnummer(s) binnen een itemnumbers element (komma gescheiden), waarbij de xml elementen geen namespace gebruiken. Optioneel kan ook met item codes worden gewerkt door middel van een itemcodes element in plaats van een itemnumbers element, met daarin uiteraard dan item codes (komma gescheiden).

Voordat de WebAPI de item(s) zal activeren, worden de nodige checks uitgevoerd voor ieder item vergelijkbaar met de checks die plaatsvinden als dezelfde actie binnen de manager zelf zou worden uitgevoerd. Dit betreft, voor elk item:

  • Controle op content access.
  • Controle op item locks.
  • Controle op workflow assignments.
  • Controle op workflow status.
  • Controle op item afhankelijkheden (indien van toepassing, met name voor deleteitems actie).

Indien één van de items niet voldoet aan de controles, wordt de gehele activateitems operatie niet uitgevoerd.

C# voorbeeld

using (HttpClient client = new HttpClient())
{
// set Authorization header
client.DefaultRequestHeaders.Authorization =
new System.Net.Http.Headers.AuthenticationHeaderValue("Basic",
Convert.ToBase64String(Encoding.ASCII.GetBytes($"{options.Username}:{options.Password}"))
);

// xml payload, no namespace, just specifify itemnumbers child-node containing one or more itemnumber(s)
XElement data = new XElement("data",
new XElement("itemnumbers", "102196,102213")
);
var httpContent = new StringContent(data.ToString());
var response = await client.PostAsync($"{options.Url}/activateitems", httpContent);
return response.IsSuccessStatusCode;
}