Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
353a378
feat: server side PDF engine
Zacgoose Sep 5, 2026
c5c06d9
refactor(reports): consolidate the server-side PDF pipeline
Zacgoose Sep 6, 2026
cb49474
feat(reports): draw the branding logo, share the report getters, tidy…
Zacgoose Sep 6, 2026
f9d4554
feat(reports): accept every image format the engine draws, at upload …
Zacgoose Sep 6, 2026
2da373e
refactor(reports): render the branding preview server-side and retire…
Zacgoose Sep 6, 2026
94c2e96
fix(reports): draw the watermark at 72pt instead of 0.08pt
Zacgoose Sep 6, 2026
03926d0
feat(tables): brand the PDF export with the report theme and any logo…
Zacgoose Sep 6, 2026
0991e79
Update openapi.json
Zacgoose Sep 6, 2026
dac04fa
down sample images
Zacgoose Sep 6, 2026
5364c75
feat(baselines): render the What-If report server-side
Zacgoose Sep 6, 2026
be1caa6
fix(reports): draw the watermark over the page content
Zacgoose Sep 6, 2026
539a5b5
feat(report-builder): offer every engine block, picked by category
Zacgoose Sep 6, 2026
a791359
feat(reports): let branding choose how the tenant is named
Zacgoose Sep 6, 2026
9536182
feat(report-builder): cover block, live callout grid layout, Infograp…
Zacgoose Sep 6, 2026
0b2ca56
feat(branding): name uploaded covers and offer them for Infographic p…
Zacgoose Sep 6, 2026
91c69a0
feat(report-builder): data tokens read from the reporting database
Zacgoose Sep 6, 2026
e0288cd
feat(report-builder): pick chart and table data from the reporting da…
Zacgoose Sep 6, 2026
cacacaa
fix(report-builder): return resolved blocks unrolled, and let a chart…
Zacgoose Sep 6, 2026
88f7ffb
feat(report-builder): choose Manual or Reporting database as a chart'…
Zacgoose Sep 6, 2026
b992fae
fix(reports): close the donut chart's frame up around the ring and it…
Zacgoose Sep 6, 2026
91c997b
fix(reports): centre chart legends and give the donut's legend room u…
Zacgoose Sep 6, 2026
f00ed37
fix(reporting): adapt to officeimo 3.4 api
Zacgoose Sep 7, 2026
ff878b7
build(reporting): pin OfficeIMO.Pdf to released 3.4.1, drop vendored …
Zacgoose Sep 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
217 changes: 217 additions & 0 deletions backend/Config/ReportSamples/bec.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
{
"userData": {
"displayName": "Sample User",
"userPrincipalName": "sample.user@example.com"
},
"becData": {
"ExtractedAt": "2026-08-05T09:00:00Z",
"ExtractResult": "Successfully extracted logs from auditlog",
"AnalysisWindowDays": 7,
"NewRules": [
{
"Name": "Sample forwarding rule",
"Description": "Move messages from billing@example.com to folder RSS Feeds",
"MoveToFolder": "RSS Feeds",
"RecentlyChanged": true
}
],
"InboxRuleChanges": [
{
"Operation": "New-InboxRule",
"UserKey": "sample.user@example.com",
"RuleName": "Sample forwarding rule",
"Parameters": "MoveToFolder=RSS Feeds; MarkAsRead=True",
"Date": "2026-08-03T11:24:00Z",
"ClientIP": "203.0.113.10",
"Country": "NG",
"City": "Lagos",
"ForeignLocation": true
}
],
"NewUsers": [
{
"displayName": "Sample Contractor",
"userPrincipalName": "sample.contractor@example.com",
"createdDateTime": "2026-08-02T08:00:00Z"
}
],
"AddedApps": [
{
"displayName": "Sample OAuth app",
"appId": "00000000-0000-0000-0000-000000000001",
"publisher": "Sample Publisher",
"createdDateTime": "2026-08-01T10:00:00Z",
"MaliciousMatch": null
}
],
"MaliciousSPs": [
{
"displayName": "Sample Mail Sync Tool",
"appId": "00000000-0000-0000-0000-000000000002",
"accountEnabled": true,
"createdDateTime": "2026-07-30T09:30:00Z",
"CatalogName": "Sample Mail Sync Tool",
"Categories": [
"Mailbox exfiltration",
"Business Email Compromise"
],
"Description": "Sample catalog entry used for preview data."
}
],
"MailboxPermissionChanges": [
{
"Operation": "Add-MailboxPermission",
"UserKey": "admin@example.com",
"ObjectId": "sample.user@example.com",
"Permissions": "FullAccess",
"TargetsSuspect": true
}
],
"SentMessages": [
{
"MessageTraceId": "00000000-0000-0000-0000-000000000003",
"Status": "Delivered",
"Subject": "Sample invoice",
"RecipientAddress": "supplier@example.net",
"Received": "2026-08-04 15:02:11Z",
"FromIP": "203.0.113.10",
"Country": "NG",
"City": "Lagos",
"ForeignLocation": true
}
],
"SentMessageAnalysis": {
"TotalMessages": 47,
"TotalRecipients": 212,
"RepeatedSubjects": [
{
"Subject": "Sample invoice",
"MessageCount": 38,
"RecipientCount": 190,
"FirstSent": "2026-08-04 14:55:00Z",
"LastSent": "2026-08-04 15:20:00Z",
"Flagged": true
}
],
"FlaggedSubjectCount": 1,
"Bursts": [
{
"WindowStart": "2026-08-04 15:00:00Z",
"WindowMinutes": 10,
"MessageCount": 31,
"RecipientCount": 160,
"TopSubject": "Sample invoice"
}
],
"Flagged": true
},
"MFADevices": [
{
"@odata.type": "#microsoft.graph.microsoftAuthenticatorAuthenticationMethod",
"displayName": "Sample phone",
"createdDateTime": "2026-08-03T12:00:00Z"
}
],
"ChangedPasswords": [
{
"displayName": "Sample User",
"userPrincipalName": "sample.user@example.com",
"lastPasswordChangeDateTime": "2026-08-03T12:05:00Z"
}
],
"TrustedSenders": [
"trusted@example.net",
"example-partner.com"
],
"BlockedSenders": [
"security-alerts@example.org"
],
"SafelistChanges": [
{
"Operation": "Set-MailboxJunkEmailConfiguration",
"UserKey": "sample.user@example.com",
"Date": "2026-08-03T11:30:00Z",
"ClientIP": "203.0.113.10",
"Country": "NG",
"City": "Lagos",
"ForeignLocation": true,
"Trusted": [
"attacker-domain.example"
],
"Blocked": null
}
],
"SharingChanges": [
{
"Operation": "AnonymousLinkCreated",
"UserKey": "sample.user@example.com",
"Date": "2026-08-04T10:15:00Z",
"Workload": "OneDrive",
"FileName": "Payroll Q3.xlsx",
"ItemUrl": "https://example-my.sharepoint.com/personal/sample_user/Documents/Payroll Q3.xlsx",
"Target": null,
"TargetType": null,
"ClientIP": "203.0.113.10",
"Country": "NG",
"City": "Lagos",
"ForeignLocation": true
}
],
"IntuneDevices": [
{
"id": "00000000-0000-0000-0000-000000000004",
"deviceName": "SAMPLE-VM01",
"operatingSystem": "Windows",
"osVersion": "10.0.26100",
"complianceState": "noncompliant",
"enrolledDateTime": "2026-08-03T13:00:00Z",
"lastSyncDateTime": "2026-08-05T08:00:00Z",
"deviceEnrollmentType": "windowsAzureADJoin",
"serialNumber": "SAMPLE1234"
}
],
"SuspectUserSignIns": [
{
"CreatedDateTime": "2026-08-04T22:14:00Z",
"AppDisplayName": "Office 365 Exchange Online",
"ClientAppUsed": "Browser",
"Status": "Success",
"IPAddress": "203.0.113.10",
"Country": "NG",
"City": "Lagos",
"ForeignLocation": true
},
{
"CreatedDateTime": "2026-08-04T09:02:00Z",
"AppDisplayName": "Microsoft Teams",
"ClientAppUsed": "Mobile Apps and Desktop clients",
"Status": "Success",
"IPAddress": "198.51.100.24",
"Country": "US",
"City": "Seattle",
"ForeignLocation": false
}
],
"LocationAnalysis": {
"UsageLocation": "US",
"UserRegisteredCountry": "United States",
"SignInCountries": [
{
"Country": "US",
"Count": 41
},
{
"Country": "NG",
"Count": 9
}
],
"ForeignSignInCount": 9,
"ForeignSuccessfulSignInCount": 8,
"ForeignRuleChangeCount": 1,
"ForeignSafelistChangeCount": 1,
"ForeignSharingChangeCount": 1,
"ForeignSentMessageCount": 1,
"Note": null
}
}
}
Loading
Loading