Connectors

Anslut system, med GDPR-kontroller

TillgängligGrundenmanifest

Vad den är till för ​

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.

Vad paketet gör och inte gör ​

Connect external systems and let people connect their own accounts, with the controls that support GDPR compliance built in.

Modeller ​

connector_provider ​

A service or protocol a connection can use, from the catalogue shipped with obop

Läsgrupp: connectors.user. Skrivgrupp: connectors.admin.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
nametextnonenejconnectors.useri klartextName of the provider
categoryselect (generic, messaging, payments, developer, calendar_contacts, automation)nonenejconnectors.useri klartextKind of service
maturityselect (working, generic_adapter, definition_only)nonenejconnectors.useri klartextHow much of it exists: working, generic adapter or definition only
engineselect (webhook_out, webhook_in, rest_pull, csv_export, none)nonenejconnectors.useri klartextThe generic engine that runs it
auth_kindselect (api_key, bearer_token, basic, oauth2, webhook_in, webhook_out, none)nonenejconnectors.useri klartextHow the connection authenticates
directionselect (inbound, outbound, both)nonenejconnectors.useri klartextWhether data flows in, out or both ways
max_classestextnonenejconnectors.useri klartextData classes the provider may receive at most, comma separated
purposelongtextnonenejconnectors.useri klartextWhat the provider is used for
descriptionlongtextnonenejconnectors.useri klartextHow it works and what is tested
legal_nametextnonenejconnectors.useri klartextLegal name of the recipient (sub-processor information)
countrytextnonenejconnectors.useri klartextCountry of the recipient
dpa_urltextnonenejconnectors.useri klartextWhere the provider publishes its data processing agreement
eu_adequateselect (yes, no, verify)nonenejconnectors.useri klartextWhether transfers rest on EU or adequate-country processing: yes, no or verify with the provider
verify_notelongtextnonenejconnectors.useri klartextWhat to confirm with the provider before relying on these facts
allowed_hoststextnonenejconnectors.useri klartextHosts the provider connects to, comma separated; empty means the connection names its own
config_fieldslongtextnonenejconnectors.useri klartextSettings and credentials the provider needs, as a JSON list
setuplongtextnonenejconnectors.useri klartextSetup instructions
webhook_schemeselect (standard, github, stripe)nonenejconnectors.useri klartextSignature scheme of inbound webhooks
oauth_scopestextnonenejconnectors.useri klartextOAuth scopes requested, for OAuth providers
enabledboolnonenejconnectors.useri klartextAn administrator enabled the provider
users_may_useboolnonenejconnectors.useri klartextPeople may connect their own accounts with it
dpa_recordedboolnonenejconnectors.useri klartextThe agreement with the provider is recorded
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenejconnectors.useri klartextLegal basis the administrator set for this provider
legal_basis_textlongtextnonenejconnectors.useri klartextText 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

Läsgrupp: connectors.admin. Skrivgrupp: connectors.admin.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
providertextnonenejconnectors.admini klartextId of the provider this policy is for
enabledboolnonenejconnectors.admini klartextThe provider may be connected at all
users_may_useboolnonenejconnectors.admini klartextPeople with connectors.user may connect their own accounts
allowed_grouptextnonenejconnectors.admini klartextPermission group that may use it; empty means connectors.user
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenejconnectors.admini klartextLegal basis recorded for connections of this provider
legal_basis_textlongtextnonenejconnectors.admini klartextText shown to people when they are asked for consent
dpa_recordedboolnonenejconnectors.admini klartextA data processing agreement with the provider is in place
dpa_referencetextnonenejconnectors.admini klartextWhere the agreement is kept or its reference
default_policylongtextnonenejconnectors.admini klartextPolicy JSON that new connections of this provider start with
oauth_client_idtextinternalnejconnectors.admini klartextOAuth client id you registered with the provider
oauth_client_secretlongtextsecretnejconnectors.adminundanhållenOAuth client secret; write-only, stored encrypted

connection ​

A link to one external system, with its credentials, field allowlist, policy and state

Läsgrupp: connectors.user. Skrivgrupp: connectors.user.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
nametextnonenejconnectors.useri klartextA name that tells you what the connection is for
providertextnonenejconnectors.useri klartextId of the provider from the catalogue
owner_scopeselect (instance, user)nonenejconnectors.useri klartextWhether the connection belongs to the instance or to one person
owner_usertextinternaljaconnectors.usermaskeradThe person who owns the connection
owner_groupstextnonenejconnectors.admini klartextPermission groups the owner held when the connection was last changed
stateselect (draft, connected, paused, error, revoked)nonenejconnectors.useri klartextWhere the connection is: draft, connected, paused, error or revoked
configlongtextnonenejconnectors.useri klartextNon-secret settings as a JSON object
credentialslongtextsecretnejconnectors.userundanhållenCredentials as a JSON object; write-only, stored encrypted, never returned
credentials_hinttextnonenejconnectors.useri klartextWhether credentials are set, with at most the last four characters
oauth_tokenslongtextsecretnejconnectors.userundanhållenOAuth tokens; write-only, stored encrypted, never returned
field_allowlistlongtextnonenejconnectors.useri klartextFields that may leave or be accepted, as a JSON object of model to field names; empty means nothing
policylongtextnonenejconnectors.useri klartextTreatment overrides by class or field and impact-assessment acknowledgements, as JSON
rate_limit_per_hournumbernonenejconnectors.useri klartextMost flows per hour
volume_cap_per_daynumbernonenejconnectors.useri klartextMost records per day
retention_daysnumbernonenejconnectors.useri klartextDays flow logs and runs are kept
created_attextnonenejconnectors.useri klartextWhen the connection was created
last_sync_attextnonenejconnectors.useri klartextWhen the connection last ran
last_errortextnonenejconnectors.useri klartextSummary of the last failure, without payloads
resultlongtextnonenejconnectors.useri klartextOutput 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

Läsgrupp: connectors.user. Skrivgrupp: connectors.user.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
connectionref → connectionnonenejconnectors.useri klartextThe connection this basis is for
owner_usertextinternaljaconnectors.usermaskeradOwner of the connection
stateselect (active, withdrawn, superseded)nonenejconnectors.useri klartextactive, withdrawn, or superseded by a newer record
subject_kindselect (user, party, instance)nonenejconnectors.useri klartextWhose basis it is: a user, a party or the instance
subjecttextinternaljaconnectors.usermaskeradId of the party when the subject is a party
given_bytextinternaljaconnectors.usermaskeradWho recorded it
purposelongtextnonenejconnectors.useri klartextThe purpose the data is processed for
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenejconnectors.useri klartextconsent, contract, legitimate interest or legal obligation
notelongtextnonenejconnectors.useri klartextExplanation; for legitimate interest the balancing test
classestextnonenejconnectors.useri klartextData classes that may flow under this record, computed from the connection
fields_summarylongtextnonenejconnectors.useri klartextModels and fields that may flow, computed from the connection
recorded_attextnonenejconnectors.useri klartextWhen it was recorded
withdrawn_attextnonenejconnectors.useri klartextWhen it was withdrawn, if it was
withdrawn_bytextinternaljaconnectors.usermaskeradWho withdrew it

sync_run ​

One run of a connection: when, how many records, and how it ended; never the data

Läsgrupp: connectors.user. Skrivgrupp: connectors.admin.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
connectionref → connectionnonenejconnectors.useri klartextThe connection that ran
owner_usertextinternaljaconnectors.usermaskeradOwner of the connection
directionselect (inbound, outbound)nonenejconnectors.useri klartextWhether data went out or came in
kindselect (manual, event, pull, webhook, test)nonenejconnectors.useri klartextWhat started it
started_attextnonenejconnectors.useri klartextWhen it started
finished_attextnonenejconnectors.useri klartextWhen it ended
statusselect (running, succeeded, partial, failed, retrying, dead_letter)nonenejconnectors.useri klartextHow it ended
recordsnumbernonenejconnectors.useri klartextRecords sent or accepted
rejectednumbernonenejconnectors.useri klartextRecords refused
proposednumbernonenejconnectors.useri klartextChanges held for approval
error_summarytextnonenejconnectors.useri klartextWhy 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

Läsgrupp: connectors.user. Skrivgrupp: connectors.admin.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
connectionref → connectionnonenejconnectors.useri klartextThe connection the flow belongs to
owner_usertextinternaljaconnectors.usermaskeradOwner of the connection
attextnonenejconnectors.useri klartextWhen it happened
directionselect (outbound, inbound)nonenejconnectors.useri klartextWhether data went out or came in
modeltextnonenejconnectors.useri klartextThe model the records belong to
record_countnumbernonenejconnectors.useri klartextHow many records
fields_senttextnonenejconnectors.useri klartextFields that left or were accepted, comma separated
fields_deniedtextnonenejconnectors.useri klartextFields the policy withheld, comma separated
masking_modetextnonenejconnectors.useri klartextTreatments applied, for example pseudonymise=2;allow=1
payload_hashtextnonenejconnectors.useri klartextSHA-256 of the payload after treatment
outcomeselect (released, received, refused, rejected, erased)nonenejconnectors.useri klartextreleased, received, refused, rejected or erased
reasontextnonenejconnectors.useri klartextWhy 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

Läsgrupp: connectors.admin. Skrivgrupp: connectors.admin.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
connectionref → connectionnonenejconnectors.admini klartextThe connection this row describes
nametextnonenejconnectors.admini klartextName of the connection
statetextnonenejconnectors.admini klartextState of the connection
owner_scopetextnonenejconnectors.admini klartextInstance or user
owner_usertextinternaljaconnectors.adminmaskeradOwner of the connection
providertextnonenejconnectors.admini klartextProvider id
recipientlongtextnonenejconnectors.admini klartextWho receives the data (legal name)
recipient_countrytextnonenejconnectors.admini klartextWhere the recipient is
purposelongtextnonenejconnectors.admini klartextPurpose of the processing
legal_basistextnonenejconnectors.admini klartextRecorded legal basis
consent_recorded_attextnonenejconnectors.admini klartextWhen the basis was recorded
data_subjectslongtextnonenejconnectors.admini klartextCategories of data subjects
personal_data_categorieslongtextnonenejconnectors.admini klartextCategories of personal data, with class and treatment
transfer_basislongtextnonenejconnectors.admini klartextBasis for transfers to third countries
agreement_recordedtextnonenejconnectors.admini klartextWhether the agreement with the recipient is recorded
retention_daystextnonenejconnectors.admini klartextRetention of logs, in days
safeguardslongtextnonenejconnectors.admini klartextTechnical and organisational measures
csvlongtextnonenejconnectors.admini klartextThe 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

Läsgrupp: connectors.admin. Skrivgrupp: connectors.admin.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
flows_enabledboolnonenejconnectors.admini klartextMaster switch: when off nothing leaves and nothing is accepted
eu_onlyboolnonenejconnectors.admini klartextPersonal data only goes to providers with an EU or adequacy basis
require_dpaboolnonenejconnectors.admini klartextPersonal data, even pseudonymised, only goes to providers whose agreement is recorded
host_allowlisttextnonenejconnectors.admini klartextHosts connections may reach, comma separated; empty means no extra restriction
default_retention_daysnumbernonenejconnectors.admini klartextRetention for logs of connections that no longer exist
resultlongtextnonenejconnectors.admini klartextOutput 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

Läsgrupp: connectors.user. Skrivgrupp: connectors.user.

FältTypDataklassPersonuppgiftGruppAgenter serBeskrivning
providertextnonenejconnectors.useri klartextProvider the preview is for
connectiontextnonenejconnectors.useri klartextAn existing connection to preview, instead of a provider
target_modeltextnonenejconnectors.useri klartextThe model to preview
record_idtextnonenejconnectors.useri klartextA record to use as the sample; empty means the first one
field_allowlistlongtextnonenejconnectors.useri klartextFields to include, as a JSON object of model to field names
policylongtextnonenejconnectors.useri klartextPolicy JSON to preview
payloadlongtextnonenejconnectors.useri klartextThe payload after treatment, as JSON; never stored
treatmentslongtextnonenejconnectors.useri klartextEach field with its class and treatment, as JSON; never stored

Arbetsflöden ​

connection ​

ÅtgärdFlyttarVem får köra denGodkännande
connection.connectstate: draft → connectedconnectors.userja
connection.pausestate: connected → pausedconnectors.userja
connection.resumestate: paused → connectedconnectors.userja
connection.retrystate: error → connectedconnectors.userja
connection.revokestate: * → revokedconnectors.userja
connection.test-connectors.usernej
connection.sync-connectors.userja
connection.oauth_start-connectors.usernej
ÅtgärdFlyttarVem får köra denGodkännande
consent.withdrawstate: active → withdrawnconnectors.userja

processing_register ​

ÅtgärdFlyttarVem får köra denGodkännande
processing_register.export_csv-connectors.adminnej

egress_policy ​

ÅtgärdFlyttarVem får köra denGodkännande
egress_policy.checklist-connectors.adminnej
egress_policy.purge-connectors.adminja

privacy_preview ​

ÅtgärdFlyttarVem får köra denGodkännande
privacy_preview.render-connectors.usernej

Behörighetsgrupper ​

Grupper som den här appen använder:

  • connectors.admin
  • connectors.user

Steg som kräver godkännande ​

Steg som en agent bara kan föreslå:

  • connection.connect
  • connection.pause
  • connection.resume
  • connection.retry
  • connection.revoke
  • connection.sync
  • consent.withdraw
  • egress_policy.purge

Vad agenter kan och inte kan göra ​

En agent kan läsa, söka, skapa och uppdatera poster i den här appen, och köra de åtgärder som inte kräver godkännande, inom behörighetsgrupperna för sin token.

Den kan bara föreslå de här stegen, och en person måste godkänna dem: 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.

Personuppgifter maskeras som platshållare: 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.

De här fälten undanhålls helt från agenter: provider_policy.oauth_client_secret, connection.credentials, connection.oauth_tokens.

Beroenden ​

Inga.

Installera ​

Inbyggd. Den finns i varje instans och kan inte tas bort.

Bygg din egen ​

Modulguiden visar hur appar som den här skrivs