Rest API

1. AuthToken

  • URL: “/RestApi/AuthToken? Username=<username>&password=<password>”
  • Méthode: GET
  • URL Params:
      • nom d’utilisateur [string] [Requis]= le nom utilisateur de Cirrus Shield
      • mot de passe [string] [Requis]= le mot de passe de l’utilisateur Cirrus Shield
  • Réponse de succès:
    • Status Code=200 (OK)
    • Returned Data [string]= the authentication token
  • Réponse d’Erreur:
    Status Code=404 (Not Found) (au cas où l’utilisateur n’a pas été trouvé)

2. Describe

  • URL: « /RestApi/Describe/<objectName>?authToken=<authToken> »
  • Méthode: GET
  • URL Params:
    • Nom de l’objet [string] [Requis]= Le nom de l’objet que l’utilisateur veut décrire
    • authToken [string] [Requis]= le token authentification Example of returned
  • Réponse de succès:
    • Status Code=200 (OK)
    • Returned Data [in XML or JSON]= une description détaillée de l’objet (nom, étiquette, étiquette au pluriel, champs, …)
  • Réponse d’Erreur:
    • Status Code=401 (Non authorisée) (au cas d’une fausse token authentification)
      Ou
      Status Code=400 (Mauvaise Demande) (au cas d’un objet de paramètre vide)

Exemple de données retournées (dans le format in)  (Nom de l’objet=”Compte”):

<?xml version= »1.0″?>
<ObjectDescriptor>

  <APIName>Account</APIName>
  <Fields>

<FieldDescriptor>

<ClrValIfLkUpDel>false</ClrValIfLkUpDel>
<DataType>Text</DataType>
<DecimalPlaces i:nil= »true »/>
<DefaultValue/>
<DisplayFormat/>
<IsAlphabeticallySorted>false</IsAlphabeticallySorted>
<IsCaseSensitive>false</IsCaseSensitive>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<IsRequired>true</IsRequired>
<IsUnique>true</IsUnique>
<Label>Id</Label>
<Length i:nil= »true »/><Name>Id</Name>
<PicklistValues i:nil= »true »/>
<Prefix/>
<RelatedToObject i:nil= »true »/>
<RelationshipName/>
<StartingNumber i:nil= »true »/>
<Suffix/>
<VisibleLinesNb i:nil= »true »/>

</FieldDescriptor>
<FieldDescriptor>

<ClrValIfLkUpDel>false</ClrValIfLkUpDel>
<DataType>Text</DataType>
<DecimalPlaces i:nil= »true »/>
<DefaultValue/>
<DisplayFormat/>
<IsAlphabeticallySorted>false</IsAlphabeticallySorted>
<IsCaseSensitive>false</IsCaseSensitive>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>true</IsEditable>
<IsRequired>true</IsRequired>
<IsUnique>false</IsUnique>
<Label>Name</Label>
<Length i:nil= »true »/>
<Name>Name</Name>
<PicklistValues i:nil= »true »/>
<Prefix/>
<RelatedToObject i:nil= »true »/>
<RelationshipName/>
<StartingNumber i:nil= »true »/>
<Suffix/>
<VisibleLinesNb i:nil= »true »/>

</FieldDescriptor>
<FieldDescriptor>

<ClrValIfLkUpDel>false</ClrValIfLkUpDel>
<DataType>LookupRelationship</DataType>
<DecimalPlaces i:nil= »true »/>
<DefaultValue/>
<DisplayFormat/>
<IsAlphabeticallySorted>false</IsAlphabeticallySorted>
<IsCaseSensitive>false</IsCaseSensitive>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>true</IsEditable>
<IsRequired>true</IsRequired>
<IsUnique>false</IsUnique>
<Label>Owner</Label>
<Length i:nil= »true »/>
<Name>OwnerId</Name>
<PicklistValues i:nil= »true »/>
 <Prefix/>
<RelatedToObject i:nil= »true »/>
<RelationshipName>Account1</RelationshipName>
<StartingNumber i:nil= »true »/>
<Suffix/>
<VisibleLinesNb i:nil= »true »/>

</FieldDescriptor>
<FieldDescriptor>

<ClrValIfLkUpDel>false</ClrValIfLkUpDel>
<DataType>LookupRelationship</DataType>
<DecimalPlaces i:nil= »true »/>
<DefaultValue/>
<DisplayFormat/>
<IsAlphabeticallySorted>false</IsAlphabeticallySorted>
<IsCaseSensitive>false</IsCaseSensitive>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<IsRequired>true</IsRequired>
<IsUnique>false</IsUnique>
<Label>Created By</Label>
<Length i:nil= »true »/>
<Name>CreatedById</Name>
<PicklistValues i:nil= »true »/>
<Prefix/>
<RelatedToObject i:nil= »true »/>
<RelationshipName>Account2</RelationshipName>
<StartingNumber i:nil= »true »/>
<Suffix/>
<VisibleLinesNb i:nil= »true »/>

</FieldDescriptor>
<FieldDescriptor>

<ClrValIfLkUpDel>false</ClrValIfLkUpDel>
<DataType>DateTime</DataType>
<DecimalPlaces i:nil= »true »/>
<DefaultValue/>
<DisplayFormat/>
<IsAlphabeticallySorted>false</IsAlphabeticallySorted>
<IsCaseSensitive>false</IsCaseSensitive>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<IsRequired>true</IsRequired>
<IsUnique>false</IsUnique>
<Label>Creation Date</Label>
<Length i:nil= »true »/>
<Name>CreationDate</Name>
<PicklistValues i:nil= »true »/>
<Prefix/>
<RelatedToObject i:nil= »true »/>
<RelationshipName/>
<StartingNumber i:nil= »true »/>
<Suffix/>
<VisibleLinesNb i:nil= »true »/>

</FieldDescriptor>
<FieldDescriptor>

<ClrValIfLkUpDel>false</ClrValIfLkUpDel>
<DataType>LookupRelationship</DataType>
<DecimalPlaces i:nil= »true »/>
<DefaultValue/>
<DisplayFormat/>
<IsAlphabeticallySorted>false</IsAlphabeticallySorted>
<IsCaseSensitive>false</IsCaseSensitive>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<IsRequired>true</IsRequired>
<IsUnique>false</IsUnique>
<Label>Modified By</Label>
<Length i:nil= »true »/>
<Name>ModifiedById</Name>
<PicklistValues i:nil= »true »/>
<Prefix/>
<RelatedToObject i:nil= »true »/>
<RelationshipName>Account3</RelationshipName>
<StartingNumber i:nil= »true »/>
<Suffix/>
<VisibleLinesNb i:nil= »true »/>

</FieldDescriptor>
<FieldDescriptor>

<ClrValIfLkUpDel>false</ClrValIfLkUpDel>
<DataType>DateTime</DataType>
<DecimalPlaces i:nil= »true »/>
<DefaultValue/>
<DisplayFormat/>
<IsAlphabeticallySorted>false</IsAlphabeticallySorted>
<IsCaseSensitive>false</IsCaseSensitive>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<IsRequired>true</IsRequired>
<IsUnique>false</IsUnique>
<Label>Modification Date</Label>
<Length i:nil= »true »/>
<Name>ModificationDate</Name>
<PicklistValues i:nil= »true »/>
<Prefix/>
<RelatedToObject i:nil= »true »/>
<RelationshipName/>
<StartingNumber i:nil= »true »/>
<Suffix/>
<VisibleLinesNb i:nil= »true »/>

</FieldDescriptor>
<FieldDescriptor>

<ClrValIfLkUpDel>false</ClrValIfLkUpDel>
<DataType>Checkbox</DataType>
<DecimalPlaces i:nil= »true »/>
<DefaultValue/>
<DisplayFormat/>
<IsAlphabeticallySorted>false</IsAlphabeticallySorted>
<IsCaseSensitive>false</IsCaseSensitive>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<IsRequired>true</IsRequired>
<IsUnique>false</IsUnique>
<Label>Is Deleted</Label>
<Length i:nil= »true »/>
<Name>IsDeleted</Name>
<PicklistValues i:nil= »true »/>
<Prefix/>
<RelatedToObject i:nil= »true »/>
<RelationshipName/>
<StartingNumber i:nil= »true »/>
<Suffix/>
<VisibleLinesNb i:nil= »true »/>

</FieldDescriptor>

</Fields>
<Icon/>
<IsCustom>true</IsCustom>
<IsDeletable>true</IsDeletable>
<IsEditable>true</IsEditable>
<Label>Account</Label>
<PluralLabel>Accounts</PluralLabel>

</ObjectDescriptor>
 

3. Describe All

  • URL: « /RestApi/DescribeAll?authToken=<authToken> »
  • Méthode: GET
  • URL Params:
    • authToken [string] [Requis]=the authentication token
  • Réponse de succès:
    • Status Code=200 (OK)
    • Donnée retournée [in XML or JSON]= une liste de tous les objtes de l’utilisateur de l’environnement
  • Réponse d’Erreur:
    Status Code=401 (Non authorisé) (au cas où il ya une fausse token authentification)

Example of returned data (in xml format):

<?xml version= »1.0″?>
<ArrayOfObjectDescriptor>

<ObjectDescriptor>

<APIName>Organization</APIName>
<Fields i:nil= »true »/><Icon/>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>true</IsEditable>
<Label>Organization</Label>
<PluralLabel>Organizations</PluralLabel>

</ObjectDescriptor>
<ObjectDescriptor>

<APIName>UserPosition</APIName>
<Fields i:nil= »true »/>
<Icon/>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<Label>Position</Label>
<PluralLabel>Positions</PluralLabel>

</ObjectDescriptor>
<ObjectDescriptor>

<APIName>Profile</APIName>
<Fields i:nil= »true »/>
<Icon/>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<Label>Profile</Label>
<PluralLabel>Profiles</PluralLabel>

</ObjectDescriptor>
<ObjectDescriptor>

<APIName>License</APIName>
<Fields i:nil= »true »/>
<Icon/>
<IsCustom>false</IsCustom>
<IsDeletable>true</IsDeletable>
<IsEditable>true</IsEditable>
<Label>License</Label>
<PluralLabel>Licenses</PluralLabel>

</ObjectDescriptor>
<ObjectDescriptor>

<APIName>LoginHistory</APIName>
<Fields i:nil= »true »/>
<Icon/>
<IsCustom>false</IsCustom>
<IsDeletable>false</IsDeletable>
<IsEditable>false</IsEditable>
<Label>Login History</Label>
<PluralLabel>Login History</PluralLabel>

</ObjectDescriptor>
<ObjectDescriptor>

<APIName>Account</APIName>
<Fields i:nil= »true »/>
<Icon/>
<IsCustom>true</IsCustom>
<IsDeletable>true</IsDeletable>
<IsEditable>true</IsEditable>
<Label>Account</Label>
<PluralLabel>Accounts</PluralLabel>

</ObjectDescriptor>

</ArrayOfObjectDescriptor>

4. Requete

  • URL: « /RestApi/Query?authToken=<authToken>&selectQuery=<selectQuery> »
  • Méthode: GET
  • URL Params:
    • authToken [string] [Requis]=le authentication token
    • selectQuery [string] [Requis]=la requete sélectionnée. Example: “SELECTIONNER Nom DU Compte OU Id=1329023730348722379”.
  • Réponse de succès:
    • Status Code=200 (OK)
    • Donnée Retournée [dans XML ou JSON]= une liste des enregistrements sélectionnés

Example of returned data (in xml format):

 <Data>

<Account>

<Name>
Account Test 1
</Name>
<Address>
Address Test 1
</Address>

</Account>
<Account>

<Name>
Account Test 2
</Name>
<Address>
Address Test 2
</Address>

</Account>

 </Data>

  • Error Response:
    • Status Code=401 (Non authorisé) (au cas d’une fausse authentication token)
      Or
    • Status Code=400 (Mauvaise Demande) (au cas où l’opération « quering data à échouée)

5. Action de donnée

  • URL: « /RestApi/DataAction/<objectName>?authToken=<authToken>&action=<action>&matchingFieldName=<matchingFieldName> »
  • Méthode: POST
  • URL Params:
    • Nom de l’objet [string] [Requis]= le nom de l’objet dans lequel l’utilisateur veut insérer/mettre à jour/supprimer des enregistrements
    • authToken [string] [Requis]= l’authentication token
    • action [string] [Requis]= l’action dans laquelle l’utilisateur veut appliquer (insérer, mettre à jour ou supprimer)
    • matchingFieldName [string] [Requis]= le nom du champ qui est considéré comme champ unique dans l’enregistrement envoyé
  • Data Params:
    xmlData [XML]= les données des enregistrements à insérer/mettre à jour/supprimer

Example:

<Data>

<Account>

<Name>
Account Test 1
</Name>
<Address>
Address Test 1
</Address>

</Account>
<Account>

<Name>
Account Test 2
</Name>
<Address>
Address Test 2
</Address>

</Account>

</Data>

Lors de l’envoi des paramétrages de données à partir d’une page php et ayant un champ de type Date/Heure, il faut mettre cette fonction : urlencode () afin de ne pas perdre le signe « + »  sur le serveur et pour être enregistré correctement dans la base de données.

If the function is not used, the value will saved without the “+” sign like this « 2017-06-12 15:40: 47 02  » instead of « 2017-06-12 15:40: 47+02 « .

Si la fonction n’est pas utilisée, la valeur sera enregistrée sans le signe « + » comme ici :
« 2017-06-12 15:40: 47 02  » au lieu de « 2017-06-12 15:40: 47+02 « .

Exemple d’utilisation du urlencode() :

$ xmlData = urlencode (

« <Data> »
« <Campaign> »
« <Name> Campagne-« . $ CampaignID. « </Name> »
« <Campaign_ID> ». $ CampaignID. « </Campaign_ID> »
« <TestDateTime> » »2017-06-12 15: 40: 47 + 02″. »</TestDateTime> »
« <OwnerId> ».$ OwnerID. « </OwnerId> »
« </Campaign> »
« </Data> »
);

  • Réponse de succès:
    • Status Code=200 (OK)
    • Returned Data [in XML or JSON]= une liste des enregistrements de données envoyés dans le corps HTTP Post Request avec 2 champs supplémentaires pour chaque enregistrement (1- Succès : pour indiquer si l’opération (insertion/mise à jour/upsert/suppression) appliqué sur l’enregistrement correspondant a réussi ou pas), 2- ErrorMessage : pour indiquer quelle est l’erreur qui a provoqué l’échec de l’opération appliquée sur cet enregistrement (au cas où l’opération a échoué)).

Example of returned data:

<Data>

<Account>

<Name>
Account Test 1
</Name>
<Address>
Address Test 1
</Address>
<Success>
FALSE
</Success>
<ErrorMessage>
Some of the Lookup Fields contain invalid values
</ErrorMessage>

</Account>
<Account>

<Name>
Account Test 2
</Name>
<Address>
Address Test 2
</Address>
<Success >
TRUE
</Success>
<ErrorMessage />

</Account>

</Data>

  • Error Response:
    • Status Code=401 (Non authorisé) (en cas d’une fausse authentication token)
      Ou
    • Status Code=400 (Mauvaise Demande) (au cas où aucun nom d’objet n’a été spécifié ou aucune action n’a été spécifiée ou il y a une erreur dans les enregistrements de données xml envoyés dans le corps de la demande de publication HTTP ou si un enregistrement ou plus n’a pas pu être inséré/ mis à jour/ supprimé)

6. Upload File

  • URL: « /RestApi/UploadFile»
  • Méthode: POST
  • URL Params:
    • authToken [string] [Requis]= l’authentication token
    • fileName [string] [Requis]= le nom du fichier que l’utilisateur veut importer
    • objectName [string] [Requis]= le nom de l’enregistrement de l’objet dans lequel l’utilisateur veut importer des fichiers
    • fieldName [string] [Requis]= le nom API du champ dans lequel le fichier sera imorté
    • RecGUID [long] [Requis]= l’Id de l’enregistrement dans Cirrus Shield dans lequel le fichier sera importé
  • Data Params:
    dataStream = les données du fichier importé

Example:

// Get file name
$fileName = $_FILES[‘file_upl’][‘name’];

// Get file content
$data = file_get_contents($_FILES[‘file_upl’][‘tmp_name’]);

// Transform file content to json array
$array = array();
foreach(str_split($data) as $char){

array_push($array, ord($char));

}

// Send the Data Params
curl_setopt($client, CURLOPT_POSTFIELDS, « = ».json_encode($array));

<form name= »file_up » action= »UploadFile.php » method= »POST » enctype= »multipart/form-data »>

Upload your file here
<input type= »file » name= »file_upl » id= »file_upl »/>
<input type= »submit » name= »action » value= »submit »/>

</form>

  • Réponse de succès:
      • Status Code=200 (OK)
  • Réponse d’Erreur:
    Status Code=400 (Mauvaise Demande) (en cas d’erreur dans les données JSON envoyées dans le corps de la requête HTTP Post ou si le nom de l’objet, le nom du champ API dans l’objet ou l’Id d’enregistrement sont incorrects)

Articles

Cet article vous a-t-il été utile ? Oui Non

Comment pouvons-nous aider ?