-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generate + make third-party consent API requests #2144
Comments
my gut feeling is that there won't be significant duplication/overlap between DSR endpoints and consent endpoints, to the point that they're hitting the same to throw it out there - my initial idea on how we'd model this is that we'd actually just use a different
to me that felt like it'd fit pretty seamlessly into what @pattisdr's done so far in the POC, given that we've got essentially an analogous execution path for in fact, now that i think through it more, i actually think the top-level sections option that you offered makes the most sense out of all 3 options laid out - it may lend itself better to differentiate the dataset generation from what is done in DSR execution, i.e. it'd probably give an easier route to decoupling nodes from particular dataset collections, which seems like something we'll want, at a minimum. and based on what i've seen in the consent APIs so far, i'm just not sure there's really a logical grouping between the |
This will be useful — we'll certainly want to leave our commercialisation options open too. |
I agree with @adamsachs that the consent endpoints would most likely be separate from the data endpoints we use for access and erasure requests. With that said, I agree with @seanpreston's proposal to add a new top-level section. This is consistent with the way we already define dedicated requests like
This assumes we require read functionality as well but if we're just update consent settings we can simplify it to
This approach has the benefit of keeping these two workflows separate in the config and it makes it easier to refer to since it will be at the root level instead of nested with the access and erasure requests. |
@galvana nice proposal: Adding a new top-level section similar to @galvana @adamsachs Are my assumptions correct: ?
|
@pattisdr that generally looks correct to me! i think you're getting at this, but in some ways the just as a caveat, take this with a grain of salt, as i haven't fully thought this piece through 😄 more of an initial impression and i'll continue to think it over on my end... |
@adamsachs I understand your point, we don't technically need a DatasetConfig per se, but I do think we need some database artifact that we query from which to build the graph. Further, if we don't require a DatasetConfig, then we need a separate set of code changes to handle resources not backed by DatasetConfigs, and is that worth the lift? So a thought experiment: what if everything we need to make the consent request is stored in ConnectionConfig.saas_config, so we don't create a DatasetConfig there. What are the next steps? I can build the graph by querying for ConnectionConfigs with consent capability directly. But how is that ConnectionConfig created in the first place? Our connector workflow creates DatasetConfigs by default in the "create from a template" flow. And what happens if a certain type of Saas Connector needs to support both |
@pattisdr thanks for walking through that, very helpful to get it all spelled out! i think we're on the same page, i just wanted to run that idea through to its conclusions. based on what you've spelled out, it is feeling to me like requiring a sort of "placeholder" |
@adamsachs your calling it a "placeholder" is making me second guess myself. I was still hoping that there might be useful information in the dataset yaml file, similar to how a mailchimp dataset yaml details the fields in various API requests. That we may not need to use it, but there would still be information worth persisting there. But if there's truly nothing to put in the DatasetConfig resource, that probably changes things. (The pending release of Also is this not going to be a connector of type |
honestly i haven't given this the thought it deserves quite yet, i may have misstated things by calling it a placeholder, perhaps there is information we'd want to store there. i think we need to spend some time looking at the consent propagation APIs and fleshing out what a config schema would look like more precisely. to me, the assumption of yours here
seems pretty reasonable to design around at this point. does that allow you to keep you going and let us come back to this a bit later once we can consider the details a bit more closely? apologies for starting a digression that i hadn't really thought through. if it's blocking you now, i can prioritize some closer thinking on this now :) |
That sounds fine to me @adamsachs! My POC branch makes the assumption you stated, I should have it ready for review by tomorrow morning! Assuming there's a DatasetConfig is an easy place to start, and we can modify from there. |
We settled on a simple configuration here #2194, where we have a top-level The current assumption that the consent saas connector framework makes is that a consent request will be sent with a single data use, and the saas connector just needs to pick whether it should opt in or opt out. More product discussion is needed to determine the mapping between data uses and more nuanced consent requests. Mailchimp Transactional SaaS Config saas_config:
fides_key: <instance_fides_key>
name: Mailchimp Transactional SaaS Config
type: mailchimp_transactional
description: A sample schema representing the Mailchimp Transactional (Mandrill) connector for Fides
version: 0.0.1
connector_params:
- name: domain
default_value: mandrillapp.com/api/1.0
- name: api_key
client_config:
protocol: https
host: <domain>
authentication:
strategy: api_key
configuration:
body: |
{
"key": "<api_key>"
}
test_request:
method: GET
path: /users/ping
consent_requests:
opt_in:
method: POST
path: /allowlists/add
body: |
{
"email": "<email>"
}
opt_out:
method: POST
path: /allowlists/delete
body: |
{
"email": "<email>"
}
endpoints: [] Mailchimp Transactional SaaS Dataset dataset:
- fides_key: <instance_fides_key>
name: Mailchimp Transactional Dataset
description: A sample dataset representing the Mailchimp Transactional connector for Fides
collections: [] |
My basic proposal for this is to take the existing SaaS connector config and extend the DDL such that inside
run_consent_request
we can build + execute all requests required to execute the consent flow.One idea I've had for this would be to add something akin to a
used_for
value to each request definition, e.g.A downside to this would be bloat within the config files themselves should either DSR or consent processing require a large number of requests — is this preferable to having two top-level sections? e.g.
and then eating any request duplication that happens as a result? (ie. requests that must exist in both DSR and consent flows)
Note: this doesn't address the dataset generation issue — I'm happy to keep Dawn's workaround for the time being.
If we can agree upon one of the above as the end-state solution, it leaves us open to hard-coding the Mandrill case inside the
run_consent_request
method (with a check on the type of connector)The text was updated successfully, but these errors were encountered: