diff --git a/CHANGELOG.md b/CHANGELOG.md index e88c16d..f45ab11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All changes that impact users of this module are documented in this file, in the [Common Changelog](https://common-changelog.org) format with some additional specifications defined in the [CONTRIBUTING](./CONTRIBUTING.md) file. This codebase adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased [major] + +> Development of this release was supported by the [French Ministry for Foreign Affairs](https://www.diplomatie.gouv.fr/fr/politique-etrangere-de-la-france/diplomatie-numerique/) through its ministerial [State Startups incubator](https://beta.gouv.fr/startups/open-terms-archive.html) under the aegis of the Ambassador for Digital Affairs. + +### Changed + +- **Breaking:** Improve data schema to improve usability; remove `commitment` object structure, move `commitment.object` to `topic` and `commitment.audience` to `obligee`, rename `also known as` to `aliases` ([decision record](./decision-records/0001-schema-improvements.md)) + ## 1.4.0 - 2024-10-24 _Full changeset and discussions: [#86](https://github.com/OpenTermsArchive/terms-types/pull/86)._ diff --git a/README.md b/README.md index 40ac7d6..c7eb3cb 100644 --- a/README.md +++ b/README.md @@ -40,51 +40,87 @@ For consistency, the term “Policy” in a type name should only be used singul ### Alternative names -Some terms types might have several commonly-used names, often varying by jurisdiction. To increase discoverability and clarity, alternative names can be provided to terms types. These alternative names are not translations, but rather synonyms in English. They are provided in an array under the `also known as` key. +Some terms types might have several commonly-used names, often varying by jurisdiction. To increase discoverability and clarity, alternative names can be provided to terms types. These alternative names are not translations, but rather synonyms in English. They are provided in an array under the `aliases` key. Examples: -- `"Hyperlinks Policy" : { "also known as": [ "Links Policy", "Linking Policy" ], … }` -- `"Whistleblower Policy": { "also known as": [ "Whistleblower Protections" ], … }` +- `"Hyperlinks Policy" : { "aliases": [ "Links Policy", "Linking Policy" ], … }` +- `"Whistleblower Policy": { "aliases": [ "Whistleblower Protections" ], … }` -### Triptych +### Required attributes -In order to guide usage and disambiguate synonyms, each terms type is characterised by a triptych along the three dimensions of the `commitment` that is being taken in it: +Each terms type is characterized by two required attributes: -- the `writer` of the document, in most cases the service provider itself; -- the targeted `audience` whose rights and duties are defined in the associated terms; -- the `object` of the commitment, i.e. the information or interaction whose handling will be constrained by the associated terms. +- the `topic` of the commitment, i.e. the information or interaction whose handling will be constrained by the associated terms; +- the targeted `obligee` whose rights and duties are defined in the associated terms. -Each type thus has the following structure, where all fields are required: +Each type thus has the following structure: ```json { "": { - "commitment": { - "writer": "", - "audience": "", - "object": "" - } + "topic": "", + "obligee": "" + } +} +``` + +### Optional attributes + +Terms types can have additional optional attributes: + +#### Industries + +Some terms types might be specific to certain industries. These can be specified in an array under the `industries` key. + +```json +{ + "": { + "topic": "…", + "obligee": "…", + "industries": [ + "Air Transport", + "Maritime Transport" + ] + } +} +``` + +#### Jurisdictions + +Some terms types might be specific to certain jurisdictions. These can be specified as [ISO 3166-2 region codes](https://en.wikipedia.org/wiki/ISO_3166-2) in an array under the `jurisdictions` key. + +```json +{ + "": { + "topic": "…", + "obligee": "…", + "jurisdictions": [ + "US", + "GB", + "FR" + ] } } ``` -### References +#### References -It may also contain an optional `references` property which contains a map of related resources that may help to understand the purpose of this type, such as legal definitions, or the discussions that led to the choice of this name. Each reference must have a name and a URL. +Terms types may contain a `references` property which contains a map of related resources that may help to understand the purpose of this type, such as legal definitions, or the discussions that led to the choice of this name. Each reference must have a name and a URL. ```json { "": { - "commitment": { … }, + "topic": "…", + "obligee": "…", "references": { "": "" } - }, + } } ``` -#### Legal references +##### Legal references Legal references will be prefixed by the flag emoji of the jurisdiction of enactment, will use the full name of the law, and will link to the official journal URL. @@ -97,14 +133,11 @@ Examples: ```json "Whistleblower Policy": { - "also known as": [ + "topic": "reporting on suspected misconduct and illegal acts and prevention of retaliation", + "obligee": "employees", + "aliases": [ "Whistleblower Protections" ], - "commitment": { - "writer": "service provider", - "audience": "employees", - "object": "reporting on suspected misconduct and illegal acts and prevention of retaliation" - }, "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/terms-types/discussions/37", "🇺🇸 Whistleblower Protection Act of 1989": "https://www.govinfo.gov/content/pkg/STATUTE-103/pdf/STATUTE-103-Pg16.pdf", @@ -113,16 +146,6 @@ Examples: } ``` -## How to define the triptych - -To identify the triptych of specific terms, answer the following questions: - -1. Who is responsible for creating and maintaining those terms? Most often, it will be the `service provider` itself. Sometimes, while still being the service provider, it could be that only providers from a certain industry could write such terms, such as `transportation operator`. -2. Who is the target audience whose rights and duties are defined? Often, it will be the `end user`, but it can also be the `commercial partners` or `business users`, for example. -3. Which information or interaction precisely is constrained by those terms? For example, the `end users’ personal data`, or maybe the `privileged seller status programme`. Try to be as specific as possible, as this precision enables distinguishing between otherwise similar types. - -After having answered these questions, if reading out loud the triptych, it sounds right to say that **“these terms describe how the `` commits to handle the `` for its ``”**. - ## Add new terms types Contributions to expand the list of known terms types are welcome, but need to follow a strict design, review and validation process in order to ensure consistency in the ontology. If you'd like to suggest a new type, please follow the process detailed in the [CONTRIBUTING file](CONTRIBUTING.md#add-new-terms-types). diff --git a/termsTypes.json b/termsTypes.json index 196fd87..7807421 100644 --- a/termsTypes.json +++ b/termsTypes.json @@ -1,287 +1,210 @@ { "Terms of Service": { - "also known as": [ + "topic": "end user's service usage", + "obligee": "end user", + "aliases": [ "Terms and Conditions", "Terms of Use" - ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "end user’s service usage" - } + ] }, "Privacy Policy": { - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "end user’s personal data" - } + "topic": "end user's personal data", + "obligee": "end user" }, "Imprint": { - "also known as": [ + "topic": "identification of content author and hosting service for official inquiries", + "obligee": "everyone", + "aliases": [ "Legal Notice" - ], - "commitment": { - "writer": "service provider", - "audience": "everyone", - "object": "identification of content author and hosting service for official inquiries" - } + ] }, "Trackers Policy": { - "also known as": [ + "topic": "all tracking technologies, including cookies, session storage, fingerprints…", + "obligee": "end user", + "aliases": [ "Cookies Policy" - ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "all tracking technologies, including cookies, session storage, fingerprints…" - } + ] }, "Developer Terms": { - "also known as": [ + "topic": "APIs and programmatic access to content", + "obligee": "developer", + "aliases": [ "Developer Policy", "Developer Agreement" - ], - "commitment": { - "writer": "service provider", - "audience": "developer", - "object": "APIs and programmatic access to content" - } + ] }, "Community Guidelines": { - "also known as": [ + "topic": "public behaviour", + "obligee": "end user", + "aliases": [ "Community Standards" - ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "public behaviour" - } + ] }, "Deceased Users": { - "commitment": { - "writer": "service provider", - "audience": "relatives of a deceased user", - "object": "handling of information of a deceased individual" - } + "topic": "handling of information of a deceased individual", + "obligee": "relatives of a deceased user" }, "Acceptable Use Policy": { - "also known as": [ + "topic": "acceptable and unacceptable usage", + "obligee": "end user", + "aliases": [ "Fair Use Policy", "Acceptable Usage Policy" - ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "acceptable and unacceptable usage" - } + ] }, "Restricted Use Policy": { - "also known as": [ + "topic": "restrictions on specific usage", + "obligee": "end user", + "aliases": [ "Limited Use Policy", "Restriction Policy" - ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "restrictions on specific usage" - } + ] }, "Commercial Terms": { - "commitment": { - "writer": "service provider", - "audience": "commercial partners, content creators in a platform", - "object": "business or commercial usage" - } + "topic": "business or commercial usage", + "obligee": "commercial partners, content creators in a platform" }, "Copyright Claims Policy": { - "also known as": [ + "topic": "how copyright complaints will be handled", + "obligee": "copyrighted works rights holders", + "aliases": [ "Copyright Infringement Policy", "Intellectual Property Policy" ], - "commitment": { - "writer": "service provider", - "audience": "copyrighted works rights holders", - "object": "how copyright complaints will be handled" - }, "references": { "🇺🇸 Digital Millennium Copyright Act (DMCA)": "https://www.congress.gov/bill/105th-congress/house-bill/2281" } }, "Law Enforcement Guidelines": { - "also known as": [ + "topic": "account records access", + "obligee": "law enforcement authorities", + "aliases": [ "Legal Process Guidelines" - ], - "commitment": { - "writer": "service provider", - "audience": "law enforcement authorities", - "object": "account records access" - } + ] }, "Human Rights Policy": { - "commitment": { - "writer": "service provider", - "audience": "shareholders", - "object": "human rights" - } + "topic": "human rights", + "obligee": "shareholders" }, "In-App Purchases Policy": { - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "in-app and other virtual goods purchase usage" - } + "topic": "in-app and other virtual goods purchase usage", + "obligee": "end user" }, "Review Guidelines": { - "commitment": { - "writer": "service provider", - "audience": "developer", - "object": "review process of provided content" - } + "topic": "review process of provided content", + "obligee": "developer" }, "Brand Guidelines": { - "also known as": [ + "topic": "usage of the service provider's brand", + "obligee": "developer", + "aliases": [ "Branding Policies", "Trademark Usage Guidelines" - ], - "commitment": { - "writer": "service provider", - "audience": "developer", - "object": "usage of the service provider’s brand" - } + ] }, "Quality Guidelines": { - "also known as": [ + "topic": "quality of content produced by means of the service", + "obligee": "end user", + "aliases": [ "Quality standards" - ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "quality of content produced by means of the service" - } + ] }, "Data Controller Agreement": { - "commitment": { - "writer": "service provider", - "audience": "data controllers (in the sense of GDPR)", - "object": "end user personal data" - }, + "topic": "end user personal data", + "obligee": "data controllers (in the sense of GDPR)", "references": { "🇪🇺 GDPR, article 4§7": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.L_.2016.119.01.0001.01.ENG&toc=OJ:L:2016:119:FULL#d1e1489-1-1", "European Commission guidance": "https://commission.europa.eu/law/law-topic/data-protection/reform/rules-business-and-organisations/obligations/controllerprocessor/what-data-controller-or-data-processor_en" } }, "Data Processor Agreement": { - "also known as": [ + "topic": "status of data processor (in the sense of GDPR) for the service provider", + "obligee": "data processors (in the sense of GDPR)", + "aliases": [ "Data Processing Agreement" ], - "commitment": { - "writer": "service provider", - "audience": "data processors (in the sense of GDPR)", - "object": "status of data processor (in the sense of GDPR) for the service provider" - }, "references": { "🇪🇺 GDPR, article 4§8": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.L_.2016.119.01.0001.01.ENG&toc=OJ:L:2016:119:FULL#d1e1489-1-1", "European Commission guidance": "https://commission.europa.eu/law/law-topic/data-protection/reform/rules-business-and-organisations/obligations/controllerprocessor/what-data-controller-or-data-processor_en" } }, "User Consent Policy": { - "commitment": { - "writer": "service provider", - "audience": "data controllers (in the sense of GDPR)", - "object": "user consent collection and storage" - } + "topic": "user consent collection and storage", + "obligee": "data controllers (in the sense of GDPR)" }, "Closed Captioning Policy": { - "also known as": [ + "topic": "closed captioning on streamed content", + "obligee": "end user", + "aliases": [ "Closed Captioning Guidelines", "Captioning Policy", "Closed Captioning Standards" - ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "closed captioning on streamed content" - } + ] }, "Seller Warranty": { - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "protection of end users that act as sellers" - } + "topic": "protection of end users that act as sellers", + "obligee": "end user" }, "Single Sign-On Policy": { - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "connecting user account to other services" - } + "topic": "connecting user account to other services", + "obligee": "end user" }, "Vulnerability Disclosure Policy": { - "also known as": [ + "topic": "how to report a security vulnerability or issue", + "obligee": "vulnerability reporter", + "aliases": [ "Security Disclosure Policy" - ], - "commitment": { - "writer": "service provider", - "audience": "vulnerability reporter", - "object": "how to report a security vulnerability or issue" - } + ] }, "Live Policy": { - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "end user’s live service usage" - } + "topic": "end user's live service usage", + "obligee": "end user" }, "Complaints Policy": { - "commitment": { - "writer": "service provider", - "audience": "anyone", - "object": "how generic complaints will be handled" - } + "topic": "how generic complaints will be handled", + "obligee": "anyone" }, "Conditions of Carriage": { - "also known as": [ + "topic": "benefits and limitations associated with the transportation being provided", + "obligee": "passenger", + "aliases": [ "Transport Conditions" ], - "commitment": { - "writer": "transportation operator (airline, railway, bus…)", - "audience": "passenger", - "object": "benefits and limitations associated with the transportation being provided" - } + "industries": [ + "Transportations" + ] }, "General Conditions of Sale": { - "commitment": { - "writer": "paid-for goods or service provider", - "audience": "buyer", - "object": "warranty, delivery, return of goods or services bought through a monetary transaction" - } + "topic": "warranty, delivery, return of goods or services bought through a monetary transaction", + "obligee": "buyer", + "industries": [ + "Goods", + "Services" + ] }, "Marketplace Buyers Conditions": { - "commitment": { - "writer": "online marketplace", - "audience": "buyer", - "object": "buying through a monetary transaction goods or services offered by sellers other than the marketplace itself" - } + "topic": "buying through a monetary transaction goods or services offered by sellers other than the marketplace itself", + "obligee": "buyer", + "industries": [ + "Online marketplace" + ] }, "Marketplace Sellers Conditions": { - "also known as": [ + "topic": "selling through a monetary transaction goods or services to buyers other than the marketplace itself", + "obligee": "seller", + "aliases": [ "Seller Agreement" ], - "commitment": { - "writer": "online marketplace", - "audience": "seller", - "object": "selling through a monetary transaction goods or services to buyers other than the marketplace itself" - } + "industries": [ + "Online marketplace" + ] }, "Ranking Parameters Description": { - "commitment": { - "writer": "search engine or intermediation service provider", - "audience": "users presented with a list of ranked results, or contributors of results that are ranked", - "object": "parameters determining ranking and the reasons for their relative importance" - }, + "topic": "parameters determining ranking and the reasons for their relative importance", + "obligee": "users presented with a list of ranked results, or contributors of results that are ranked", + "industries": [ + "Intermediation service" + ], "references": { "Open Terms Archive Discussion": "https://github.com/OpenTermsArchive/engine/discussions/902", "🇪🇺 Article 5 of P2B Regulation 2019/1150": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=celex%3A32019R1150#d1e868-57-1", @@ -290,72 +213,67 @@ } }, "Premium Partner Conditions": { - "also known as": [ + "topic": "eligibility criteria, limitations and benefits of a privileged seller status programme", + "obligee": "sellers of goods or services", + "industries": [ + "Intermediation service" + ], + "aliases": [ "Premium Partner Program" ], - "commitment": { - "writer": "intermediation service provider", - "audience": "sellers of goods or services", - "object": "eligibility criteria, limitations and benefits of a privileged seller status programme" - }, "references": { "Open Terms Archive Discussion": "https://github.com/OpenTermsArchive/engine/discussions/922" } }, "Platform to Business Notice": { - "commitment": { - "writer": "search engine or intermediation service provider", - "audience": "business user", - "object": "complaints handling, mediation, transparency and other rights and information mandated by the P2B regulation" - }, + "topic": "complaints handling, mediation, transparency and other rights and information mandated by the P2B regulation", + "obligee": "business user", + "industries": [ + "Search engine", + "Intermediation service" + ], "references": { "Open Terms Archive Discussion": "https://github.com/OpenTermsArchive/engine/discussions/940", "🇪🇺 P2B Regulation 2019/1150": "https://eur-lex.europa.eu/eli/reg/2019/1150/oj" } }, "Business Mediation Policy": { - "commitment": { - "writer": "intermediation service provider", - "audience": "business users", - "object": "eligibility and process of mediation after internal complaints handling failed" - }, + "topic": "eligibility and process of mediation after internal complaints handling failed", + "obligee": "business users", + "industries": [ + "Intermediation service" + ], "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/engine/discussions/933", "🇪🇺 P2B Regulation 2019/1150, Article 12": "https://eur-lex.europa.eu/eli/reg/2019/1150/oj#d1e1148-57-1" } }, "Business Privacy Policy": { - "commitment": { - "writer": "intermediation service provider", - "audience": "business user", - "object": "personal data of business users and of people acting on their behalf" - }, + "topic": "personal data of business users and of people acting on their behalf", + "obligee": "business user", + "industries": [ + "Intermediation service" + ], "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/engine/discussions/923" } }, "Editorial Policy": { - "also known as": [ + "topic": "writing and publishing standards and principles", + "obligee": "end user", + "aliases": [ "Editorial Guidelines" ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "writing and publishing standards and principles" - }, "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/terms-types/discussions/35" } }, "Anti-corruption Policy": { - "also known as": [ + "topic": "risk mitigation and prevention of involvement in bribery", + "obligee": "any person working directly or indirectly for the service provider", + "aliases": [ "Anti-bribery Policy" ], - "commitment": { - "writer": "service provider", - "audience": "any person working directly or indirectly for the service provider", - "object": "risk mitigation and prevention of involvement in bribery" - }, "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/terms-types/discussions/39", "🇺🇸 Foreign Corrupt Practices Act": "https://www.justice.gov/criminal/criminal-fraud/foreign-corrupt-practices-act", @@ -365,28 +283,22 @@ } }, "Accessibility Statement": { - "also known as": [ + "topic": "accessibility of the service to people with a disability", + "obligee": "everyone", + "aliases": [ "Accessibility Policy" ], - "commitment": { - "writer": "service provider", - "audience": "everyone", - "object": "accessibility of the service to people with a disability" - }, "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/terms-types/discussions/36", "🇫🇷 Loi n°2005-102 du 11 février 2005 pour l'égalité des droits et des chances, la participation et la citoyenneté des personnes handicapées, article 47": "https://www.legifrance.gouv.fr/jorf/article_jo/JORFARTI000001290363", "🇬🇧 Public Sector Bodies Accessibility Regulations 2018/2022": "https://www.legislation.gov.uk/uksi/2018/952/made", - "🇱🇺 Loi du 28 mai 2019 relative à l’accessibilité des sites internet et des applications mobiles des organismes du secteur public": "https://legilux.public.lu/eli/etat/leg/loi/2019/05/28/a373/jo" + "🇱🇺 Loi du 28 mai 2019 relative à l'accessibilité des sites internet et des applications mobiles des organismes du secteur public": "https://legilux.public.lu/eli/etat/leg/loi/2019/05/28/a373/jo" } }, "Hyperlinks Policy": { - "commitment": { - "writer": "service provider", - "audience": "for outgoing hyperlinks, readers and contributors; for incoming hyperlinks, third-party authors who link to the service content", - "object": "quality of third-party targets of outgoing hyperlinks provided in content, and requirements for incoming hyperlinks in third-party content" - }, - "also known as": [ + "topic": "quality of third-party targets of outgoing hyperlinks provided in content, and requirements for incoming hyperlinks in third-party content", + "obligee": "for outgoing hyperlinks, readers and contributors; for incoming hyperlinks, third-party authors who link to the service content", + "aliases": [ "Links Policy", "Linking Policy", "External Links Policy", @@ -397,14 +309,11 @@ } }, "Whistleblower Policy": { - "also known as": [ + "topic": "reporting on suspected misconduct and illegal acts and prevention of retaliation", + "obligee": "employees", + "aliases": [ "Whistleblower Protections" ], - "commitment": { - "writer": "service provider", - "audience": "employees", - "object": "reporting on suspected misconduct and illegal acts and prevention of retaliation" - }, "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/terms-types/discussions/37", "🇺🇸 Whistleblower Protection Act of 1989": "https://www.govinfo.gov/content/pkg/STATUTE-103/pdf/STATUTE-103-Pg16.pdf", @@ -413,28 +322,22 @@ } }, "Affiliate Agreement": { - "also known as": [ + "topic": "earning commissions by promoting the service", + "obligee": "affiliate", + "aliases": [ "Affiliate Policy" ], - "commitment": { - "writer": "service provider", - "audience": "affiliate", - "object": "earning commissions by promoting the service" - }, "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/terms-types/discussions/41", "Wikipedia page on Affiliate Marketing": "https://en.wikipedia.org/wiki/Affiliate_marketing" } }, "Service Level Agreement": { - "also known as": [ + "topic": "define and guarantee specific levels of service performance, availability, and quality", + "obligee": "end user", + "aliases": [ "Service Level Addendum" ], - "commitment": { - "writer": "service provider", - "audience": "end user", - "object": "define and guarantee specific levels of service performance, availability, and quality" - }, "references": { "Open Terms Archive discussion": "https://github.com/OpenTermsArchive/terms-types/discussions/79", "Wikipedia page on Service-level agreement": "https://en.wikipedia.org/wiki/Service-level_agreement" diff --git a/test/termsTypes.schema.js b/test/termsTypes.schema.js index c15851f..ea659e4 100644 --- a/test/termsTypes.schema.js +++ b/test/termsTypes.schema.js @@ -5,36 +5,39 @@ const schema = { '\\w': { type: 'object', additionalProperties: false, - required: ['commitment'], + required: ['topic', 'obligee'], properties: { - 'also known as': { + topic: { + type: 'string', + title: 'The topic of the commitment', + examples: ['end user’s service usage', 'end user’s personal data', 'public behaviour'], + }, + obligee: { + type: 'string', + title: 'The targeted audience', + examples: ['end user', 'developer', 'data controllers (in the sense of GDPR)'], + }, + aliases: { type: 'array', items: { - type: 'string' + type: 'string', }, - minItems: 1 + minItems: 1, }, - commitment: { - type: 'object', - additionalProperties: false, - required: ['writer', 'audience', 'object'], - properties: { - writer: { - type: 'string', - title: 'The writer of the document', - examples: ['service provider', 'intermediation service provider'], - }, - audience: { - type: 'string', - title: 'The targeted audience', - examples: ['end user', 'developer', 'data controllers (in the sense of GDPR)'], - }, - object: { - type: 'string', - title: 'The object of the commitment', - examples: ['end user’s service usage', 'end user’s personal data', 'public behaviour'], - }, + industries: { + type: 'array', + items: { + type: 'string', + }, + minItems: 1, + }, + jurisdictions: { + type: 'array', + items: { + type: 'string', + pattern: '^[A-Z]{2}$', // ISO 3166-2 region codes }, + minItems: 1, }, references: { type: 'object',