Connectors
Łączenie systemów, z mechanizmami RODO
Do czego służy
Connect other systems to the instance and let people connect their own accounts, with the controls that support GDPR compliance built in. Nothing leaves or enters without a recorded legal basis and a field allowlist; personal data goes out as keyed pseudonyms unless you decide otherwise, the sensitive classes stay withheld, every flow is logged without its payload, and withdrawing consent disconnects the service and purges its credentials. A processing register for Article 30 is generated from the connections. It provides technical controls; it is not legal advice or a certification, and the catalogue says for every service how much of it is implemented.
Co pakiet robi, a czego nie robi
Connect external systems and let people connect their own accounts, with the controls that support GDPR compliance built in.
Modele
connector_provider
A service or protocol a connection can use, from the catalogue shipped with obop
Grupa odczytu: connectors.user. Grupa zapisu: connectors.admin.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
name | text | none | nie | connectors.user | jawnie | Name of the provider |
category | select (generic, messaging, payments, developer, calendar_contacts, automation) | none | nie | connectors.user | jawnie | Kind of service |
maturity | select (working, generic_adapter, definition_only) | none | nie | connectors.user | jawnie | How much of it exists: working, generic adapter or definition only |
engine | select (webhook_out, webhook_in, rest_pull, csv_export, none) | none | nie | connectors.user | jawnie | The generic engine that runs it |
auth_kind | select (api_key, bearer_token, basic, oauth2, webhook_in, webhook_out, none) | none | nie | connectors.user | jawnie | How the connection authenticates |
direction | select (inbound, outbound, both) | none | nie | connectors.user | jawnie | Whether data flows in, out or both ways |
max_classes | text | none | nie | connectors.user | jawnie | Data classes the provider may receive at most, comma separated |
purpose | longtext | none | nie | connectors.user | jawnie | What the provider is used for |
description | longtext | none | nie | connectors.user | jawnie | How it works and what is tested |
legal_name | text | none | nie | connectors.user | jawnie | Legal name of the recipient (sub-processor information) |
country | text | none | nie | connectors.user | jawnie | Country of the recipient |
dpa_url | text | none | nie | connectors.user | jawnie | Where the provider publishes its data processing agreement |
eu_adequate | select (yes, no, verify) | none | nie | connectors.user | jawnie | Whether transfers rest on EU or adequate-country processing: yes, no or verify with the provider |
verify_note | longtext | none | nie | connectors.user | jawnie | What to confirm with the provider before relying on these facts |
allowed_hosts | text | none | nie | connectors.user | jawnie | Hosts the provider connects to, comma separated; empty means the connection names its own |
config_fields | longtext | none | nie | connectors.user | jawnie | Settings and credentials the provider needs, as a JSON list |
setup | longtext | none | nie | connectors.user | jawnie | Setup instructions |
webhook_scheme | select (standard, github, stripe) | none | nie | connectors.user | jawnie | Signature scheme of inbound webhooks |
oauth_scopes | text | none | nie | connectors.user | jawnie | OAuth scopes requested, for OAuth providers |
enabled | bool | none | nie | connectors.user | jawnie | An administrator enabled the provider |
users_may_use | bool | none | nie | connectors.user | jawnie | People may connect their own accounts with it |
dpa_recorded | bool | none | nie | connectors.user | jawnie | The agreement with the provider is recorded |
legal_basis | select (consent, contract, legitimate_interest, legal_obligation) | none | nie | connectors.user | jawnie | Legal basis the administrator set for this provider |
legal_basis_text | longtext | none | nie | connectors.user | jawnie | Text shown to people when they are asked for consent |
provider_policy
What an administrator decided about one provider: enabled, for whom, legal basis, agreement and OAuth client
Grupa odczytu: connectors.admin. Grupa zapisu: connectors.admin.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
provider | text | none | nie | connectors.admin | jawnie | Id of the provider this policy is for |
enabled | bool | none | nie | connectors.admin | jawnie | The provider may be connected at all |
users_may_use | bool | none | nie | connectors.admin | jawnie | People with connectors.user may connect their own accounts |
allowed_group | text | none | nie | connectors.admin | jawnie | Permission group that may use it; empty means connectors.user |
legal_basis | select (consent, contract, legitimate_interest, legal_obligation) | none | nie | connectors.admin | jawnie | Legal basis recorded for connections of this provider |
legal_basis_text | longtext | none | nie | connectors.admin | jawnie | Text shown to people when they are asked for consent |
dpa_recorded | bool | none | nie | connectors.admin | jawnie | A data processing agreement with the provider is in place |
dpa_reference | text | none | nie | connectors.admin | jawnie | Where the agreement is kept or its reference |
default_policy | longtext | none | nie | connectors.admin | jawnie | Policy JSON that new connections of this provider start with |
oauth_client_id | text | internal | nie | connectors.admin | jawnie | OAuth client id you registered with the provider |
oauth_client_secret | longtext | secret | nie | connectors.admin | wstrzymane | OAuth client secret; write-only, stored encrypted |
connection
A link to one external system, with its credentials, field allowlist, policy and state
Grupa odczytu: connectors.user. Grupa zapisu: connectors.user.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
name | text | none | nie | connectors.user | jawnie | A name that tells you what the connection is for |
provider | text | none | nie | connectors.user | jawnie | Id of the provider from the catalogue |
owner_scope | select (instance, user) | none | nie | connectors.user | jawnie | Whether the connection belongs to the instance or to one person |
owner_user | text | internal | tak | connectors.user | zamaskowane | The person who owns the connection |
owner_groups | text | none | nie | connectors.admin | jawnie | Permission groups the owner held when the connection was last changed |
state | select (draft, connected, paused, error, revoked) | none | nie | connectors.user | jawnie | Where the connection is: draft, connected, paused, error or revoked |
config | longtext | none | nie | connectors.user | jawnie | Non-secret settings as a JSON object |
credentials | longtext | secret | nie | connectors.user | wstrzymane | Credentials as a JSON object; write-only, stored encrypted, never returned |
credentials_hint | text | none | nie | connectors.user | jawnie | Whether credentials are set, with at most the last four characters |
oauth_tokens | longtext | secret | nie | connectors.user | wstrzymane | OAuth tokens; write-only, stored encrypted, never returned |
field_allowlist | longtext | none | nie | connectors.user | jawnie | Fields that may leave or be accepted, as a JSON object of model to field names; empty means nothing |
policy | longtext | none | nie | connectors.user | jawnie | Treatment overrides by class or field and impact-assessment acknowledgements, as JSON |
rate_limit_per_hour | number | none | nie | connectors.user | jawnie | Most flows per hour |
volume_cap_per_day | number | none | nie | connectors.user | jawnie | Most records per day |
retention_days | number | none | nie | connectors.user | jawnie | Days flow logs and runs are kept |
created_at | text | none | nie | connectors.user | jawnie | When the connection was created |
last_sync_at | text | none | nie | connectors.user | jawnie | When the connection last ran |
last_error | text | none | nie | connectors.user | jawnie | Summary of the last failure, without payloads |
result | longtext | none | nie | connectors.user | jawnie | Output of the last command (test, sync, authorisation link); never stored |
consent
The legal basis recorded for a connection: who, why, which data classes, and whether it was withdrawn
Grupa odczytu: connectors.user. Grupa zapisu: connectors.user.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
connection | ref → connection | none | nie | connectors.user | jawnie | The connection this basis is for |
owner_user | text | internal | tak | connectors.user | zamaskowane | Owner of the connection |
state | select (active, withdrawn, superseded) | none | nie | connectors.user | jawnie | active, withdrawn, or superseded by a newer record |
subject_kind | select (user, party, instance) | none | nie | connectors.user | jawnie | Whose basis it is: a user, a party or the instance |
subject | text | internal | tak | connectors.user | zamaskowane | Id of the party when the subject is a party |
given_by | text | internal | tak | connectors.user | zamaskowane | Who recorded it |
purpose | longtext | none | nie | connectors.user | jawnie | The purpose the data is processed for |
legal_basis | select (consent, contract, legitimate_interest, legal_obligation) | none | nie | connectors.user | jawnie | consent, contract, legitimate interest or legal obligation |
note | longtext | none | nie | connectors.user | jawnie | Explanation; for legitimate interest the balancing test |
classes | text | none | nie | connectors.user | jawnie | Data classes that may flow under this record, computed from the connection |
fields_summary | longtext | none | nie | connectors.user | jawnie | Models and fields that may flow, computed from the connection |
recorded_at | text | none | nie | connectors.user | jawnie | When it was recorded |
withdrawn_at | text | none | nie | connectors.user | jawnie | When it was withdrawn, if it was |
withdrawn_by | text | internal | tak | connectors.user | zamaskowane | Who withdrew it |
sync_run
One run of a connection: when, how many records, and how it ended; never the data
Grupa odczytu: connectors.user. Grupa zapisu: connectors.admin.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
connection | ref → connection | none | nie | connectors.user | jawnie | The connection that ran |
owner_user | text | internal | tak | connectors.user | zamaskowane | Owner of the connection |
direction | select (inbound, outbound) | none | nie | connectors.user | jawnie | Whether data went out or came in |
kind | select (manual, event, pull, webhook, test) | none | nie | connectors.user | jawnie | What started it |
started_at | text | none | nie | connectors.user | jawnie | When it started |
finished_at | text | none | nie | connectors.user | jawnie | When it ended |
status | select (running, succeeded, partial, failed, retrying, dead_letter) | none | nie | connectors.user | jawnie | How it ended |
records | number | none | nie | connectors.user | jawnie | Records sent or accepted |
rejected | number | none | nie | connectors.user | jawnie | Records refused |
proposed | number | none | nie | connectors.user | jawnie | Changes held for approval |
error_summary | text | none | nie | connectors.user | jawnie | Why it failed, without payloads |
data_flow_log
Append-only record of every flow: when, what, how many, which fields, how treated, and a hash of the payload; never the payload
Grupa odczytu: connectors.user. Grupa zapisu: connectors.admin.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
connection | ref → connection | none | nie | connectors.user | jawnie | The connection the flow belongs to |
owner_user | text | internal | tak | connectors.user | zamaskowane | Owner of the connection |
at | text | none | nie | connectors.user | jawnie | When it happened |
direction | select (outbound, inbound) | none | nie | connectors.user | jawnie | Whether data went out or came in |
model | text | none | nie | connectors.user | jawnie | The model the records belong to |
record_count | number | none | nie | connectors.user | jawnie | How many records |
fields_sent | text | none | nie | connectors.user | jawnie | Fields that left or were accepted, comma separated |
fields_denied | text | none | nie | connectors.user | jawnie | Fields the policy withheld, comma separated |
masking_mode | text | none | nie | connectors.user | jawnie | Treatments applied, for example pseudonymise=2;allow=1 |
payload_hash | text | none | nie | connectors.user | jawnie | SHA-256 of the payload after treatment |
outcome | select (released, received, refused, rejected, erased) | none | nie | connectors.user | jawnie | released, received, refused, rejected or erased |
reason | text | none | nie | connectors.user | jawnie | Why a flow was refused or a record rejected |
processing_register
The record of processing activities (GDPR Article 30) generated from the connections; exportable as CSV
Grupa odczytu: connectors.admin. Grupa zapisu: connectors.admin.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
connection | ref → connection | none | nie | connectors.admin | jawnie | The connection this row describes |
name | text | none | nie | connectors.admin | jawnie | Name of the connection |
state | text | none | nie | connectors.admin | jawnie | State of the connection |
owner_scope | text | none | nie | connectors.admin | jawnie | Instance or user |
owner_user | text | internal | tak | connectors.admin | zamaskowane | Owner of the connection |
provider | text | none | nie | connectors.admin | jawnie | Provider id |
recipient | longtext | none | nie | connectors.admin | jawnie | Who receives the data (legal name) |
recipient_country | text | none | nie | connectors.admin | jawnie | Where the recipient is |
purpose | longtext | none | nie | connectors.admin | jawnie | Purpose of the processing |
legal_basis | text | none | nie | connectors.admin | jawnie | Recorded legal basis |
consent_recorded_at | text | none | nie | connectors.admin | jawnie | When the basis was recorded |
data_subjects | longtext | none | nie | connectors.admin | jawnie | Categories of data subjects |
personal_data_categories | longtext | none | nie | connectors.admin | jawnie | Categories of personal data, with class and treatment |
transfer_basis | longtext | none | nie | connectors.admin | jawnie | Basis for transfers to third countries |
agreement_recorded | text | none | nie | connectors.admin | jawnie | Whether the agreement with the recipient is recorded |
retention_days | text | none | nie | connectors.admin | jawnie | Retention of logs, in days |
safeguards | longtext | none | nie | connectors.admin | jawnie | Technical and organisational measures |
csv | longtext | none | nie | connectors.admin | jawnie | The register as CSV; filled by the export command, never stored |
egress_policy
Instance-wide switches for data flows: the master switch, EU-only providers, the agreement requirement and the host allow-list
Grupa odczytu: connectors.admin. Grupa zapisu: connectors.admin.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
flows_enabled | bool | none | nie | connectors.admin | jawnie | Master switch: when off nothing leaves and nothing is accepted |
eu_only | bool | none | nie | connectors.admin | jawnie | Personal data only goes to providers with an EU or adequacy basis |
require_dpa | bool | none | nie | connectors.admin | jawnie | Personal data, even pseudonymised, only goes to providers whose agreement is recorded |
host_allowlist | text | none | nie | connectors.admin | jawnie | Hosts connections may reach, comma separated; empty means no extra restriction |
default_retention_days | number | none | nie | connectors.admin | jawnie | Retention for logs of connections that no longer exist |
result | longtext | none | nie | connectors.admin | jawnie | Output of the last command (checklist, purge); never stored |
privacy_preview
What a sample outbound record looks like after the policy: the exact payload and the treatment of each field
Grupa odczytu: connectors.user. Grupa zapisu: connectors.user.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
provider | text | none | nie | connectors.user | jawnie | Provider the preview is for |
connection | text | none | nie | connectors.user | jawnie | An existing connection to preview, instead of a provider |
target_model | text | none | nie | connectors.user | jawnie | The model to preview |
record_id | text | none | nie | connectors.user | jawnie | A record to use as the sample; empty means the first one |
field_allowlist | longtext | none | nie | connectors.user | jawnie | Fields to include, as a JSON object of model to field names |
policy | longtext | none | nie | connectors.user | jawnie | Policy JSON to preview |
payload | longtext | none | nie | connectors.user | jawnie | The payload after treatment, as JSON; never stored |
treatments | longtext | none | nie | connectors.user | jawnie | Each field with its class and treatment, as JSON; never stored |
Przepływy pracy
connection
| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
connection.connect | state: draft → connected | connectors.user | tak |
connection.pause | state: connected → paused | connectors.user | tak |
connection.resume | state: paused → connected | connectors.user | tak |
connection.retry | state: error → connected | connectors.user | tak |
connection.revoke | state: * → revoked | connectors.user | tak |
connection.test | - | connectors.user | nie |
connection.sync | - | connectors.user | tak |
connection.oauth_start | - | connectors.user | nie |
consent
| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
consent.withdraw | state: active → withdrawn | connectors.user | tak |
processing_register
| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
processing_register.export_csv | - | connectors.admin | nie |
egress_policy
| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
egress_policy.checklist | - | connectors.admin | nie |
egress_policy.purge | - | connectors.admin | tak |
privacy_preview
| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
privacy_preview.render | - | connectors.user | nie |
Grupy uprawnień
Grupy używane przez tę aplikację:
connectors.adminconnectors.user
Kroki zatwierdzania
Kroki, które agent może tylko zaproponować:
connection.connectconnection.pauseconnection.resumeconnection.retryconnection.revokeconnection.syncconsent.withdrawegress_policy.purge
Co agenci mogą, a czego nie mogą
Agent może odczytywać, wyszukiwać, tworzyć i aktualizować rekordy tej aplikacji oraz uruchamiać akcje niewymagające zatwierdzenia, w ramach grup uprawnień swojego tokenu.
Te kroki może tylko zaproponować, a człowiek musi je zatwierdzić: connection.connect, connection.pause, connection.resume, connection.retry, connection.revoke, connection.sync, consent.withdraw, egress_policy.purge, connector_provider.delete, provider_policy.delete, connection.delete, consent.delete, sync_run.delete, data_flow_log.delete, processing_register.delete, egress_policy.delete, privacy_preview.delete.
Dane osobowe są maskowane jako tokeny zastępcze: connection.owner_user, consent.owner_user, consent.subject, consent.given_by, consent.withdrawn_by, sync_run.owner_user, data_flow_log.owner_user, processing_register.owner_user.
Te pola są całkowicie wstrzymane i niedostępne dla agentów: provider_policy.oauth_client_secret, connection.credentials, connection.oauth_tokens.
Zależności
Brak.
Instalacja
Wbudowana. Jest dostępna w każdej instancji i nie można jej usunąć.
Zbuduj własną
Przewodnik po modułach pokazuje, jak pisze się takie aplikacje