From 411836d5513ffb660f1edf95435cb7d9d1fb8a48 Mon Sep 17 00:00:00 2001 From: Todd Kazakov Date: Mon, 21 Jul 2025 09:28:25 +0300 Subject: [PATCH 1/4] Add API docs for user consent records --- reference/auth.v1.yaml | 155 +++++++++++++++++- reference/auth/models/consent/consent.v1.yaml | 30 ++++ .../auth/models/consent/consentrecord.v1.yaml | 0 .../auth/models/consent/consents.v1.yaml | 20 +++ .../auth/models/consent/metadata.v1.yaml | 22 +++ reference/auth/models/consent/record.v1.yaml | 64 ++++++++ .../auth/models/consent/recordcreate.v1.yaml | 9 + reference/auth/models/consent/records.v1.yaml | 20 +++ .../auth/models/consent/recordupdate.v1.yaml | 13 ++ 9 files changed, 332 insertions(+), 1 deletion(-) create mode 100644 reference/auth/models/consent/consent.v1.yaml create mode 100644 reference/auth/models/consent/consentrecord.v1.yaml create mode 100644 reference/auth/models/consent/consents.v1.yaml create mode 100644 reference/auth/models/consent/metadata.v1.yaml create mode 100644 reference/auth/models/consent/record.v1.yaml create mode 100644 reference/auth/models/consent/recordcreate.v1.yaml create mode 100644 reference/auth/models/consent/records.v1.yaml create mode 100644 reference/auth/models/consent/recordupdate.v1.yaml diff --git a/reference/auth.v1.yaml b/reference/auth.v1.yaml index 463d79e8..a0144fef 100644 --- a/reference/auth.v1.yaml +++ b/reference/auth.v1.yaml @@ -405,7 +405,7 @@ paths: get: operationId: VerifyDeviceToken summary: Verify Device Token - description: "Checks the validity of Apple's DeviceCheck token by calling Apple's server to verify it. For more details, see Apple's [developer documentation](https://developer.apple.com/documentation/devicecheck)." + description: 'Checks the validity of Apple''s DeviceCheck token by calling Apple''s server to verify it. For more details, see Apple''s [developer documentation](https://developer.apple.com/documentation/devicecheck).' requestBody: $ref: '#/components/requestBodies/VerifyDeviceToken' responses: @@ -680,6 +680,159 @@ paths: - sessionToken: [] tags: - Internal + /v1/consents: + get: + summary: List Consents + tags: [] + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ./auth/models/consent/consents.v1.yaml + operationId: ListConsents + description: Retrieves the list of all different consent types and their content. By default returns only the latest version for each consent type. This can be override by setting the `version` query parameter to `all` + requestBody: + content: {} + parameters: + - schema: + type: string + enum: + - latest + - all + default: latest + in: query + name: version + description: Whether to return all versions or only the most recent one. + parameters: [] + '/v1/consents/{type}': + parameters: + - schema: + type: string + name: type + in: path + required: true + get: + summary: Get Latest Consent By Type + tags: [] + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ./auth/models/consent/consent.v1.yaml + operationId: GetLatestConsentByType + description: Returns the latest consent version for the given type + '/v1/consent/{type}/versions': + parameters: + - schema: + type: string + name: type + in: path + required: true + get: + summary: Get Consent Versions + tags: [] + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ./auth/models/consent/consents.v1.yaml + operationId: GetConentVersions + description: Returns a list of all consent versions for a given type + '/v1/users/{userId}/consents': + parameters: + - schema: + type: string + name: userId + in: path + required: true + get: + summary: Get User Consent Records + tags: [] + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ./auth/models/consent/records.v1.yaml + operationId: GetUserConsentRecords + description: Returns a list of all user consent records. By default only the most recent consent record for a given consent type will be returned. This can be overriden by setting the `version` query parameter to `all`. + parameters: + - schema: + type: string + enum: + - latest + - all + default: latest + in: query + name: version + description: Whether to return all versions or only the most recent one. + - schema: + type: string + in: query + name: type + post: + summary: Create User Consent Record + operationId: CreateUserConsentRecord + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ./auth/models/consent/record.v1.yaml + description: Creates a user consent record + requestBody: + content: + application/json: + schema: + $ref: ./auth/models/consent/recordcreate.v1.yaml + '/v1/users/{userId}/consents/{recordId}': + parameters: + - schema: + type: string + name: userId + in: path + required: true + - schema: + type: string + name: recordId + in: path + required: true + get: + summary: Get User Consent Record + tags: [] + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ./auth/models/consent/record.v1.yaml + operationId: GetUserConsentRecord + description: Retrieves a consent record by ID for a given user. + patch: + summary: '' + operationId: UpdateUserConsentRecord + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ./auth/models/consent/record.v1.yaml + description: '' + requestBody: + content: + application/json: + schema: + $ref: ./auth/models/consent/recordupdate.v1.yaml components: securitySchemes: basicAuth: diff --git a/reference/auth/models/consent/consent.v1.yaml b/reference/auth/models/consent/consent.v1.yaml new file mode 100644 index 00000000..6e78bf05 --- /dev/null +++ b/reference/auth/models/consent/consent.v1.yaml @@ -0,0 +1,30 @@ +title: Consent +description: Consent +type: object +properties: + type: + description: Test + type: string + version: + type: integer + example: 1 + x-stoplight: + id: 13aoxi0q1a5dq + minimum: 1 + readOnly: true + content: + type: string + contentType: + type: string + enum: + - markdown + createdTime: + type: string + format: date-time + readOnly: true +required: + - type + - version + - content + - contentType + - createdTime diff --git a/reference/auth/models/consent/consentrecord.v1.yaml b/reference/auth/models/consent/consentrecord.v1.yaml new file mode 100644 index 00000000..e69de29b diff --git a/reference/auth/models/consent/consents.v1.yaml b/reference/auth/models/consent/consents.v1.yaml new file mode 100644 index 00000000..a139c60a --- /dev/null +++ b/reference/auth/models/consent/consents.v1.yaml @@ -0,0 +1,20 @@ +title: consents.v1 +x-stoplight: + id: o02joytb2fxay +type: object +properties: + data: + x-stoplight: + id: iepviv3jm8m9m + type: array + items: + $ref: ./consent.v1.yaml + x-stoplight: + id: 22oi76x2nbqnp + count: + type: integer + x-stoplight: + id: jsfxo40v5vj0g +required: + - data + - count diff --git a/reference/auth/models/consent/metadata.v1.yaml b/reference/auth/models/consent/metadata.v1.yaml new file mode 100644 index 00000000..2bf43162 --- /dev/null +++ b/reference/auth/models/consent/metadata.v1.yaml @@ -0,0 +1,22 @@ +title: metadata.v1 +x-stoplight: + id: 8ctwq6xjg496g +type: object +properties: + supportedOrganizations: + type: array + uniqueItems: true + description: The list of supported organizations when the consent grant is for the Tidepool Big Data Donation Project + items: + x-stoplight: + id: iew30v83r2ce5 + type: string + enum: + - ADCES Foundation + - Beyond Type 1 + - Children With Diabetes + - The Diabetes Link + - Diabetes Youth Families (DYF) + - DiabetesSisters + - The diaTribe Foundation + - Breakthrough T1D diff --git a/reference/auth/models/consent/record.v1.yaml b/reference/auth/models/consent/record.v1.yaml new file mode 100644 index 00000000..ac0cea82 --- /dev/null +++ b/reference/auth/models/consent/record.v1.yaml @@ -0,0 +1,64 @@ +title: record.v1 +x-stoplight: + id: nvtrxa89tps30 +type: object +properties: + id: + type: string + minLength: 1 + readOnly: true + status: + type: string + x-stoplight: + id: m5tc1errbouci + enum: + - active + - revoked + readOnly: true + type: + type: string + x-stoplight: + id: jub0w6n4sx03g + minLength: 1 + maxLength: 100 + version: + type: integer + x-stoplight: + id: s4pt6ptt7ez4n + minimum: 1 + grantTime: + type: string + x-stoplight: + id: z984vbbyzt0n5 + format: date-time + readOnly: true + revocationTime: + type: string + x-stoplight: + id: 9hx9eo1oucsak + format: date-time + readOnly: true + createdTime: + type: string + x-stoplight: + id: r7ypd0pfkbhkv + format: date-time + readOnly: true + updatedTime: + type: string + x-stoplight: + id: ohlc8mndn74ov + format: date-time + readOnly: true + metadata: + $ref: ./metadata.v1.yaml + x-stoplight: + id: u4fzjwa9iivzp +required: + - id + - status + - type + - version + - grantTime + - createdTime + - updatedTime diff --git a/reference/auth/models/consent/recordcreate.v1.yaml b/reference/auth/models/consent/recordcreate.v1.yaml new file mode 100644 index 00000000..288b0aba --- /dev/null +++ b/reference/auth/models/consent/recordcreate.v1.yaml @@ -0,0 +1,9 @@ +$ref: ./record.v1.yaml +x-stoplight: + id: saa37zeaoirkr +examples: + - type: tbddp + version: 1 + metadata: + supportedOrganizations: + - ADCES Foundation diff --git a/reference/auth/models/consent/records.v1.yaml b/reference/auth/models/consent/records.v1.yaml new file mode 100644 index 00000000..28e21e99 --- /dev/null +++ b/reference/auth/models/consent/records.v1.yaml @@ -0,0 +1,20 @@ +title: records.v1 +x-stoplight: + id: 0tuzybru8eee5 +type: object +properties: + data: + type: array + x-stoplight: + id: whbezmg3q7pxh + items: + $ref: ./record.v1.yaml + x-stoplight: + id: u1b4u8fpl1ed6 + count: + type: integer + x-stoplight: + id: leqbw9m8u2lku +required: + - data + - count diff --git a/reference/auth/models/consent/recordupdate.v1.yaml b/reference/auth/models/consent/recordupdate.v1.yaml new file mode 100644 index 00000000..e90488e5 --- /dev/null +++ b/reference/auth/models/consent/recordupdate.v1.yaml @@ -0,0 +1,13 @@ +title: recordupdate.v1 +x-stoplight: + id: c8oq1dn4m4uak +type: object +properties: + status: + type: string + x-stoplight: + id: 2hnhmpwbyck12 + enum: + - revoked +required: + - status From 18a6e358947031f70e756fb0aa7fb2890e5ae9cd Mon Sep 17 00:00:00 2001 From: Todd Kazakov Date: Wed, 30 Jul 2025 13:58:18 +0300 Subject: [PATCH 2/4] Address code review feedback --- reference/auth.v1.yaml | 90 ++++++++++--------- reference/auth/models/consent/consent.v1.yaml | 3 +- .../auth/models/consent/consentrecord.v1.yaml | 0 .../auth/models/consent/consents.v1.yaml | 1 + .../models/consent/metadata.tbddp.v1.yaml | 24 +++++ .../auth/models/consent/metadata.v1.yaml | 21 +---- reference/auth/models/consent/record.v1.yaml | 41 +++++++-- reference/auth/models/consent/records.v1.yaml | 1 + .../auth/models/consent/recordupdate.v1.yaml | 8 +- reference/auth/models/consent/type.v1.yaml | 6 ++ 10 files changed, 117 insertions(+), 78 deletions(-) delete mode 100644 reference/auth/models/consent/consentrecord.v1.yaml create mode 100644 reference/auth/models/consent/metadata.tbddp.v1.yaml create mode 100644 reference/auth/models/consent/type.v1.yaml diff --git a/reference/auth.v1.yaml b/reference/auth.v1.yaml index a0144fef..e10a8b76 100644 --- a/reference/auth.v1.yaml +++ b/reference/auth.v1.yaml @@ -683,7 +683,9 @@ paths: /v1/consents: get: summary: List Consents - tags: [] + tags: + - Internal + - Consent responses: '200': description: OK @@ -692,30 +694,19 @@ paths: schema: $ref: ./auth/models/consent/consents.v1.yaml operationId: ListConsents - description: Retrieves the list of all different consent types and their content. By default returns only the latest version for each consent type. This can be override by setting the `version` query parameter to `all` + description: 'Retrieves the list of all different consent types and their content. ' requestBody: content: {} - parameters: - - schema: - type: string - enum: - - latest - - all - default: latest - in: query - name: version - description: Whether to return all versions or only the most recent one. + parameters: [] + x-internal: true parameters: [] - '/v1/consents/{type}': + '/v1/consents/{consentType}': parameters: - - schema: - type: string - name: type - in: path - required: true + - $ref: '#/components/parameters/consentType' get: summary: Get Latest Consent By Type - tags: [] + tags: + - Consent responses: '200': description: OK @@ -725,16 +716,14 @@ paths: $ref: ./auth/models/consent/consent.v1.yaml operationId: GetLatestConsentByType description: Returns the latest consent version for the given type - '/v1/consent/{type}/versions': + '/v1/consent/{consentType}/versions': parameters: - - schema: - type: string - name: type - in: path - required: true + - $ref: '#/components/parameters/consentType' get: summary: Get Consent Versions - tags: [] + tags: + - Consent + - Internal responses: '200': description: OK @@ -742,15 +731,12 @@ paths: application/json: schema: $ref: ./auth/models/consent/consents.v1.yaml - operationId: GetConentVersions + operationId: GetConsentVersions description: Returns a list of all consent versions for a given type + x-internal: true '/v1/users/{userId}/consents': parameters: - - schema: - type: string - name: userId - in: path - required: true + - $ref: '#/components/parameters/userId' get: summary: Get User Consent Records tags: [] @@ -762,16 +748,16 @@ paths: schema: $ref: ./auth/models/consent/records.v1.yaml operationId: GetUserConsentRecords - description: Returns a list of all user consent records. By default only the most recent consent record for a given consent type will be returned. This can be overriden by setting the `version` query parameter to `all`. + description: Returns a list of all user consent records. By default only the most recent consent record for a given consent type will be returned. This can be overriden by setting the `latest` query parameter to `false`. parameters: - schema: - type: string + type: boolean enum: - - latest - - all - default: latest + - 'true' + - 'false' + default: 'true' in: query - name: version + name: latest description: Whether to return all versions or only the most recent one. - schema: type: string @@ -795,11 +781,7 @@ paths: $ref: ./auth/models/consent/recordcreate.v1.yaml '/v1/users/{userId}/consents/{recordId}': parameters: - - schema: - type: string - name: userId - in: path - required: true + - $ref: '#/components/parameters/userId' - schema: type: string name: recordId @@ -818,7 +800,7 @@ paths: operationId: GetUserConsentRecord description: Retrieves a consent record by ID for a given user. patch: - summary: '' + summary: Update User Consent Record operationId: UpdateUserConsentRecord responses: '200': @@ -833,6 +815,13 @@ paths: application/json: schema: $ref: ./auth/models/consent/recordupdate.v1.yaml + delete: + summary: '' + operationId: RevokeConsent + responses: + '200': + description: OK + description: Revokes a consent record components: securitySchemes: basicAuth: @@ -1094,3 +1083,16 @@ components: required: - code - reason + parameters: + consentType: + name: consentType + in: path + required: true + schema: + $ref: ./auth/models/consent/type.v1.yaml + userId: + name: userId + in: path + required: true + schema: + $ref: ./common/models/tidepooluserid.yaml diff --git a/reference/auth/models/consent/consent.v1.yaml b/reference/auth/models/consent/consent.v1.yaml index 6e78bf05..48abb2af 100644 --- a/reference/auth/models/consent/consent.v1.yaml +++ b/reference/auth/models/consent/consent.v1.yaml @@ -3,8 +3,7 @@ description: Consent type: object properties: type: - description: Test - type: string + $ref: ./type.v1.yaml version: type: integer example: 1 diff --git a/reference/auth/models/consent/consentrecord.v1.yaml b/reference/auth/models/consent/consentrecord.v1.yaml deleted file mode 100644 index e69de29b..00000000 diff --git a/reference/auth/models/consent/consents.v1.yaml b/reference/auth/models/consent/consents.v1.yaml index a139c60a..81238e9b 100644 --- a/reference/auth/models/consent/consents.v1.yaml +++ b/reference/auth/models/consent/consents.v1.yaml @@ -7,6 +7,7 @@ properties: x-stoplight: id: iepviv3jm8m9m type: array + uniqueItems: true items: $ref: ./consent.v1.yaml x-stoplight: diff --git a/reference/auth/models/consent/metadata.tbddp.v1.yaml b/reference/auth/models/consent/metadata.tbddp.v1.yaml new file mode 100644 index 00000000..1df7ca06 --- /dev/null +++ b/reference/auth/models/consent/metadata.tbddp.v1.yaml @@ -0,0 +1,24 @@ +title: metadata.tbddp.v1 +x-stoplight: + id: 95q0hhj045suc +type: object +properties: + supportedOrganizations: + type: array + uniqueItems: true + description: >- + The list of supported organizations when the consent grant is for the + Tidepool Big Data Donation Project + items: + x-stoplight: + id: whfmccxwfj7zx + type: string + enum: + - ADCES Foundation + - Beyond Type 1 + - Children With Diabetes + - The Diabetes Link + - Diabetes Youth Families (DYF) + - DiabetesSisters + - The diaTribe Foundation + - Breakthrough T1D \ No newline at end of file diff --git a/reference/auth/models/consent/metadata.v1.yaml b/reference/auth/models/consent/metadata.v1.yaml index 2bf43162..c4661256 100644 --- a/reference/auth/models/consent/metadata.v1.yaml +++ b/reference/auth/models/consent/metadata.v1.yaml @@ -1,22 +1,5 @@ title: metadata.v1 x-stoplight: id: 8ctwq6xjg496g -type: object -properties: - supportedOrganizations: - type: array - uniqueItems: true - description: The list of supported organizations when the consent grant is for the Tidepool Big Data Donation Project - items: - x-stoplight: - id: iew30v83r2ce5 - type: string - enum: - - ADCES Foundation - - Beyond Type 1 - - Children With Diabetes - - The Diabetes Link - - Diabetes Youth Families (DYF) - - DiabetesSisters - - The diaTribe Foundation - - Breakthrough T1D +oneOf: + - $ref: ./metadata.tbddp.v1.yaml diff --git a/reference/auth/models/consent/record.v1.yaml b/reference/auth/models/consent/record.v1.yaml index ac0cea82..923e4c83 100644 --- a/reference/auth/models/consent/record.v1.yaml +++ b/reference/auth/models/consent/record.v1.yaml @@ -15,17 +15,43 @@ properties: - active - revoked readOnly: true - type: + ageGroup: + type: string + x-stoplight: + id: u5whtndrytunl + enum: + - <12 + - 13-17 + - 18+ + ownerName: + type: string + x-stoplight: + id: 2cw4335ateapa + description: The name of the account owner + parentGuardianName: + type: string + x-stoplight: + id: 94pqubqvzwigs + description: The name of the parent or legal guardian granting the consent. Required if ageGroup is '<12' or '13-17'. + grantorType: type: string + x-stoplight: + id: zc8e4q8t37yig + enum: + - owner + - parent/guardian + type: + $ref: ./type.v1.yaml x-stoplight: id: jub0w6n4sx03g - minLength: 1 - maxLength: 100 version: type: integer x-stoplight: id: s4pt6ptt7ez4n - minimum: 1 + metadata: + $ref: ./metadata.v1.yaml + x-stoplight: + id: u4fzjwa9iivzp grantTime: type: string x-stoplight: @@ -50,13 +76,12 @@ properties: id: ohlc8mndn74ov format: date-time readOnly: true - metadata: - $ref: ./metadata.v1.yaml - x-stoplight: - id: u4fzjwa9iivzp required: - id - status + - ageGroup + - ownerName + - grantorType - type - version - grantTime diff --git a/reference/auth/models/consent/records.v1.yaml b/reference/auth/models/consent/records.v1.yaml index 28e21e99..4cb664a9 100644 --- a/reference/auth/models/consent/records.v1.yaml +++ b/reference/auth/models/consent/records.v1.yaml @@ -7,6 +7,7 @@ properties: type: array x-stoplight: id: whbezmg3q7pxh + uniqueItems: true items: $ref: ./record.v1.yaml x-stoplight: diff --git a/reference/auth/models/consent/recordupdate.v1.yaml b/reference/auth/models/consent/recordupdate.v1.yaml index e90488e5..bbe0052b 100644 --- a/reference/auth/models/consent/recordupdate.v1.yaml +++ b/reference/auth/models/consent/recordupdate.v1.yaml @@ -3,11 +3,9 @@ x-stoplight: id: c8oq1dn4m4uak type: object properties: - status: - type: string + metadata: + $ref: ./metadata.v1.yaml x-stoplight: id: 2hnhmpwbyck12 - enum: - - revoked required: - - status + - metadata diff --git a/reference/auth/models/consent/type.v1.yaml b/reference/auth/models/consent/type.v1.yaml new file mode 100644 index 00000000..a7fb16f7 --- /dev/null +++ b/reference/auth/models/consent/type.v1.yaml @@ -0,0 +1,6 @@ +title: Consent Type +x-stoplight: + id: r396s741z1sca +type: string +pattern: '^[a-z0-9_-]{3,64}$' +example: big_data_donation_project From 31640b6d7252f105a0f241592aa4c9a79d95e5e5 Mon Sep 17 00:00:00 2001 From: Todd Kazakov Date: Fri, 15 Aug 2025 11:39:21 +0300 Subject: [PATCH 3/4] Address code review comments --- reference/auth.v1.yaml | 14 ++++++++------ reference/auth/models/consent/record.v1.yaml | 4 +--- reference/auth/models/consent/recordId.v1.yaml | 6 ++++++ 3 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 reference/auth/models/consent/recordId.v1.yaml diff --git a/reference/auth.v1.yaml b/reference/auth.v1.yaml index e10a8b76..8b79c2f3 100644 --- a/reference/auth.v1.yaml +++ b/reference/auth.v1.yaml @@ -716,7 +716,7 @@ paths: $ref: ./auth/models/consent/consent.v1.yaml operationId: GetLatestConsentByType description: Returns the latest consent version for the given type - '/v1/consent/{consentType}/versions': + '/v1/consents/{consentType}/versions': parameters: - $ref: '#/components/parameters/consentType' get: @@ -782,11 +782,7 @@ paths: '/v1/users/{userId}/consents/{recordId}': parameters: - $ref: '#/components/parameters/userId' - - schema: - type: string - name: recordId - in: path - required: true + - $ref: '#/components/parameters/recordId' get: summary: Get User Consent Record tags: [] @@ -1096,3 +1092,9 @@ components: required: true schema: $ref: ./common/models/tidepooluserid.yaml + recordId: + name: recordId + in: path + required: true + schema: + $ref: ./auth/models/consent/recordId.v1.yaml diff --git a/reference/auth/models/consent/record.v1.yaml b/reference/auth/models/consent/record.v1.yaml index 923e4c83..b990649d 100644 --- a/reference/auth/models/consent/record.v1.yaml +++ b/reference/auth/models/consent/record.v1.yaml @@ -4,9 +4,7 @@ x-stoplight: type: object properties: id: - type: string - minLength: 1 - readOnly: true + $ref: ./recordId.v1.yaml status: type: string x-stoplight: diff --git a/reference/auth/models/consent/recordId.v1.yaml b/reference/auth/models/consent/recordId.v1.yaml new file mode 100644 index 00000000..9ef9679d --- /dev/null +++ b/reference/auth/models/consent/recordId.v1.yaml @@ -0,0 +1,6 @@ +title: recordId.v1 +x-stoplight: + id: 5aevzr0n4qx6k +type: string +minLength: 1 +readOnly: true From f925a5dfc9a46cbbc9a37a0ff274e312e28554b2 Mon Sep 17 00:00:00 2001 From: Todd Kazakov Date: Wed, 20 Aug 2025 14:57:40 +0300 Subject: [PATCH 4/4] Update response codes --- reference/auth.v1.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reference/auth.v1.yaml b/reference/auth.v1.yaml index 8b79c2f3..b4e216a9 100644 --- a/reference/auth.v1.yaml +++ b/reference/auth.v1.yaml @@ -767,7 +767,7 @@ paths: summary: Create User Consent Record operationId: CreateUserConsentRecord responses: - '201': + '200': description: Created content: application/json: @@ -812,10 +812,10 @@ paths: schema: $ref: ./auth/models/consent/recordupdate.v1.yaml delete: - summary: '' + summary: 'Revoke User Consent Record' operationId: RevokeConsent responses: - '200': + '204': description: OK description: Revokes a consent record components: