-
-
Notifications
You must be signed in to change notification settings - Fork 90
/
schema.json
206 lines (206 loc) · 11.5 KB
/
schema.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Datenanfragen.de company database record",
"description": "A single record of the Datenanfragen.de company database. It represents the contact information of a company (or other organization) specifically for privacy-related inquiries and requests.\nMore information and access to the whole database at: https://github.com/datenanfragen/data",
"type": "object",
"properties": {
"slug": {
"type": "string",
"title": "Slug",
"pattern": "^[a-z0-9-]+$",
"description": "A unique identifier for the company record. Also defines the filename."
},
"relevant-countries": {
"type": "array",
"title": "Relevant countries",
"description": "A list of countries the record is relevant for. The countries can either be an ISO 3166-1 alpha-2 country code or 'all'. If a company has branches in different countries with unique contact data, separate records should be created for those. If a company branch offers its services in English and isn't explicitly restricted to certain countries, 'all' should be specified.",
"uniqueItems": true,
"minItems": 1,
"items": {
"type": "string",
"enum": ["all", "at", "be", "bg", "hr", "cy", "cz", "dk", "ee", "fi", "fr", "de", "gr", "hu", "ie", "it", "lv", "lt", "lu", "mt", "nl", "pl", "pt", "ro", "sk", "si", "es", "se", "gb", "no", "is", "li", "ch"]
}
},
"categories": {
"type": "array",
"title": "Categories",
"description": "A list of categories that the company fits into. These are purposefully fairly vague and may be applied generously.",
"uniqueItems": true,
"items": {
"type": "string",
"enum": [ "addresses", "ads", "church", "collection agency", "commerce", "credit agency", "entertainment", "finance", "health", "insurance", "nonprofit", "political party", "public body", "school", "social media", "telecommunication", "travel", "utility" ]
}
},
"name": {
"type": "string",
"description": "The company's official name, including suffixes like 'Ltd.', 'LLC', 'GmbH' etc.",
"title": "Name",
"pattern": "^\\S.*\\S$"
},
"runs": {
"type": "array",
"title": "Runs",
"description": "A list of other services and companies the parent company is responsible (as defined in Article 4(7) GDPR) for.",
"uniqueItems": true,
"items": {
"type": "string"
}
},
"address": {
"type": "string",
"title": "Address",
"description": "The address where the company can be reached for privacy-related inquiries and requests. Has to include the country (either in the country's native language or in English) in the last line and should be formatted according to the standards of the respective country.",
"format": "text"
},
"phone": {
"type": "string",
"title": "Phone",
"description": "A phone number where the company can be reached for privacy-related inquiries and requests. Has to be in the standard international format and include the country code.",
"pattern": "^\\+\\d+ \\d+ (?:\\d+ )*\\d+(?: ext\\. \\d+)?$"
},
"fax": {
"type": "string",
"title": "Fax",
"description": "A fax number where the company can be reached for privacy-related inquiries and requests. Has to be in the standard international format and include the country code.",
"pattern": "^\\+\\d+ \\d+ (?:\\d+ )*\\d+(?: ext\\. \\d+)?$"
},
"email": {
"type": "string",
"title": "Email",
"description": "An email address where the company can be reached for privacy-related inquiries and requests. Preferably a specific privacy@[domain.tld] address if available.",
"format": "idn-email"
},
"webform": {
"type": "string",
"title": "Web form",
"description": "A URL to a web form where the company can be reached for privacy-related inquiries and requests. This should only be used for web forms specifically for privacy-related inquiries and requests (or ones which at least offer that as an option). General contact forms should only be entered here in rare cases, e.g. if the company has neither an email address nor a privacy-related web form.",
"format": "uri"
},
"pgp-fingerprint": {
"type": "string",
"title": "PGP fingerprint",
"description": "Fingerprint of the PGP key of the email address used to send privacy-related inquiries and requests to the company. The PGP key should be found by this key on public keyservers. Please check the key thoroughly before entering it.",
"pattern": "^([0-9A-F]{4} ){5}( [0-9A-F]{4}){5}$"
},
"pgp-url": {
"type": "string",
"title": "PGP URL",
"description": "URL, where the PGP key of the email address used to send privacy-related inquiries and requests to the company can be downloaded. The protocol *must* be https and the domain has to belong to the repective authority. Please check the key thoroughly before entering it.",
"format": "uri"
},
"web": {
"type": "string",
"title": "Website",
"description": "The company's main website. Include the protocol, e.g. `https://`.",
"format": "uri"
},
"sources": {
"type": "array",
"title": "Sources",
"description": "A list of sources for the record. Preferably from the company's official website.",
"uniqueItems": true,
"minItems": 1,
"items": {
"type": "string",
"format": "uri"
}
},
"required-elements": {
"type": "array",
"title": "Required elements",
"description": "A list of identification elements the user has to provide for requests to the company. Only to be filled in if they have been confirmed. This should be the absolute minimum the user has to specify.",
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"desc": {
"type": "string",
"title": "Description",
"description": "A clear description of the identification element."
},
"type": {
"type": "string",
"title": "Type",
"description": "The type of identification element.",
"default": "input",
"enum": [ "input", "textarea", "email", "address", "name", "birthdate" ]
},
"optional": {
"type": "boolean",
"title": "Optional?",
"description": "Whether the identification element is optional. Default is `false`."
}
},
"additionalProperties": false,
"required": [ "desc", "type" ]
}
},
"request-language": {
"type": "string",
"title": "Request language",
"description": "The language requests to the company (or specifically its branch as specified in the respective record) should be in. Has to be an ISO 639-1 language code. If not specified, fallback to the interface language.",
"pattern": "^[a-z]{2}$"
},
"custom-access-template": {
"type": "string",
"title": "Custom access template",
"description": "The path to a custom template for data access requests to this company, if necessary."
},
"custom-erasure-template": {
"type": "string",
"title": "Custom erasure template",
"description": "The path to a custom template for data erasure requests to this company, if necessary."
},
"custom-rectification-template": {
"type": "string",
"title": "Custom rectification template",
"description": "The path to a custom template for data rectification requests to this company, if necessary."
},
"custom-objection-template": {
"type": "string",
"title": "Custom objection template",
"description": "The path to a custom template for direct marketing objection requests to this company, if necessary."
},
"needs-id-document": {
"type": "boolean",
"title": "Needs ID document?",
"description": "Whether an ID document is necessary for all requests to this company. Only to be set to `true` if an ID document is confirmed to be required in all circumstances. Default is `false`."
},
"suggested-transport-medium": {
"type": "string",
"title": "Suggested transport medium",
"description": "The transport medium a user should use for their privacy-related inquiries and requests. If a specific privacy@[domain.tld] email address is available, 'email' should be specified. If no value is specified, the default is 'email' if the record has an email address specified or 'letter' otherwise.",
"enum": [ "fax", "letter", "email", "webform" ]
},
"comments": {
"type": "array",
"title": "Comments",
"description": "A list of notes relevant to the record.",
"items": {
"type": "string",
"format": "text"
}
},
"quality": {
"type": "string",
"title": "Quality",
"description": "The quality of the record based on how it was compiled. The following are the allowed values (in order of descending quality): 'tested' (someone has successfully sent a request using the details in the record), 'verified' (a human has checked the data and confirmed it, likely by observing it on the company's website), 'imported' (the record was acquired from an existing data set that may not specifically collect privacy contacts but was still verified by a human who is not part of the project), 'scraped' (the record was created by a machine and has not been verified).",
"enum": [ "tested", "verified", "imported", "scraped" ],
"default": "verified"
},
"facet-group": {
"type": "string",
"title": "Facet group",
"description": "If the record falls into one of the listed groups, choose that one. Otherwise, leave this field blank. This allows us to limit the amount of records of which there are many (churches, schools, etc.) returned in searches.",
"enum": [ "church", "school" ]
},
"nsfw": {
"type": "boolean",
"title": "NSFW",
"description": "Is this company “not safe for work“, i.e. does it offer content or services that fall under applicable youth protection laws and are only meant for adults? Only set if `true`.",
"enum": [ true ]
}
},
"additionalProperties": false,
"required": [ "slug", "relevant-countries", "name", "address", "sources", "quality" ]
}