Skip to main content

GDPR Processing Register (ROPA + DPIA)

ROPA (Record of Processing Activities) and DPIA (Data Protection Impact Assessment) are the self-documentation side of GDPR. Where a DSAR covers what a data subject asks you for, the register covers what your organisation must write down about itself — before any request arrives.
This page describes Orbit’s platform controls. It is not legal advice. Whether you are a controller or processor, which activities are high-risk, and what your register must contain depend on your processing. Confirm with qualified counsel.
All endpoints below are rooted at https://api.orbit.devotel.io/api/v1/compliance.

What Art.30 and Art.35 demand

GDPR Art.30 requires every controller (and every processor) to keep a record of its processing activities. For each activity the record names the purpose, the categories of data subjects and data, the recipients, any cross-border transfers and their safeguard, the retention period, and the security measures applied. A supervisory authority can demand the record on request (Art.30(4)). GDPR Art.35 requires a DPIA before processing that is likely to be high-risk — automated decision-making with significant effects, large-scale processing of special-category data, or systematic monitoring of publicly accessible areas. The assessment records necessity and proportionality, the risks identified, the mitigations, the residual risk, and the outcome. Orbit screens each activity you intake against the Art.35(3) triggers and flags whether a DPIA is required — and blocks activation of a flagged activity until the DPIA is recorded (see Status lifecycle).

The register is yours — Orbit keeps it, it never fills it

The register documents your organisation’s processing. Orbit supplies the storage, the status lifecycle, the DPIA screening, and the audit-ready export — it never decides what your lawful basis is or what your retention period should be. Every activity is created, advanced, and assessed by your own team, which matches how regulators read Art.30: the register must reflect the controller’s own knowledge. Each activity gets a human reference on intake (for example ROPA-2026-0004) so you can cite it in your internal policies and in correspondence with an authority.

Recording processing activities

Create an activity

POST /compliance/processing-activities — requires an admin or owner API key. The activity lands in status draft.
Returns 201 Created with the activity and a screening block:

The DPIA screening

Every POST, GET, PATCH, and PUT …/dpia response includes a screening block. It flags the Art.35(3) triggers deterministically:
  • automated_decision_making: true → automated decision-making with legal or similarly significant effects (Art.35(3)(a)).
  • systematic_monitoring: true → systematic monitoring of a publicly accessible area (Art.35(3)(c)).
  • Non-empty special_categories together with large_scale: true → large-scale processing of special categories (Art.35(3)(b)).
  • A lone special-category or large-scale flag still surfaces as a high-risk indicator (Art.9 / Art.35(1)).
screening.required: true means a DPIA must be recorded before the activity can move to active.

Status lifecycle

An activity moves through: draftactiveunder_reviewretired PATCH /compliance/processing-activities/{id} updates mutable fields and/or advances the status:
Activating an activity whose screening flags a DPIA requirement is rejected with 409 Conflict until a DPIA has been recorded whose outcome is not do_not_proceed. This is what makes the register proactive — high-risk processing cannot go live undocumented.

Read the register

  • GET /compliance/processing-activities — the full register plus a summary: counts by status, how many activities the screen flags as DPIA-required (dpiaRequired), how many of those still have no recorded DPIA (dpiaMissing), and how many recorded DPIAs landed on a high residual risk (highResidualRisk).
  • GET /compliance/processing-activities/{id} — one activity with its screening and, once recorded, its DPIA.

Recording a DPIA

PUT /compliance/processing-activities/{id}/dpia — requires an admin or owner API key. Records (or replaces) the Art.35 assessment for the activity.
consult_authority maps to the Art.36 prior-consultation duty owed when a high residual risk cannot be mitigated. An outcome of do_not_proceed blocks activation of the activity — leave it only when the assessment concludes the processing cannot lawfully go ahead. Each DPIA records who assessed it and when (assessedAt, assessedBy).

Exporting the Art.30 inventory

GET /compliance/processing-activities/inventory returns the whole register serialised to the audit-ready shape — the attachment a DPO hands to a supervisory authority on an Art.30(4) request, or attaches to an auditor’s evidence request.
Every record carries its DPIA state — dpiaRequired, dpiaRecorded, dpiaOutcome, residualRisk — so the inventory doubles as evidence that high-risk processing was screened and assessed.

Access control

Reads (GET) are available to any authenticated member of your organisation. Writes (POST, PATCH, PUT …/dpia) are restricted to owner and admin roles — the register is a regulatory control, in line with the rest of the compliance write surface (breach incidents, retention policy). Every intake, update, and DPIA recording is written to your audit log with the actor, the activity reference, and the outcome.