Connectors

Conectar sistemas, con controles RGPD

DisponibleBasemanifest

Para qué sirve ​

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.

Qué hace y qué no hace el paquete ​

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

Modelos ​

connector_provider ​

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

Grupo de lectura: connectors.user. Grupo de escritura: connectors.admin.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
nametextnonenoconnectors.useren claroName of the provider
categoryselect (generic, messaging, payments, developer, calendar_contacts, automation)nonenoconnectors.useren claroKind of service
maturityselect (working, generic_adapter, definition_only)nonenoconnectors.useren claroHow much of it exists: working, generic adapter or definition only
engineselect (webhook_out, webhook_in, rest_pull, csv_export, none)nonenoconnectors.useren claroThe generic engine that runs it
auth_kindselect (api_key, bearer_token, basic, oauth2, webhook_in, webhook_out, none)nonenoconnectors.useren claroHow the connection authenticates
directionselect (inbound, outbound, both)nonenoconnectors.useren claroWhether data flows in, out or both ways
max_classestextnonenoconnectors.useren claroData classes the provider may receive at most, comma separated
purposelongtextnonenoconnectors.useren claroWhat the provider is used for
descriptionlongtextnonenoconnectors.useren claroHow it works and what is tested
legal_nametextnonenoconnectors.useren claroLegal name of the recipient (sub-processor information)
countrytextnonenoconnectors.useren claroCountry of the recipient
dpa_urltextnonenoconnectors.useren claroWhere the provider publishes its data processing agreement
eu_adequateselect (yes, no, verify)nonenoconnectors.useren claroWhether transfers rest on EU or adequate-country processing: yes, no or verify with the provider
verify_notelongtextnonenoconnectors.useren claroWhat to confirm with the provider before relying on these facts
allowed_hoststextnonenoconnectors.useren claroHosts the provider connects to, comma separated; empty means the connection names its own
config_fieldslongtextnonenoconnectors.useren claroSettings and credentials the provider needs, as a JSON list
setuplongtextnonenoconnectors.useren claroSetup instructions
webhook_schemeselect (standard, github, stripe)nonenoconnectors.useren claroSignature scheme of inbound webhooks
oauth_scopestextnonenoconnectors.useren claroOAuth scopes requested, for OAuth providers
enabledboolnonenoconnectors.useren claroAn administrator enabled the provider
users_may_useboolnonenoconnectors.useren claroPeople may connect their own accounts with it
dpa_recordedboolnonenoconnectors.useren claroThe agreement with the provider is recorded
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenoconnectors.useren claroLegal basis the administrator set for this provider
legal_basis_textlongtextnonenoconnectors.useren claroText 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

Grupo de lectura: connectors.admin. Grupo de escritura: connectors.admin.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
providertextnonenoconnectors.adminen claroId of the provider this policy is for
enabledboolnonenoconnectors.adminen claroThe provider may be connected at all
users_may_useboolnonenoconnectors.adminen claroPeople with connectors.user may connect their own accounts
allowed_grouptextnonenoconnectors.adminen claroPermission group that may use it; empty means connectors.user
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenoconnectors.adminen claroLegal basis recorded for connections of this provider
legal_basis_textlongtextnonenoconnectors.adminen claroText shown to people when they are asked for consent
dpa_recordedboolnonenoconnectors.adminen claroA data processing agreement with the provider is in place
dpa_referencetextnonenoconnectors.adminen claroWhere the agreement is kept or its reference
default_policylongtextnonenoconnectors.adminen claroPolicy JSON that new connections of this provider start with
oauth_client_idtextinternalnoconnectors.adminen claroOAuth client id you registered with the provider
oauth_client_secretlongtextsecretnoconnectors.adminretenidoOAuth client secret; write-only, stored encrypted

connection ​

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

Grupo de lectura: connectors.user. Grupo de escritura: connectors.user.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
nametextnonenoconnectors.useren claroA name that tells you what the connection is for
providertextnonenoconnectors.useren claroId of the provider from the catalogue
owner_scopeselect (instance, user)nonenoconnectors.useren claroWhether the connection belongs to the instance or to one person
owner_usertextinternalsíconnectors.userenmascaradoThe person who owns the connection
owner_groupstextnonenoconnectors.adminen claroPermission groups the owner held when the connection was last changed
stateselect (draft, connected, paused, error, revoked)nonenoconnectors.useren claroWhere the connection is: draft, connected, paused, error or revoked
configlongtextnonenoconnectors.useren claroNon-secret settings as a JSON object
credentialslongtextsecretnoconnectors.userretenidoCredentials as a JSON object; write-only, stored encrypted, never returned
credentials_hinttextnonenoconnectors.useren claroWhether credentials are set, with at most the last four characters
oauth_tokenslongtextsecretnoconnectors.userretenidoOAuth tokens; write-only, stored encrypted, never returned
field_allowlistlongtextnonenoconnectors.useren claroFields that may leave or be accepted, as a JSON object of model to field names; empty means nothing
policylongtextnonenoconnectors.useren claroTreatment overrides by class or field and impact-assessment acknowledgements, as JSON
rate_limit_per_hournumbernonenoconnectors.useren claroMost flows per hour
volume_cap_per_daynumbernonenoconnectors.useren claroMost records per day
retention_daysnumbernonenoconnectors.useren claroDays flow logs and runs are kept
created_attextnonenoconnectors.useren claroWhen the connection was created
last_sync_attextnonenoconnectors.useren claroWhen the connection last ran
last_errortextnonenoconnectors.useren claroSummary of the last failure, without payloads
resultlongtextnonenoconnectors.useren claroOutput 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

Grupo de lectura: connectors.user. Grupo de escritura: connectors.user.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
connectionref → connectionnonenoconnectors.useren claroThe connection this basis is for
owner_usertextinternalsíconnectors.userenmascaradoOwner of the connection
stateselect (active, withdrawn, superseded)nonenoconnectors.useren claroactive, withdrawn, or superseded by a newer record
subject_kindselect (user, party, instance)nonenoconnectors.useren claroWhose basis it is: a user, a party or the instance
subjecttextinternalsíconnectors.userenmascaradoId of the party when the subject is a party
given_bytextinternalsíconnectors.userenmascaradoWho recorded it
purposelongtextnonenoconnectors.useren claroThe purpose the data is processed for
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)nonenoconnectors.useren claroconsent, contract, legitimate interest or legal obligation
notelongtextnonenoconnectors.useren claroExplanation; for legitimate interest the balancing test
classestextnonenoconnectors.useren claroData classes that may flow under this record, computed from the connection
fields_summarylongtextnonenoconnectors.useren claroModels and fields that may flow, computed from the connection
recorded_attextnonenoconnectors.useren claroWhen it was recorded
withdrawn_attextnonenoconnectors.useren claroWhen it was withdrawn, if it was
withdrawn_bytextinternalsíconnectors.userenmascaradoWho withdrew it

sync_run ​

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

Grupo de lectura: connectors.user. Grupo de escritura: connectors.admin.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
connectionref → connectionnonenoconnectors.useren claroThe connection that ran
owner_usertextinternalsíconnectors.userenmascaradoOwner of the connection
directionselect (inbound, outbound)nonenoconnectors.useren claroWhether data went out or came in
kindselect (manual, event, pull, webhook, test)nonenoconnectors.useren claroWhat started it
started_attextnonenoconnectors.useren claroWhen it started
finished_attextnonenoconnectors.useren claroWhen it ended
statusselect (running, succeeded, partial, failed, retrying, dead_letter)nonenoconnectors.useren claroHow it ended
recordsnumbernonenoconnectors.useren claroRecords sent or accepted
rejectednumbernonenoconnectors.useren claroRecords refused
proposednumbernonenoconnectors.useren claroChanges held for approval
error_summarytextnonenoconnectors.useren claroWhy 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

Grupo de lectura: connectors.user. Grupo de escritura: connectors.admin.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
connectionref → connectionnonenoconnectors.useren claroThe connection the flow belongs to
owner_usertextinternalsíconnectors.userenmascaradoOwner of the connection
attextnonenoconnectors.useren claroWhen it happened
directionselect (outbound, inbound)nonenoconnectors.useren claroWhether data went out or came in
modeltextnonenoconnectors.useren claroThe model the records belong to
record_countnumbernonenoconnectors.useren claroHow many records
fields_senttextnonenoconnectors.useren claroFields that left or were accepted, comma separated
fields_deniedtextnonenoconnectors.useren claroFields the policy withheld, comma separated
masking_modetextnonenoconnectors.useren claroTreatments applied, for example pseudonymise=2;allow=1
payload_hashtextnonenoconnectors.useren claroSHA-256 of the payload after treatment
outcomeselect (released, received, refused, rejected, erased)nonenoconnectors.useren claroreleased, received, refused, rejected or erased
reasontextnonenoconnectors.useren claroWhy 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

Grupo de lectura: connectors.admin. Grupo de escritura: connectors.admin.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
connectionref → connectionnonenoconnectors.adminen claroThe connection this row describes
nametextnonenoconnectors.adminen claroName of the connection
statetextnonenoconnectors.adminen claroState of the connection
owner_scopetextnonenoconnectors.adminen claroInstance or user
owner_usertextinternalsíconnectors.adminenmascaradoOwner of the connection
providertextnonenoconnectors.adminen claroProvider id
recipientlongtextnonenoconnectors.adminen claroWho receives the data (legal name)
recipient_countrytextnonenoconnectors.adminen claroWhere the recipient is
purposelongtextnonenoconnectors.adminen claroPurpose of the processing
legal_basistextnonenoconnectors.adminen claroRecorded legal basis
consent_recorded_attextnonenoconnectors.adminen claroWhen the basis was recorded
data_subjectslongtextnonenoconnectors.adminen claroCategories of data subjects
personal_data_categorieslongtextnonenoconnectors.adminen claroCategories of personal data, with class and treatment
transfer_basislongtextnonenoconnectors.adminen claroBasis for transfers to third countries
agreement_recordedtextnonenoconnectors.adminen claroWhether the agreement with the recipient is recorded
retention_daystextnonenoconnectors.adminen claroRetention of logs, in days
safeguardslongtextnonenoconnectors.adminen claroTechnical and organisational measures
csvlongtextnonenoconnectors.adminen claroThe 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

Grupo de lectura: connectors.admin. Grupo de escritura: connectors.admin.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
flows_enabledboolnonenoconnectors.adminen claroMaster switch: when off nothing leaves and nothing is accepted
eu_onlyboolnonenoconnectors.adminen claroPersonal data only goes to providers with an EU or adequacy basis
require_dpaboolnonenoconnectors.adminen claroPersonal data, even pseudonymised, only goes to providers whose agreement is recorded
host_allowlisttextnonenoconnectors.adminen claroHosts connections may reach, comma separated; empty means no extra restriction
default_retention_daysnumbernonenoconnectors.adminen claroRetention for logs of connections that no longer exist
resultlongtextnonenoconnectors.adminen claroOutput 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

Grupo de lectura: connectors.user. Grupo de escritura: connectors.user.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
providertextnonenoconnectors.useren claroProvider the preview is for
connectiontextnonenoconnectors.useren claroAn existing connection to preview, instead of a provider
target_modeltextnonenoconnectors.useren claroThe model to preview
record_idtextnonenoconnectors.useren claroA record to use as the sample; empty means the first one
field_allowlistlongtextnonenoconnectors.useren claroFields to include, as a JSON object of model to field names
policylongtextnonenoconnectors.useren claroPolicy JSON to preview
payloadlongtextnonenoconnectors.useren claroThe payload after treatment, as JSON; never stored
treatmentslongtextnonenoconnectors.useren claroEach field with its class and treatment, as JSON; never stored

Flujos de trabajo ​

connection ​

AcciónMueveQuién puede ejecutarlaAprobación
connection.connectstate: draft → connectedconnectors.usersí
connection.pausestate: connected → pausedconnectors.usersí
connection.resumestate: paused → connectedconnectors.usersí
connection.retrystate: error → connectedconnectors.usersí
connection.revokestate: * → revokedconnectors.usersí
connection.test-connectors.userno
connection.sync-connectors.usersí
connection.oauth_start-connectors.userno
AcciónMueveQuién puede ejecutarlaAprobación
consent.withdrawstate: active → withdrawnconnectors.usersí

processing_register ​

AcciónMueveQuién puede ejecutarlaAprobación
processing_register.export_csv-connectors.adminno

egress_policy ​

AcciónMueveQuién puede ejecutarlaAprobación
egress_policy.checklist-connectors.adminno
egress_policy.purge-connectors.adminsí

privacy_preview ​

AcciónMueveQuién puede ejecutarlaAprobación
privacy_preview.render-connectors.userno

Grupos de permisos ​

Grupos que usa esta aplicación:

  • connectors.admin
  • connectors.user

Pasos con aprobación ​

Pasos que un agente solo puede proponer:

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

Qué pueden y qué no pueden hacer los agentes ​

Un agente puede leer, buscar, crear y actualizar registros de esta aplicación, y ejecutar las acciones que no requieren aprobación, dentro de los grupos de permisos de su token.

Solo puede proponer estos pasos, y una persona debe aprobarlos: 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.

Los datos personales se enmascaran como tokens marcadores: 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.

Estos campos se retienen por completo y los agentes no los ven: provider_policy.oauth_client_secret, connection.credentials, connection.oauth_tokens.

Dependencias ​

Ninguna.

Instalación ​

Incluida. Está disponible en todas las instancias y no se puede quitar.

Crea la tuya ​

La guía de módulos explica cómo se escriben aplicaciones como esta