Connectors

Łączenie systemów, z mechanizmami RODO

DostępnaPodstawymanifest

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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
nametextnonenieconnectors.userjawnieName of the provider
categoryselect (generic, messaging, payments, developer, calendar_contacts, automation)nonenieconnectors.userjawnieKind of service
maturityselect (working, generic_adapter, definition_only)nonenieconnectors.userjawnieHow much of it exists: working, generic adapter or definition only
engineselect (webhook_out, webhook_in, rest_pull, csv_export, none)nonenieconnectors.userjawnieThe generic engine that runs it
auth_kindselect (api_key, bearer_token, basic, oauth2, webhook_in, webhook_out, none)nonenieconnectors.userjawnieHow the connection authenticates
directionselect (inbound, outbound, both)nonenieconnectors.userjawnieWhether data flows in, out or both ways
max_classestextnonenieconnectors.userjawnieData classes the provider may receive at most, comma separated
purposelongtextnonenieconnectors.userjawnieWhat the provider is used for
descriptionlongtextnonenieconnectors.userjawnieHow it works and what is tested
legal_nametextnonenieconnectors.userjawnieLegal name of the recipient (sub-processor information)
countrytextnonenieconnectors.userjawnieCountry of the recipient
dpa_urltextnonenieconnectors.userjawnieWhere the provider publishes its data processing agreement
eu_adequateselect (yes, no, verify)nonenieconnectors.userjawnieWhether transfers rest on EU or adequate-country processing: yes, no or verify with the provider
verify_notelongtextnonenieconnectors.userjawnieWhat to confirm with the provider before relying on these facts
allowed_hoststextnonenieconnectors.userjawnieHosts the provider connects to, comma separated; empty means the connection names its own
config_fieldslongtextnonenieconnectors.userjawnieSettings and credentials the provider needs, as a JSON list
setuplongtextnonenieconnectors.userjawnieSetup instructions
webhook_schemeselect (standard, github, stripe)nonenieconnectors.userjawnieSignature scheme of inbound webhooks
oauth_scopestextnonenieconnectors.userjawnieOAuth scopes requested, for OAuth providers
enabledboolnonenieconnectors.userjawnieAn administrator enabled the provider
users_may_useboolnonenieconnectors.userjawniePeople may connect their own accounts with it
dpa_recordedboolnonenieconnectors.userjawnieThe agreement with the provider is recorded
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenieconnectors.userjawnieLegal basis the administrator set for this provider
legal_basis_textlongtextnonenieconnectors.userjawnieText 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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
providertextnonenieconnectors.adminjawnieId of the provider this policy is for
enabledboolnonenieconnectors.adminjawnieThe provider may be connected at all
users_may_useboolnonenieconnectors.adminjawniePeople with connectors.user may connect their own accounts
allowed_grouptextnonenieconnectors.adminjawniePermission group that may use it; empty means connectors.user
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenieconnectors.adminjawnieLegal basis recorded for connections of this provider
legal_basis_textlongtextnonenieconnectors.adminjawnieText shown to people when they are asked for consent
dpa_recordedboolnonenieconnectors.adminjawnieA data processing agreement with the provider is in place
dpa_referencetextnonenieconnectors.adminjawnieWhere the agreement is kept or its reference
default_policylongtextnonenieconnectors.adminjawniePolicy JSON that new connections of this provider start with
oauth_client_idtextinternalnieconnectors.adminjawnieOAuth client id you registered with the provider
oauth_client_secretlongtextsecretnieconnectors.adminwstrzymaneOAuth 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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
nametextnonenieconnectors.userjawnieA name that tells you what the connection is for
providertextnonenieconnectors.userjawnieId of the provider from the catalogue
owner_scopeselect (instance, user)nonenieconnectors.userjawnieWhether the connection belongs to the instance or to one person
owner_usertextinternaltakconnectors.userzamaskowaneThe person who owns the connection
owner_groupstextnonenieconnectors.adminjawniePermission groups the owner held when the connection was last changed
stateselect (draft, connected, paused, error, revoked)nonenieconnectors.userjawnieWhere the connection is: draft, connected, paused, error or revoked
configlongtextnonenieconnectors.userjawnieNon-secret settings as a JSON object
credentialslongtextsecretnieconnectors.userwstrzymaneCredentials as a JSON object; write-only, stored encrypted, never returned
credentials_hinttextnonenieconnectors.userjawnieWhether credentials are set, with at most the last four characters
oauth_tokenslongtextsecretnieconnectors.userwstrzymaneOAuth tokens; write-only, stored encrypted, never returned
field_allowlistlongtextnonenieconnectors.userjawnieFields that may leave or be accepted, as a JSON object of model to field names; empty means nothing
policylongtextnonenieconnectors.userjawnieTreatment overrides by class or field and impact-assessment acknowledgements, as JSON
rate_limit_per_hournumbernonenieconnectors.userjawnieMost flows per hour
volume_cap_per_daynumbernonenieconnectors.userjawnieMost records per day
retention_daysnumbernonenieconnectors.userjawnieDays flow logs and runs are kept
created_attextnonenieconnectors.userjawnieWhen the connection was created
last_sync_attextnonenieconnectors.userjawnieWhen the connection last ran
last_errortextnonenieconnectors.userjawnieSummary of the last failure, without payloads
resultlongtextnonenieconnectors.userjawnieOutput of the last command (test, sync, authorisation link); never stored

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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
connectionref → connectionnonenieconnectors.userjawnieThe connection this basis is for
owner_usertextinternaltakconnectors.userzamaskowaneOwner of the connection
stateselect (active, withdrawn, superseded)nonenieconnectors.userjawnieactive, withdrawn, or superseded by a newer record
subject_kindselect (user, party, instance)nonenieconnectors.userjawnieWhose basis it is: a user, a party or the instance
subjecttextinternaltakconnectors.userzamaskowaneId of the party when the subject is a party
given_bytextinternaltakconnectors.userzamaskowaneWho recorded it
purposelongtextnonenieconnectors.userjawnieThe purpose the data is processed for
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenieconnectors.userjawnieconsent, contract, legitimate interest or legal obligation
notelongtextnonenieconnectors.userjawnieExplanation; for legitimate interest the balancing test
classestextnonenieconnectors.userjawnieData classes that may flow under this record, computed from the connection
fields_summarylongtextnonenieconnectors.userjawnieModels and fields that may flow, computed from the connection
recorded_attextnonenieconnectors.userjawnieWhen it was recorded
withdrawn_attextnonenieconnectors.userjawnieWhen it was withdrawn, if it was
withdrawn_bytextinternaltakconnectors.userzamaskowaneWho 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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
connectionref → connectionnonenieconnectors.userjawnieThe connection that ran
owner_usertextinternaltakconnectors.userzamaskowaneOwner of the connection
directionselect (inbound, outbound)nonenieconnectors.userjawnieWhether data went out or came in
kindselect (manual, event, pull, webhook, test)nonenieconnectors.userjawnieWhat started it
started_attextnonenieconnectors.userjawnieWhen it started
finished_attextnonenieconnectors.userjawnieWhen it ended
statusselect (running, succeeded, partial, failed, retrying, dead_letter)nonenieconnectors.userjawnieHow it ended
recordsnumbernonenieconnectors.userjawnieRecords sent or accepted
rejectednumbernonenieconnectors.userjawnieRecords refused
proposednumbernonenieconnectors.userjawnieChanges held for approval
error_summarytextnonenieconnectors.userjawnieWhy 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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
connectionref → connectionnonenieconnectors.userjawnieThe connection the flow belongs to
owner_usertextinternaltakconnectors.userzamaskowaneOwner of the connection
attextnonenieconnectors.userjawnieWhen it happened
directionselect (outbound, inbound)nonenieconnectors.userjawnieWhether data went out or came in
modeltextnonenieconnectors.userjawnieThe model the records belong to
record_countnumbernonenieconnectors.userjawnieHow many records
fields_senttextnonenieconnectors.userjawnieFields that left or were accepted, comma separated
fields_deniedtextnonenieconnectors.userjawnieFields the policy withheld, comma separated
masking_modetextnonenieconnectors.userjawnieTreatments applied, for example pseudonymise=2;allow=1
payload_hashtextnonenieconnectors.userjawnieSHA-256 of the payload after treatment
outcomeselect (released, received, refused, rejected, erased)nonenieconnectors.userjawniereleased, received, refused, rejected or erased
reasontextnonenieconnectors.userjawnieWhy 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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
connectionref → connectionnonenieconnectors.adminjawnieThe connection this row describes
nametextnonenieconnectors.adminjawnieName of the connection
statetextnonenieconnectors.adminjawnieState of the connection
owner_scopetextnonenieconnectors.adminjawnieInstance or user
owner_usertextinternaltakconnectors.adminzamaskowaneOwner of the connection
providertextnonenieconnectors.adminjawnieProvider id
recipientlongtextnonenieconnectors.adminjawnieWho receives the data (legal name)
recipient_countrytextnonenieconnectors.adminjawnieWhere the recipient is
purposelongtextnonenieconnectors.adminjawniePurpose of the processing
legal_basistextnonenieconnectors.adminjawnieRecorded legal basis
consent_recorded_attextnonenieconnectors.adminjawnieWhen the basis was recorded
data_subjectslongtextnonenieconnectors.adminjawnieCategories of data subjects
personal_data_categorieslongtextnonenieconnectors.adminjawnieCategories of personal data, with class and treatment
transfer_basislongtextnonenieconnectors.adminjawnieBasis for transfers to third countries
agreement_recordedtextnonenieconnectors.adminjawnieWhether the agreement with the recipient is recorded
retention_daystextnonenieconnectors.adminjawnieRetention of logs, in days
safeguardslongtextnonenieconnectors.adminjawnieTechnical and organisational measures
csvlongtextnonenieconnectors.adminjawnieThe 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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
flows_enabledboolnonenieconnectors.adminjawnieMaster switch: when off nothing leaves and nothing is accepted
eu_onlyboolnonenieconnectors.adminjawniePersonal data only goes to providers with an EU or adequacy basis
require_dpaboolnonenieconnectors.adminjawniePersonal data, even pseudonymised, only goes to providers whose agreement is recorded
host_allowlisttextnonenieconnectors.adminjawnieHosts connections may reach, comma separated; empty means no extra restriction
default_retention_daysnumbernonenieconnectors.adminjawnieRetention for logs of connections that no longer exist
resultlongtextnonenieconnectors.adminjawnieOutput 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.

PoleRodzajKlasa danychDane osoboweGrupaAgenci widząOpis
providertextnonenieconnectors.userjawnieProvider the preview is for
connectiontextnonenieconnectors.userjawnieAn existing connection to preview, instead of a provider
target_modeltextnonenieconnectors.userjawnieThe model to preview
record_idtextnonenieconnectors.userjawnieA record to use as the sample; empty means the first one
field_allowlistlongtextnonenieconnectors.userjawnieFields to include, as a JSON object of model to field names
policylongtextnonenieconnectors.userjawniePolicy JSON to preview
payloadlongtextnonenieconnectors.userjawnieThe payload after treatment, as JSON; never stored
treatmentslongtextnonenieconnectors.userjawnieEach field with its class and treatment, as JSON; never stored

Przepływy pracy ​

connection ​

AkcjaPrzenosiKto może uruchomićZatwierdzenie
connection.connectstate: draft → connectedconnectors.usertak
connection.pausestate: connected → pausedconnectors.usertak
connection.resumestate: paused → connectedconnectors.usertak
connection.retrystate: error → connectedconnectors.usertak
connection.revokestate: * → revokedconnectors.usertak
connection.test-connectors.usernie
connection.sync-connectors.usertak
connection.oauth_start-connectors.usernie
AkcjaPrzenosiKto może uruchomićZatwierdzenie
consent.withdrawstate: active → withdrawnconnectors.usertak

processing_register ​

AkcjaPrzenosiKto może uruchomićZatwierdzenie
processing_register.export_csv-connectors.adminnie

egress_policy ​

AkcjaPrzenosiKto może uruchomićZatwierdzenie
egress_policy.checklist-connectors.adminnie
egress_policy.purge-connectors.admintak

privacy_preview ​

AkcjaPrzenosiKto może uruchomićZatwierdzenie
privacy_preview.render-connectors.usernie

Grupy uprawnień ​

Grupy używane przez tę aplikację:

  • connectors.admin
  • connectors.user

Kroki zatwierdzania ​

Kroki, które agent może tylko zaproponować:

  • connection.connect
  • connection.pause
  • connection.resume
  • connection.retry
  • connection.revoke
  • connection.sync
  • consent.withdraw
  • egress_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