Tech @ GoCardless
Published in

Tech @ GoCardless

Implementing Data Contracts at GoCardless

A brief introduction to Data Contracts

High-level overview of Data Contracts

Building on top of our infrastructure platform

Utopia application in ArgoCD

Defining a Data Contract

{
contract: new() {
metadata+: {
name: 'bank_account_information',
description: 'Information on bank accounts used for ...',
},
schema+: {
versions: [
new_version('1', anonymisation_strategy.overwrite,
[
field(
'bank_account_id',
'Unique identifier for a specific bank account, following the standard GC ID format.',
data_types.string,
field_category.gocardless_internal,
is_personal_data.yes,
personal_data_identifier.indirect,
field_anonymisation_strategy.none,
required=true,
primary_key=true,
),
field(
'account_balance',
'Payer\'s account balance. May be positive or negative.',
data_types.double,
field_category.payer_confidential,
is_personal_data.yes,
personal_data_identifier.direct,
field_anonymisation_strategy.nilable
),
field(
'account_holder_name',
'Payer\'s account holder name, as entered by the payer.',
data_types.string,
field_category.payer_confidential,
is_personal_data.yes,
personal_data_identifier.direct,
field_anonymisation_strategy.hex
),
],
[ ddrSubject('bank_accounts', "bank_account_id") ], ) + withPubSub() + withBigQuery(),
],
},
},
}

Deploying the Data Contract

Deploying the Data Contract resources
Screenshot of our Data Catalog

It’s not all about the implementation

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store