This API endpoint can be used to get all campaign-level information on Awareness Training Mime|OS Phishing Campaigns created, both pending and launched. (Data displayed on Phishing > Campaigns)
Pre-requisites
In order to successfully use this endpoint the logged in user must be a Mimecast administrator with at least the Awareness Training | Dashboard | Read permission.
Information about the sender address specified for the phishing campaign.
group
Group Object
Information about the group that was select when creating the phishing campaign.
launchDate
Date String
Timestamp of the phishing campaign launch in ISO 8601 format.
locale
String
Template language used by the phishing campaign in ISO 3166-1 alpha-2 format (e.g. n, es, zh, fr, de, ja, it, ru, pt, nl, hi, ko, cs, pl, ar, tr).
timeSlotSelected
String
Window in which the campaign was configured to be sent, by GMT Timezone. Possible values are TZ1, TZ2, TZ3 or TZ4.
numSubmitted
Number
Count of users that have submitted a response to the phishing message.
numOpened
Number
Count of users that have opened the phishing message.
numClicked
Number
Count of users that clicked the phishing link within the message.
numSent
Number
Count of the users that have been sent the phishing message.
Phishing Campaign Template Object
Field
Type
Description
displayTitle
String
Title of the phishing template.
id
String
The Mimecast secure ID of the phishing template.
Sender Object
Field
Type
Description
name
String
Display name of the phishing message sender.
email
String
Email address of the phishing message sneder.
Group Object
Field
Type
Description
folders
Array of Group Objects
Child groups of the current group level.
userCount
Number
Count of users in the current group.
description
String
Name of the current group.
id
String
The Mimecast secure ID of the current group.
source
String
Creation source of the current group. Possible values are cloud or ldap.
folderCount
Number
Count of the number of child-groups.
parentId
String
The Mimecast secure ID of the parent level group.
Sample Code
Sample code is provided to demonstrate how to use the API and is not representative of a production application. To use the sample code; complete the required variables as described, populate the desired values in the request body, and execute in your favorite IDE. Please see the Global Base URL's page to find the correct base URL to use for your account.
POST {base_url}/api/awareness-training/company/get-performance-details
Authorization: MC {accesskKey}:{Base64 encoded signed Data To Sign}
x-mc-date: {dateTime}
x-mc-req-id: {unique id}
x-mc-app-id: {applicationId}
Content-Type: application/json
Accept: application/json
{
"data":[
{
"id": "String"
}
]
}
import base64
import hashlib
import hmac
import uuid
import datetime
import requests
# Setup required variables
base_url = "https://xx-api.mimecast.com"
uri = "/api/awareness-training/company/get-performance-details"
url = base_url + uri
access_key = "YOUR ACCESS KEY"
secret_key = "YOUR SECRET KEY"
app_id = "YOUR APPLICATION ID"
app_key = "YOUR APPLICATION KEY"
# Generate request header values
request_id = str(uuid.uuid4())
hdr_date = datetime.datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S") + " UTC"
# DataToSign is used in hmac_sha1
dataToSign = ':'.join([hdr_date, request_id, uri, app_key])
# Create the HMAC SHA1 of the Base64 decoded secret key for the Authorization header
hmac_sha1 = hmac.new(base64.b64decode(secret_key), dataToSign.encode(), digestmod=hashlib.sha1).digest()
# Use the HMAC SHA1 value to sign the hdrDate + ":" requestId + ":" + URI + ":" + appkey
sig = base64.b64encode(hmac_sha1).rstrip()
# Create request headers
headers = {
'Authorization': 'MC ' + access_key + ':' + sig.decode(),
'x-mc-app-id': app_id,
'x-mc-date': hdr_date,
'x-mc-req-id': request_id,
'Content-Type': 'application/json'
}
payload = {
'data': [
{
"id": "String"
}
]
}
r = requests.post(url=url, headers=headers, data=str(payload))
print(r.text)
static void Main(string[] args)
{
//Setup required variables
string baseUrl = "https://xx-api.mimecast.com";
string uri = "/api/awareness-training/company/get-performance-details";
string accessKey = "YOUR ACCESS KEY";
string secretKey = "YOUR SECRET KEY";
string appId = "YOUR APPLICATION ID";
string appKey = "YOUR APPLICATION KEY";
//Generate request header values
string hdrDate = System.DateTime.Now.ToUniversalTime().ToString("R");
string requestId = System.Guid.NewGuid().ToString();
//Create the HMAC SHA1 of the Base64 decoded secret key for the Authorization header
System.Security.Cryptography.HMAC h = new System.Security.Cryptography.HMACSHA1(System.Convert.FromBase64String(secretKey));
//Use the HMAC SHA1 value to sign the hdrDate + ":" requestId + ":" + URI + ":" + appkey
byte[] hash = h.ComputeHash(System.Text.Encoding.Default.GetBytes(hdrDate + ":" + requestId + ":" + uri + ":" + appKey));
//Build the signature to be included in the Authorization header in your request
string signature = "MC " + accessKey + ":" + System.Convert.ToBase64String(hash);
//Build Request
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(baseUrl + uri);
request.Method = "POST";
request.ContentType = "application/json";
//Add Headers
request.Headers[System.Net.HttpRequestHeader.Authorization] = signature;
request.Headers.Add("x-mc-date", hdrDate);
request.Headers.Add("x-mc-req-id", requestId);
request.Headers.Add("x-mc-app-id", appId);
//Add request body
//Create and write data to stream
string postData = @"{
""data"": [
{
""id"": ""String""
}
]
}";
byte[] payload = System.Text.Encoding.UTF8.GetBytes(postData);
System.IO.Stream stream = request.GetRequestStream();
stream.Write(payload, 0, payload.Length);
stream.Close();
//Send Request
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
//Output response to console
System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream());
string responseBody = "";
string temp = null;
while ((temp = reader.ReadLine()) != null)
{
responseBody += temp;
};
System.Console.WriteLine(responseBody);
System.Console.ReadLine();
}