Ops Documentation

PrivacyOps
Ops Docs

Everything you need to integrate, configure, and operate PrivacyOps — from API quickstart to full privacy programme management.

Quickstart

5 min

Install the SDK, initialise the client with your API key, and make your first API call. The SDK is available for Node.js, Python, Go, Java, and Ruby.

1. Install

bash
npm install @privacyops/sdk

2. Initialise

typescript
import { PrivacyOps } from '@privacyops/sdk';

const privacy = new PrivacyOps({
  apiKey: process.env.PRIVACYOPS_API_KEY,
  region: 'me-riyadh-1',   // 'eu-west-1' | 'us-east-1' | 'ap-southeast-1'
  environment: 'production',
});

Store your API key in an environment variable — never commit it to source control. Use PRIVACYOPS_API_KEY as the variable name; the SDK picks it up automatically if no apiKey option is passed.

3. Make your first call

typescript
const status = await privacy.health.check();
console.log(status); // { ok: true, region: 'me-riyadh-1', latencyMs: 42 }

SDKs & Libraries

Official SDKs are maintained by the PrivacyOps team and track the latest API version.

Node.js / TypeScriptstable
npm install @privacyops/sdk

v2.4.1

Pythonstable
pip install privacyops

v2.3.0

Gostable
go get github.com/privacyops/go-sdk

v2.1.0

Javastable
implementation "io.privacyops:sdk:2.0.0"

v2.0.0

Rubystable
gem install 'privacyops'

v1.9.2

PHPbeta
composer require privacyops/sdk

v1.8.0

Authentication & API Keys

All API requests are authenticated with a Bearer token. Keys are scoped to an environment (production / staging) and can be restricted to specific API modules.

bash
// All requests require a Bearer token
curl -X GET https://api.privacy-ops.io/v1/consent/user_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-PrivacyOps-Region: me-riyadh-1"

// Rotate your API key
curl -X POST https://api.privacy-ops.io/v1/auth/rotate-key \
  -H "Authorization: Bearer YOUR_API_KEY"

Key scoping

Restrict keys to specific modules (consent-only, read-only, etc.) from the dashboard.

Key rotation

Rotate keys without downtime — old key remains valid for 24 h after rotation.

Audit log

Every API call is logged with timestamp, IP, key ID, and response code.

Data Residency & Regions

Choose the region where your data is stored and processed. Data never leaves the selected region unless you explicitly configure cross-border transfers.

Region IDLocationFrameworksStatus
me-riyadh-1Riyadh, Saudi ArabiaPDPL, NCAGA
eu-west-1Dublin, IrelandGDPR, ISO 27001GA
eu-central-1Frankfurt, GermanyGDPR, BSI C5GA
us-east-1Virginia, USACCPA, HIPAA, SOC 2GA
ap-southeast-1SingaporePDPA, MAS TRMGA
me-uae-1Abu Dhabi, UAEDIFC, ADGMPreview

Consent Management

Capture, store, and enforce granular consent records across every channel. The consent engine is jurisdiction-aware — it automatically applies the correct legal basis rules for GDPR, PDPL, CCPA, and more.

SDK — Capture, Check & Withdraw

typescript
// Capture consent at the point of collection
await privacy.consent.capture({
  userId: 'user_abc123',
  purposes: ['analytics', 'marketing', 'personalization'],
  source: 'cookie-banner-v2',
  ipAddress: req.ip,
  userAgent: req.headers['user-agent'],
  legalBasis: 'consent',          // 'consent' | 'legitimate_interest' | 'contract'
  jurisdiction: 'SA',             // ISO 3166-1 alpha-2
  consentVersion: '2.1',
});

// Check before processing
const allowed = await privacy.consent.check({
  userId: 'user_abc123',
  purpose: 'analytics',
});
if (!allowed) return;

// Withdraw
await privacy.consent.withdraw({
  userId: 'user_abc123',
  purposes: ['marketing'],
  reason: 'user_request',
});

Drop-in Consent Banner

Add a single script tag to your front-end. The banner auto-detects the visitor's jurisdiction and renders the appropriate consent UI.

html
<!-- Drop-in consent banner (auto-detects jurisdiction) -->
<script src="https://cdn.privacy-ops.io/banner/v2/bundle.js"
  data-api-key="YOUR_API_KEY"
  data-theme="light"
  data-position="bottom"
  data-auto-block="true">
</script>

Under PDPL (Saudi Arabia) and GDPR, consent must be freely given, specific, informed, and unambiguous. The PrivacyOps consent engine enforces these requirements and stores a cryptographically signed audit record for every consent event.

Granular purpose tracking
Consent versioning
Jurisdiction-aware rules
Full audit trail

Cookie Management

Automatically discover, classify, and govern all cookies and trackers on your web properties. Sync scan results directly to your consent banner so categories stay accurate without manual updates.

typescript
// Scan a domain for cookies and trackers
const scan = await privacy.cookies.scan({
  domain: 'www.company.com',
  depth: 'full',               // 'homepage' | 'full'
  includeSubdomains: true,
});

// scan.found: [
//   { name: '_ga',        category: 'analytics',   duration: '2 years',  thirdParty: true,  vendor: 'Google Analytics' },
//   { name: 'session_id', category: 'necessary',   duration: 'session',  thirdParty: false, vendor: 'internal' },
//   { name: 'fbp',        category: 'marketing',   duration: '3 months', thirdParty: true,  vendor: 'Meta Pixel' },
// ]

// Sync scan results to consent banner categories
await privacy.cookies.syncToBanner({
  scanId: scan.id,
  autoBlock: ['marketing', 'analytics'],   // block until consent given
});

Automated scanning

Crawl your entire domain to discover first- and third-party cookies, pixels, and SDKs.

Auto-categorisation

AI-powered classification into necessary, analytics, marketing, and preferences categories.

Banner sync

Push updated cookie lists to your consent banner automatically after each scan.

Vendor identification

Identify the vendor behind each cookie and link to their privacy policy.

Scheduled rescans

Set weekly or monthly rescans to catch new cookies added by third-party scripts.

Compliance reports

Generate cookie audit reports for GDPR, PDPL, and ePrivacy Directive compliance.

Data Subject Rights (DSR)

Automate the full DSR lifecycle — intake, identity verification, fulfilment, and response — within statutory deadlines. Supports all request types across GDPR, PDPL, CCPA, and HIPAA.

Access

Right to know what data is held

Erasure

Right to be forgotten

Rectification

Right to correct inaccurate data

Portability

Right to receive data in machine-readable format

Restriction

Right to limit processing

Objection

Right to object to processing

SDK — Submit & Fulfil

typescript
// Submit a Data Subject Request
const request = await privacy.dsr.submit({
  type: 'access',          // 'access' | 'erasure' | 'rectification' | 'portability' | 'restriction' | 'objection'
  subjectEmail: '[email protected]',
  subjectName: 'Jane Smith',
  jurisdiction: 'SA',
  verificationMethod: 'email_otp',
  metadata: { requestChannel: 'web-portal' },
});

// Returns: { id: 'dsr_01HXY...', status: 'pending', deadline: '2026-07-13T...' }

// Fulfil a request (called from your internal workflow)
await privacy.dsr.fulfil({
  requestId: request.id,
  action: 'export',
  dataPackage: exportedUserData,   // Buffer | ReadableStream
  format: 'json',
});

Webhook Payload

json
// Webhook payload for new DSR
{
  "event": "dsr.received",
  "data": {
    "id": "dsr_01HXY9ABCDEF",
    "type": "erasure",
    "subjectEmail": "[email protected]",
    "jurisdiction": "SA",
    "deadline": "2026-07-13T00:00:00Z",
    "status": "pending"
  }
}

PDPL (Saudi Arabia) requires DSR responses within 30 days. GDPR requires responses within 30 days (extendable to 90 days for complex requests). PrivacyOps automatically tracks deadlines and sends escalation alerts at 7 days, 3 days, and 1 day before expiry.

Data Discovery & Records of Processing Activities (RoPA)

Automatically scan connected data sources to classify PII, build your data inventory, and maintain a live RoPA — a legal requirement under GDPR Art. 30 and PDPL Art. 12.

PII Discovery Scan

typescript
// Connect a data source and run a PII scan
const scan = await privacy.discovery.scan({
  source: {
    type: 'postgresql',
    connectionString: process.env.DB_URL,
  },
  options: {
    depth: 'full',
    classifiers: ['email', 'phone', 'national_id', 'credit_card', 'ip_address', 'dob'],
    schedule: 'weekly',
    sampleSize: 1000,
  },
});

const result = await privacy.discovery.getResult(scan.id);
// result.findings:
// [
//   { table: 'users',  column: 'email',         type: 'EMAIL',       count: 48203, risk: 'high' },
//   { table: 'orders', column: 'billing_phone',  type: 'PHONE',       count: 12891, risk: 'medium' },
//   { table: 'logs',   column: 'ip',             type: 'IP_ADDRESS',  count: 2100000, risk: 'low' },
// ]

RoPA Management

Create and maintain processing activity records. Export a complete RoPA for regulator submission at any time.

typescript
// Create a Record of Processing Activity
const activity = await privacy.ropa.create({
  name: 'Customer Order Processing',
  purpose: 'Fulfil purchase orders and manage customer accounts',
  legalBasis: 'contract',
  dataCategories: ['contact', 'financial', 'transactional'],
  dataSubjects: ['customers'],
  retentionPeriod: { value: 7, unit: 'years' },
  processors: [
    { name: 'Stripe', role: 'payment_processor', country: 'US', safeguard: 'scc' },
    { name: 'AWS',    role: 'cloud_hosting',      country: 'SA', safeguard: 'adequacy' },
  ],
  crossBorderTransfers: true,
  transferMechanism: 'standard_contractual_clauses',
});

// Export full RoPA as PDF or Excel
const export_ = await privacy.ropa.export({ format: 'pdf', includeEvidence: true });

Connect your databases, cloud storage, and SaaS tools once — PrivacyOps continuously monitors for new PII fields and automatically flags them for review in your data inventory.

Data Mapping

Build a complete, visual map of how personal data flows through your organisation — across systems, teams, and borders. Data maps are required evidence for PDPL, GDPR, and most enterprise privacy audits.

typescript
// Register a data flow between systems
await privacy.dataMap.addFlow({
  source: { system: 'CRM', field: 'email', category: 'contact' },
  destination: { system: 'Email Marketing Platform', field: 'email_address' },
  purpose: 'marketing',
  legalBasis: 'consent',
  transferType: 'internal',    // 'internal' | 'third_party' | 'cross_border'
  encrypted: true,
});

// Get a visual data map for a specific system
const map = await privacy.dataMap.getSystemMap('CRM');
// Returns nodes, edges, risk scores, and processing purposes

// Export as JSON or PDF for regulator submission
const export_ = await privacy.dataMap.export({ format: 'pdf', includeRiskScores: true });

System-to-system flows

Map every data movement between internal systems, cloud services, and third parties.

Visual graph export

Export interactive data flow diagrams as PDF or SVG for regulator submissions and board reporting.

Risk overlay

Overlay risk scores on the data map to immediately identify high-risk flows requiring attention.

Change detection

Automatically detect new data flows introduced by engineering changes and alert the DPO.

Data Retention & Deletion

Define, enforce, and audit retention schedules across every data category. Automate deletion runs with legal hold support — ensuring data is kept no longer than necessary and removed securely when its retention period expires.

typescript
// Define a retention policy for a data category
await privacy.retention.createPolicy({
  name: 'Customer Records — Financial',
  dataCategory: 'financial',
  retentionPeriod: { value: 7, unit: 'years' },
  legalBasis: 'legal_obligation',
  jurisdiction: 'SA',
  regulation: 'Saudi Companies Law Art. 68',
  deletionMethod: 'cryptographic_erasure',  // 'hard_delete' | 'anonymisation' | 'cryptographic_erasure'
  reviewCycle: 'annual',
});

// Trigger a deletion run for expired records
const run = await privacy.retention.runDeletion({
  dryRun: true,   // set false to execute
  categories: ['marketing_leads'],
  olderThan: '2024-01-01',
});
// run.scheduled: 4821 records
// run.exemptions: 12 records (active legal hold)

Jurisdiction-aware schedules

Apply different retention periods per jurisdiction — e.g. 7 years for financial records under Saudi Companies Law, 5 years under GDPR.

Legal hold management

Place a legal hold on specific records to exempt them from automated deletion during litigation or regulatory investigation.

Deletion methods

Choose hard delete, anonymisation, or cryptographic erasure per data category. All deletions are logged in the immutable audit trail.

Under PDPL Art. 19 and GDPR Art. 5(1)(e), personal data must not be kept longer than necessary for the purpose it was collected. PrivacyOps retention policies are linked directly to your RoPA processing activities to ensure alignment.

DPIAs & Privacy Assessments

Conduct Data Protection Impact Assessments (DPIAs), Privacy Impact Assessments (PIAs), and Legitimate Interest Assessments (LIAs) through a structured, auditable workflow. Required under GDPR Art. 35 and PDPL Art. 25 for high-risk processing.

DPIA

Required for high-risk processing — profiling, large-scale sensitive data, systematic monitoring.

PIA

Broader privacy risk assessment for new projects, products, or system changes.

LIA

Legitimate Interest Assessment to document and justify processing under legitimate interest basis.

typescript
// Initiate a DPIA (Data Protection Impact Assessment)
const dpia = await privacy.dpia.create({
  projectName: 'AI-Powered Customer Scoring',
  description: 'Automated profiling of customers for credit risk',
  processingTypes: ['automated_decision_making', 'profiling', 'large_scale'],
  dataCategories: ['financial', 'behavioural'],
  riskLevel: 'high',
  assignedTo: '[email protected]',
});

// Add risk entries
await privacy.dpia.addRisk(dpia.id, {
  risk: 'Discriminatory profiling outcomes',
  likelihood: 'possible',
  severity: 'high',
  mitigation: 'Bias audits every quarter; human review for adverse decisions',
  residualRisk: 'low',
});

// Submit for DPO sign-off
await privacy.dpia.submit(dpia.id);

DPIAs must be completed before processing begins for high-risk activities. PrivacyOps integrates with your project management tools (Jira, ServiceNow) to trigger DPIA workflows automatically when a new project is flagged as high-risk.

Breach Management & Incident Response

Detect, log, investigate, and notify breaches within regulatory deadlines. PrivacyOps tracks the 72-hour GDPR and PDPL notification windows automatically, with escalation alerts and regulator notification templates.

typescript
// Register webhook for breach events
await privacy.incidents.registerWebhook({
  url: 'https://your-app.com/webhooks/privacyops',
  events: ['breach.detected', 'breach.confirmed', 'breach.resolved'],
  secret: process.env.WEBHOOK_SECRET,
});

// Handle incoming event
app.post('/webhooks/privacyops', (req, res) => {
  const event = privacy.webhooks.verify(req.body, req.headers['x-privacyops-signature']);

  if (event.type === 'breach.confirmed') {
    const { severity, affectedRecords, dataTypes, notificationDeadline } = event.data;
    // notificationDeadline = 72h from detection (GDPR Art. 33)
    // Trigger your internal incident response runbook
  }
  res.status(200).json({ received: true });
});

// Manually log an incident
const incident = await privacy.incidents.create({
  type: 'unauthorised_access',
  severity: 'high',
  affectedRecords: 1200,
  dataTypes: ['email', 'hashed_password'],
  discoveredAt: new Date().toISOString(),
  containmentActions: ['Revoked compromised tokens', 'Forced password reset'],
});

72-hour deadline tracking

Automatic countdown from detection. Escalation alerts at 48 h, 24 h, and 6 h.

Regulator notification templates

Pre-built templates for SDAIA (Saudi Arabia), ICO (UK), DPC (Ireland), and more.

Affected subject notification

Bulk email notifications to affected data subjects with audit trail.

Incident severity scoring

Automated risk scoring based on data types, volume, and likely harm.

Third-Party & Vendor Management

Maintain a complete register of data processors and sub-processors. Track DPA execution, run periodic risk assessments, and get alerts when vendors are due for review or when their certifications expire.

typescript
// Register a third-party vendor
const vendor = await privacy.vendors.create({
  name: 'Salesforce',
  category: 'crm',
  dataShared: ['contact', 'transactional'],
  country: 'US',
  dpaExecuted: true,
  dpaUrl: 'https://internal.company.com/dpa/salesforce.pdf',
  reviewCycle: 'annual',
  contactEmail: '[email protected]',
});

// Run a vendor risk assessment
const assessment = await privacy.vendors.assess(vendor.id, {
  questionnaire: 'standard_v3',
  dueDate: '2026-09-01',
});

// List vendors due for review
const due = await privacy.vendors.listDueForReview({ withinDays: 30 });

Under GDPR Art. 28 and PDPL Art. 33, you must have a Data Processing Agreement (DPA) in place with every processor before sharing personal data. PrivacyOps tracks DPA status and blocks data-sharing API calls to vendors without an executed DPA when enforcement mode is enabled.

DPA tracking
Vendor risk scoring
Certification monitoring
Sub-processor registry

Children's Data Protection

Apply enhanced protections for data subjects under the age of consent. PrivacyOps enforces age-appropriate defaults — no profiling, no behavioural advertising, no cross-context data sharing — and manages parental consent workflows.

Age of consent by jurisdiction

Automatically applies the correct age threshold: 13 (COPPA/USA), 15 (France), 16 (GDPR default), 18 (Saudi Arabia PDPL).

Parental consent workflows

Email-verified parental consent capture with audit trail. Supports delegated consent management.

Automatic processing restrictions

Flags minor accounts and blocks non-permitted processing operations at the API level.

typescript
// Flag a user as a minor and apply enhanced protections
await privacy.subjects.setAgeGroup({
  userId: 'user_xyz',
  ageGroup: 'minor',           // 'minor' | 'adult'
  verificationMethod: 'parental_consent_form',
  parentEmail: '[email protected]',
});

// Consent capture for minors requires parental approval
await privacy.consent.captureParental({
  childUserId: 'user_xyz',
  parentUserId: 'parent_abc',
  purposes: ['service_delivery'],
  verifiedAt: new Date().toISOString(),
});

// Automatically restrict data processing for minors
const profile = await privacy.subjects.getProfile('user_xyz');
// profile.restrictions: ['no_profiling', 'no_marketing', 'no_cross_context_sharing']

Cross-Border Data Transfers

Register, assess, and enforce cross-border transfer mechanisms. PrivacyOps maintains an up-to-date adequacy decision database and checks transfers against current regulatory rules before data leaves a jurisdiction.

typescript
// Register a cross-border transfer
const transfer = await privacy.transfers.create({
  fromJurisdiction: 'SA',
  toJurisdiction: 'US',
  recipient: 'AWS Inc.',
  dataCategories: ['contact', 'transactional'],
  transferMechanism: 'standard_contractual_clauses',
  sccVersion: '2021/914/EU',
  tiaCompleted: true,           // Transfer Impact Assessment
  approvedBy: '[email protected]',
  approvedAt: new Date().toISOString(),
});

// Check if a transfer is permitted under current rules
const check = await privacy.transfers.check({
  fromJurisdiction: 'SA',
  toJurisdiction: 'CN',
  dataCategories: ['health'],
});
// check.permitted: false
// check.reason: 'No adequacy decision; SCCs insufficient for health data under PDPL Art. 29'
MechanismApplicable frameworksNotes
Adequacy DecisionGDPR, PDPLNo additional safeguards needed
Standard Contractual ClausesGDPR, PDPL, LGPDMust complete Transfer Impact Assessment (TIA)
Binding Corporate RulesGDPRFor intra-group transfers; requires DPA approval
Explicit ConsentGDPR, PDPL, CCPAData subject must be informed of risks
Contractual NecessityGDPR, PDPLLimited to what is strictly necessary

Privacy by Design & Default

Embed privacy into your engineering and product workflows from day one. PrivacyOps provides checklists, sign-off workflows, and CI/CD integrations to make Privacy by Design a standard part of your SDLC.

Proactive, not reactive

Anticipate and prevent privacy risks before they materialise.

Privacy as the default

Maximum privacy protection without any action required from the user.

Privacy embedded into design

Privacy is a core component, not an add-on.

Full functionality

Positive-sum — privacy and functionality are not traded off.

End-to-end security

Full lifecycle protection from collection to deletion.

Visibility and transparency

All stakeholders can verify privacy practices.

Respect for user privacy

Keep it user-centric — strong defaults, clear notices, user control.

typescript
// Attach a Privacy by Design checklist to a project
const project = await privacy.pbd.createProject({
  name: 'New Mobile App — v3.0',
  owner: '[email protected]',
  launchDate: '2026-10-01',
});

await privacy.pbd.checkItem(project.id, {
  principle: 'data_minimisation',
  status: 'compliant',
  evidence: 'Only email and phone collected; no DOB required',
  reviewedBy: '[email protected]',
});

// Generate a Privacy by Design sign-off report
const report = await privacy.pbd.generateReport(project.id, { format: 'pdf' });

DPO Management

Give your Data Protection Officer a dedicated workspace to manage tasks, track obligations, log consultations, and maintain oversight of the entire privacy programme — all in one place.

typescript
// Create a DPO task
const task = await privacy.dpo.createTask({
  title: 'Review DPIA for AI Scoring Project',
  type: 'dpia_review',
  priority: 'high',
  dueDate: '2026-07-01',
  assignedTo: '[email protected]',
  linkedRecordType: 'dpia',
  linkedRecordId: 'dpia_01HXY...',
});

// Get DPO workload summary
const workload = await privacy.dpo.getWorkload('[email protected]');
// workload.openTasks: 14
// workload.overdueItems: 2
// workload.upcomingDeadlines: [{ type: 'dsr', deadline: '2026-06-20', count: 3 }]

// Log a DPO consultation
await privacy.dpo.logConsultation({
  topic: 'New HR analytics system',
  outcome: 'DPIA required before go-live',
  participants: ['[email protected]', '[email protected]'],
  date: new Date().toISOString(),
});

Task & obligation tracker

Centralised task list for DPIA reviews, DSR sign-offs, vendor assessments, and regulatory deadlines.

Consultation log

Maintain a searchable record of all DPO consultations — required evidence under GDPR Art. 38 and PDPL.

Workload dashboard

Real-time view of open tasks, overdue items, and upcoming deadlines across all privacy modules.

Board reporting

One-click privacy programme status reports for board and executive audiences, with trend data.

DPO independence controls

Role-based access ensures the DPO can access all processing activities without being able to modify them.

Multi-DPO support

Assign regional or functional DPOs with scoped visibility — e.g. a Saudi DPO for PDPL, an EU DPO for GDPR.

Audit & Compliance Log

Every action taken within PrivacyOps — consent events, DSR fulfilments, data accesses, configuration changes, admin actions — is written to an immutable, cryptographically signed audit log. Tamper-evident and regulator-ready.

typescript
// Query the immutable audit log
const logs = await privacy.audit.query({
  from: '2026-01-01T00:00:00Z',
  to:   '2026-06-30T23:59:59Z',
  eventTypes: ['consent.captured', 'dsr.fulfilled', 'data.accessed'],
  userId: 'user_abc123',       // optional — filter by subject
  actorId: 'admin_xyz',        // optional — filter by operator
  limit: 100,
  cursor: undefined,           // pagination
});

// Export audit log for regulator submission
const export_ = await privacy.audit.export({
  format: 'csv',
  period: { from: '2026-01-01', to: '2026-06-30' },
  signed: true,   // cryptographically signed export
});
Immutable log
Cryptographic signing
Regulator export
Real-time alerts

Export a signed audit log at any time for regulator submission. The export includes a cryptographic hash chain that proves no records have been altered or deleted since the log was created.

Compliance Monitoring & Scoring

Get a real-time compliance health score across every framework you operate under. Automated checks run daily against your live data — consent coverage, DSR response times, RoPA completeness, vendor DPA status, and more.

typescript
// Set up a real-time compliance health check
const monitor = await privacy.compliance.createMonitor({
  name: 'PDPL Baseline Monitor',
  framework: 'pdpl',
  checks: [
    'consent_coverage',
    'dsr_response_time',
    'ropa_completeness',
    'vendor_dpa_coverage',
    'breach_notification_readiness',
  ],
  alertThreshold: 'medium',    // 'low' | 'medium' | 'high' | 'critical'
  notifyEmail: '[email protected]',
  schedule: 'daily',
});

// Get current compliance score
const score = await privacy.compliance.getScore({ framework: 'pdpl' });
// score.overall: 87
// score.breakdown: { consent: 94, dsr: 82, ropa: 91, vendors: 78, breach: 90 }

Multi-framework scoring

Separate compliance scores for PDPL, GDPR, CCPA, HIPAA, NCA, and ISO 27001 — each with a breakdown by control area.

Gap analysis

Automatically identify compliance gaps and generate a prioritised remediation plan with effort estimates.

Trend reporting

Track compliance score over time to demonstrate continuous improvement to regulators and auditors.

Regulatory Intelligence

Stay ahead of regulatory change. PrivacyOps monitors legislation, enforcement actions, and regulatory guidance across all your operating jurisdictions and alerts you to changes that affect your privacy programme.

typescript
// Subscribe to regulatory updates for your jurisdictions
await privacy.regulatory.subscribe({
  jurisdictions: ['SA', 'EU', 'US-CA', 'BH', 'QA'],
  categories: ['new_regulation', 'amendment', 'enforcement_action', 'guidance'],
  notifyEmail: '[email protected]',
  webhookUrl: 'https://your-app.com/webhooks/regulatory',
});

// Get latest updates
const updates = await privacy.regulatory.getUpdates({
  jurisdiction: 'SA',
  since: '2026-01-01',
  limit: 20,
});
// updates[0]: {
//   title: 'SDAIA issues updated PDPL implementing regulations',
//   jurisdiction: 'SA',
//   effectiveDate: '2026-03-01',
//   impact: 'high',
//   affectedModules: ['consent', 'cross_border_transfers'],
// }

Multi-jurisdiction monitoring

Track SDAIA (Saudi Arabia), EDPB (EU), ICO (UK), FTC (USA), PDPC (Singapore), and 30+ other regulators.

Impact assessment

Each update is tagged with affected PrivacyOps modules and an estimated impact level (low / medium / high / critical).

Enforcement tracker

Monitor enforcement actions and fines in your sector to benchmark your own programme against peer organisations.

Regulatory calendar

Upcoming effective dates, consultation deadlines, and reporting obligations surfaced in your DPO dashboard.

Privacy Training & Awareness

Assign, track, and report on privacy training across your entire organisation. Mandatory training completion is a regulatory requirement under PDPL, GDPR, and NCA — PrivacyOps makes it auditable.

typescript
// Assign a training module to a user
await privacy.training.assign({
  userId: 'emp_456',
  moduleId: 'pdpl-fundamentals-v2',
  dueDate: '2026-07-31',
  mandatory: true,
});

// Bulk assign to a department
await privacy.training.bulkAssign({
  department: 'engineering',
  moduleIds: ['privacy-by-design-101', 'data-handling-secure'],
  dueDate: '2026-08-31',
});

// Get training completion report
const report = await privacy.training.getComplianceReport({
  department: 'all',
  period: { from: '2026-01-01', to: '2026-06-30' },
});
// report.completionRate: 84%
// report.overdueCount: 23

Module library

Pre-built training modules for PDPL fundamentals, GDPR essentials, data handling, Privacy by Design, and incident response.

Role-based assignment

Assign different modules to engineers, HR, marketing, and executives based on their data access and processing responsibilities.

Completion tracking

Real-time completion dashboards per department. Automated reminders for overdue learners.

Assessment & scoring

End-of-module assessments with pass/fail thresholds. Failed attempts trigger automatic re-assignment.

Audit-ready reports

Generate training completion certificates and department-level reports for regulator submissions.

Custom content

Upload your own training materials (PDF, video, SCORM) alongside the PrivacyOps module library.

REST API Reference

Base URL: https://api.privacy-ops.io  ·  Current version: v1

All responses are JSON. Dates are ISO 8601. Pagination uses cursor-based ?after= parameters.

Consent

POST/v1/consent/capture
GET/v1/consent/:userId
DELETE/v1/consent/:userId/withdraw
GET/v1/consent/:userId/history

Cookies

POST/v1/cookies/scan
GET/v1/cookies/scans/:id
POST/v1/cookies/sync-banner

Data Subject Rights

POST/v1/dsr
GET/v1/dsr/:id
POST/v1/dsr/:id/fulfil
GET/v1/dsr

Data Discovery & Mapping

POST/v1/discovery/scan
GET/v1/discovery/scans/:id
GET/v1/discovery/inventory
POST/v1/data-map/flows
GET/v1/data-map/systems/:id
POST/v1/data-map/export

Retention

POST/v1/retention/policies
GET/v1/retention/policies
POST/v1/retention/run
GET/v1/retention/runs/:id

RoPA

POST/v1/ropa
GET/v1/ropa
PATCH/v1/ropa/:id
POST/v1/ropa/export

DPIAs

POST/v1/dpia
GET/v1/dpia/:id
POST/v1/dpia/:id/risks
POST/v1/dpia/:id/submit

Incidents & Breach

POST/v1/incidents
GET/v1/incidents
PATCH/v1/incidents/:id
POST/v1/incidents/webhooks

Vendors

POST/v1/vendors
GET/v1/vendors
POST/v1/vendors/:id/assess

Transfers

POST/v1/transfers
POST/v1/transfers/check
GET/v1/transfers

DPO & Governance

POST/v1/dpo/tasks
GET/v1/dpo/workload/:dpoId
POST/v1/dpo/consultations

Audit Log

GET/v1/audit
POST/v1/audit/export

Compliance Monitoring

POST/v1/compliance/monitors
GET/v1/compliance/score
POST/v1/compliance/reports
GET/v1/compliance/reports/:id

Regulatory Intelligence

POST/v1/regulatory/subscribe
GET/v1/regulatory/updates

Training

POST/v1/training/assign
POST/v1/training/bulk-assign
GET/v1/training/report

Webhooks

Subscribe to real-time events from PrivacyOps. All webhook payloads are signed with HMAC-SHA256 — always verify the signature before processing.

Signature Verification

typescript
import crypto from 'crypto';

function verifyWebhook(payload: Buffer, signature: string, secret: string): boolean {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(`sha256=${expected}`)
  );
}

app.post('/webhooks/privacyops', express.raw({ type: 'application/json' }), (req, res) => {
  const sig = req.headers['x-privacyops-signature'] as string;
  if (!verifyWebhook(req.body, sig, process.env.WEBHOOK_SECRET!)) {
    return res.status(401).json({ error: 'Invalid signature' });
  }
  const event = JSON.parse(req.body.toString());
  // handle event...
  res.json({ received: true });
});

Available Events

consent.capturedUser consent recorded
consent.withdrawnUser withdrew consent
dsr.receivedNew data subject request submitted
dsr.deadline_approachingDSR response deadline within 7 days
dsr.overdueDSR response deadline passed
breach.detectedPotential breach flagged
breach.confirmedBreach confirmed — 72 h clock started
breach.resolvedIncident closed
vendor.review_dueVendor risk review due within 30 days
dpia.sign_off_requiredDPIA submitted and awaiting DPO sign-off
scan.completedPII discovery scan finished
retention.deletion_runScheduled deletion run completed
regulatory.updateNew regulatory update in a subscribed jurisdiction
training.overdueTraining assignment past due date
compliance.score_changeCompliance score changed by ±5 or more

Platform Integrations

PrivacyOps connects to your existing tech stack via native integrations, REST APIs, and Zapier/Make automations. All integrations are configured from the dashboard — no code required.

CRM & Sales

SalesforceHubSpotMicrosoft Dynamics 365Zoho CRM

Cloud & Infrastructure

AWSMicrosoft AzureGoogle CloudOracle Cloud

Data Warehouses

SnowflakeBigQueryRedshiftDatabricks

ITSM & Ticketing

ServiceNowJiraZendeskFreshservice

Identity & SSO

OktaAzure ADAuth0Ping Identity

Communication

SlackMicrosoft TeamsPagerDutyOpsgenie

Databases

PostgreSQLMySQLMongoDBOracle DBSQL Server

Marketing

MarketoMailchimpBrazeSegment

Don't see your tool? Use the REST API or contact [email protected] to discuss a custom integration.

Compliance Reports

Generate audit-ready reports for regulators, DPOs, and board-level stakeholders. Reports pull live data from your consent records, DSR log, RoPA, incident register, and vendor assessments.

typescript
// Generate a compliance report
const report = await privacy.compliance.generateReport({
  framework: 'pdpl',           // 'gdpr' | 'pdpl' | 'ccpa' | 'hipaa' | 'nca'
  period: { from: '2026-01-01', to: '2026-06-30' },
  format: 'pdf',
  includeEvidence: true,
  sections: ['consent', 'dsr', 'ropa', 'incidents', 'vendors'],
});

const url = await privacy.compliance.getDownloadUrl(report.id);
// Signed URL valid for 24 hours
PDPL (Saudi Arabia)
GDPR
CCPA / CPRA
HIPAA
NCA Compliance
ISO 27001 Annex A