-
Notifications
You must be signed in to change notification settings - Fork 2
Specs M5 Trust Center Subprocessor
trust_center.models.subprocessor.TrustCenterSubprocessor
An assets.Supplier published on the public Trust Center as a subprocessor (GDPR Art. 28 transparency : the list of third parties that process customer data on the organization's behalf). The entry references the internal supplier through a PROTECT foreign key but exposes only curator-chosen public fields; internal supplier data (contacts, contracts, notes, criticality, owner) never reaches the public surface.
File: trust_center/models/subprocessor.py
BaseModel subclass : UUID PK, sequential reference (prefix TCSP, e.g. TCSP-1), django-simple-history audit trail, and the trust_center_publication lifecycle workflow.
| Field | Type | Constraints | Description |
|---|---|---|---|
id |
UUID | PK, auto-generated | Unique identifier |
reference |
string | auto TCSP-N, unique |
Business reference |
supplier |
relation | FK -> assets.Supplier, PROTECT, required |
The internal supplier surfaced as a subprocessor. related_name="trust_center_entries". |
public_name |
string | required, max 255 | Public-facing name of the subprocessor |
purpose |
string | optional, max 255, blank default | What the subprocessor is used for (e.g. "Cloud hosting", "Email delivery") |
public_country |
string | optional, max 100, blank default | Curator-chosen country (for data-residency transparency). Distinct from any internal supplier country field. |
public_website |
url | optional, blank default | Public website of the subprocessor |
display_order |
int |
PositiveIntegerField, default 0
|
Render order within the Subprocessors section |
workflow_state |
string | indexed | Lifecycle state (trust_center_publication) |
created_by |
relation | FK -> User | Creator |
created_at / updated_at
|
datetime | auto | Timestamps |
tags |
relation | M2M -> Tag | Free tagging (from BaseModel) |
Meta.ordering = ["display_order", "public_name"].
Returns "trust_center.subprocessor", so lifecycle transitions resolve their permission against the subprocessor feature.
Runs the shared trust_center_publication workflow (see README.md §2.3). Publish / unpublish / archive-from-published require approve; archiving a draft / unpublished entry is update.
SubprocessorQuerySet.published() returns an entry only when all of:
- its
workflow_stateispublished, AND - its
supplier.workflow_stateis in the supplier's reportable states, AND - its
supplier.statusisactive.
So a supplier that is suspended, under evaluation, archived or un-validated drops out of the public list automatically (RG-TC-08 / RG-TC-09 / RG-TC-14). The global is_published switch is enforced separately at the view layer.
| ID | Rule |
|---|---|
| RG-TC-14 | A subprocessor is public only when its supplier is reportable AND status = active. |
| RG-TC-15 | Only public_name, purpose, public_country, public_website and the (sanitized) supplier logo are exposed. Internal supplier fields are never exposed. |
| RG-TC-02 | The supplier FK is PROTECT : a supplier still referenced by a subprocessor cannot be hard-deleted. |
-
GET /subprocessors/: list (search onpublic_name,purpose,public_country; ordering ondisplay_order,public_name,created_at;?workflow_state=filter). POST /subprocessors/GET /subprocessors/{id}/PUT/PATCH /subprocessors/{id}/DELETE /subprocessors/{id}/POST /subprocessors/{id}/transition/
-
GET /trust/api/subprocessors/: published subprocessors viaPublicSubprocessorSerializer(fields:name,purpose,country,website,logosanitized). Also included in the aggregateGET /trust/api/.
-
list_trust_center_subprocessor/get_trust_center_subprocessor/create_trust_center_subprocessor/update_trust_center_subprocessor/delete_trust_center_subprocessor -
transition_trust_center_subprocessor/trust_center_subprocessor_allowed_transitions
| Codename | Description |
|---|---|
trust_center.subprocessor.read |
List / read subprocessors |
trust_center.subprocessor.create |
Create a subprocessor |
trust_center.subprocessor.update |
Modify a subprocessor (and archive a draft / unpublished one) |
trust_center.subprocessor.delete |
Hard-delete a subprocessor |
trust_center.subprocessor.approve |
Publish / unpublish / archive a published subprocessor |
-
assets.Supplier(assets.models.supplier.Supplier) : m2-assets/supplier.md. Itsstatusand lifecycle state both gate publication. - README.md : §3 (multi-domain exposure), §6 (data-leakage safety).
Built from docs/ at v0.36.0. Edits made here are overwritten by the next release : open a pull request against the source instead.
- Administration
- Ask Cairn
- Assets and suppliers
- Compliance
- The dashboard
- Finding your way
- Getting started
- Incidents
- How records move
- Organisational context
- Reports and management review
- Risks
- Trust Center
- Architecture
- Configuration
- Contributing
- The documentation system
- Installation
- Internationalisation
- Operations
- Release process
- Security
- Testing
- Adding an assistant provider
- Adding a dashboard widget
- Adding a domain entity
- Declaring a lifecycle
- Adding an MCP tool
- Adding a REST endpoint
- Adding a report
- Interface conventions
- Dashboard widgets
- Lifecycles
- MCP tools
- MCP tool parameters : Assets
- MCP tool parameters : Compliance
- MCP tool parameters : Governance and context
- MCP tool parameters : General
- MCP tool parameters : Incidents
- MCP tool parameters : Reports and management review
- MCP tool parameters : Risks
- MCP tool parameters : System and administration
- MCP tool parameters : Trust Center
- Management commands
- Models
- Permissions
- REST endpoints
- Environment variables
- MCP server
- REST API
- Assistant module (Ask Cairn)
- Module 0: User Management and Access Control
- Module 1: Context and Organization
- Module 2: Asset Management
- Module 3: Compliance
- Module 4: Risk Management
- Module 4 bis - EBIOS Risk Manager
- Module 5 : Trust Center
- Module 6 : Security Incident Management
- Management review : ISO 27001:2022 compliance (clause 9.3)