A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Schema file / Docs page | Object | CONSTRAINT | Tested where | Error in lib-cove-bods (if relevant) | Relevant to BODS 0.4 | Notes | |||||||||||||||||||||
2 | components | Address | type must be of the addressType codelist | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
3 | components | Address | type must correspond with correct recordType | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
4 | components | Address | Where postal codes and country information are isolated fields in source systems, this information SHOULD be published in the dedicated fields and SHOULD NOT be published in the `address` field. | SHOULD | Not tested | TRUE | This is not testable as it depends on knowledge of source system. | |||||||||||||||||||||
5 | components | Address | postcode is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
6 | components | Address | address is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
7 | components | Address | country is a country object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
8 | components | Country | name is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
9 | components | Country | name is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
10 | components | Country | code is a string of 2 chars | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
11 | components | Country | code is the 2-letter country code (ISO 3166-1) for a country | implied MUST | Not tested | TRUE | See open issue https://github.com/openownership/lib-cove-bods/issues/53 and internal discussion https://opendataservices.plan.io/issues/50255 | |||||||||||||||||||||
12 | components | Jurisdiction | name is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
13 | components | Jurisdiction | name is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
14 | components | Jurisdiction | code is a string between 2 and 6 chars | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
15 | components | Jurisdiction | code is the 2-letter country code (ISO 3166-1) or the subdivision code (ISO 3166-2) for a jurisdiction | implied MUST | Not tested | TRUE | See open issue https://github.com/openownership/lib-cove-bods/issues/53 and internal discussion https://opendataservices.plan.io/issues/50255 | |||||||||||||||||||||
16 | components | Identifier | id is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
17 | components | Identifier | for entity statements, the scheme should be an entry from the org-id guide codelist | SHOULD | Additional check | entity_identifier_scheme_not_known | TRUE | |||||||||||||||||||||
18 | components | Identifier | for person statements, the scheme should have the pattern {JURISDICTION}-{TYPE} where JURISDICTION is an ISO 3-digit country code and TYPE is one of PASSPORT, TAXID or IDCARD | SHOULD | Additional check | TRUE | This test isn't checking the validity of the ISO country codes, any 3 letter code will pass. See open issue https://github.com/openownership/lib-cove-bods/issues/53 and internal discussion https://opendataservices.plan.io/issues/50255 | |||||||||||||||||||||
19 | components | Identifier | `scheme` or `schemeName` (or both) MUST be included in an Identifier object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
20 | components | Identifier | scheme is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
21 | components | Identifier | schemeName is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
22 | components | Identifier | uri is a uri format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
23 | components | Source | type is an array of strings from the sourceType codelist | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
24 | components | Source | description is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
25 | components | Source | url is a uri format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
26 | components | Source | retrievedAt is a date or date-time formatted string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
27 | components | Source | retrievedAt is not a future date | MUST | Additional check | TRUE | ||||||||||||||||||||||
28 | components | Source | assertedBy is an array of objects | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
29 | components | Source | assertedBy/name is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
30 | components | Source | assertedBy/uri is a uri format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
31 | components | UnspecifiedRecord | a reason must be specified | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
32 | components | UnspecifiedRecord | reason must be from the unspecifiedReason codelist | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
33 | components | UnspecifiedRecord | description is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
34 | person | Person record | isComponent is a bool | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
35 | person | Person record | Where `isComponent` is 'true': (1) the `recordId` of this person MUST be an element in the `componentRecords` array of that primary Relationship Statement, | MUST | Additional check | statement_is_component_but_not_used_in_component_statement_ids | TRUE | |||||||||||||||||||||
36 | person | Person record | Where `isComponent` is 'true': (2) this Person Statement MUST come before that primary Relationship Statement in a BODS package or stream | MUST | Additional check | statement_is_component_but_is_after_use_in_component_statement_id | TRUE | |||||||||||||||||||||
37 | person | Person record | Where `isComponent` is 'true': , (3) the replacement of this Person Statement SHOULD be considered when replacing the primary Relationship Statement. | SHOULD | Not tested | TRUE | Not testable | |||||||||||||||||||||
38 | person | Person record | The primary Relationship Statement MUST have a `isComponent` value of 'false'. | MUST | Not tested | TRUE | This is indirectly tested by statement_is_component_but_not_used_in_component_statement_ids. All isComponent rows should be considered together. | |||||||||||||||||||||
39 | person | Person record | personType is from personType codelist | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
40 | person | Person record | unspecifiedPersonDetails is an UnspecifiedRecord | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
41 | person | Person record | names is an array of Name objects | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
42 | person | Person record | identifiers is an array of Identifier objects | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
43 | person | Person record | nationalities is an array of country objects | MUST | JSON Schema | TRUE | There is not yet any unit test data for this in tests/data/invalid-statements | |||||||||||||||||||||
44 | person | Person record | placeOfBirth is an Address object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
45 | person | Person record | placeOfBirth.type is "placeOfBirth" | MUST | JSON Schema | TRUE | There is not yet any unit test data for this in tests/data/invalid-statements | |||||||||||||||||||||
46 | person | Person record | birthDate is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
47 | person | Person record | birthDate format is one of yyyy, yyyy-mm or yyyy-mm-dd | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
48 | person | Person record | [implied] deathDate is valid wrt current date and birthdate | implied MUST | Additional check | TRUE | ||||||||||||||||||||||
49 | person | Person record | deathDate format is one of yyyy, yyyy-mm or yyyy-mm-dd | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
50 | person | Person record | birthDate is not a future date | MUST | Additional check | person_birth_year_too_late | TRUE | |||||||||||||||||||||
51 | person | Person record | birthDate is not a date in the far past | MUST | Additional check | person_birth_year_too_early | TRUE | |||||||||||||||||||||
52 | person | Person record | taxResidencies is an array of Country objects | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
53 | person | Person record | addresses is an array of Address objects | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
54 | person | Person record | addresses.[n].type is one of "residence", "service", "alternative" | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
55 | person | Person record | If an address in the addresses array is of type "alternative" then there is also another address in the array | (implied) MUST | Not tested | alternative_address_with_no_other_address_types | TRUE | As address.type is not a required field this test was not implemented - suggestion to remove "alternative" from the code list https://github.com/openownership/data-standard/issues/725 | ||||||||||||||||||||
56 | person | Person record | politicalExposure is an object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
57 | person | Person record | politicalExposure/status is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
58 | person | Person record | politicalExposure/status is one of isPep, isNotPep, unknown | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
59 | person | Person record | politicalExposure/details is an array of PepStatusDetails objects | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
60 | person | Person record | personType is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
61 | person | Person record | isComponent is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
62 | person | Name | type is from the nameType codelist | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
63 | person | Name | fullName is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
64 | person | Name | fullName is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
65 | person | Name | familyName is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
66 | person | Name | givenName is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
67 | person | Name | patronymicName is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
68 | person | PepStatusDetails | reason is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
69 | person | PepStatusDetails | missingInfoReason is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
70 | person | PepStatusDetails | missingInfoReason should be supplied if politicalExposure.status is 'unknown' | SHOULD | Not tested | TRUE | ||||||||||||||||||||||
71 | person | PepStatusDetails | where missingInfoReason is present it should be the only field except for source | SHOULD | Not tested | TRUE | ||||||||||||||||||||||
72 | person | PepStatusDetails | jurisdiction is Jurisdiction object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
73 | person | PepStatusDetails | startDate is a date format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
74 | person | PepStatusDetails | endDate is a date format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
75 | person | PepStatusDetails | Where startDate and endDate exist, startDate <= endDate | MUST | Not tested | TRUE | ||||||||||||||||||||||
76 | person | PepStatusDetails | source is a Source object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
77 | statement | Statement | statementId is a string between 32 and 64 chars | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
78 | statement | Statement | statementDate is a date or date-time format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
79 | statement | Statement | statementDate is not a future date | MUST | Additional check | TRUE | ||||||||||||||||||||||
80 | statement | Statement | annotations is an array of Annotation objects | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
81 | statement | Statement | publicationDetails is an object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
82 | statement | Statement | publicationDetails/publicationDate is a date or date-time format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
83 | statement | Statement | publicationDetails/publicationDate is not a future date | MUST | Additional check | TRUE | ||||||||||||||||||||||
84 | statement | Statement | publicationDetails/bodsVersion is a string with pattern ^(\\d+\\.)(\\d+)$ | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
85 | statement | Statement | In a published BODS dataset, all Statements MUST have the same major version number. | MUST | Not tested | TRUE | Currently not tested as we haven't reached 0.1. At the moment the DRT can only handle statements with a consistent minor version number. https://github.com/openownership/lib-cove-bods/issues/124 | |||||||||||||||||||||
86 | statement | Statement | publicationDetails/license is a uri format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
87 | statement | Statement | publicationDetails/license should be the canonical URI of the license | SHOULD | Not tested | TRUE | Not testable | |||||||||||||||||||||
88 | statement | Statement | publicationDetails/publisher is an object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
89 | statement | Statement | publicationDetails/publisher/name is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
90 | statement | Statement | publicationDetails/publisher/url is a uri format string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
91 | statement | Statement | publicationDetails/publisher requires either name or url or both | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
92 | statement | Statement | publicationDetails/publicationDate is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
93 | statement | Statement | publicationDetails/bodsVersion is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
94 | statement | Statement | publicationDetails/publisher is required | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
95 | statement | Statement | source is a Source object | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
96 | statement | Statement | declaration is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
97 | statement | Statement | declarationSubject is a string | MUST | JSON Schema | TRUE | ||||||||||||||||||||||
98 | statement | Statement | declarationSubject is a recordId | MUST | Additional check | TRUE | ||||||||||||||||||||||
99 | statement | Statement | The declarationSubject recordId always relates to an entity or person. | MUST | Additional check | TRUE | ||||||||||||||||||||||
100 | statement | Statement | recordId is a string | MUST | JSON Schema | TRUE |