Standard Ruleset
The Standard Ruleset is a collection of rules that cover most of the requirements of the IATI Standard and that a computer could, in principle, test. Typically, these are rules about the data that cannot be enforced by the IATI schema alone. It covers for example, the ordering of dates, percentages adding to 100, checks on the format of an iati-identifier and others.
We have created a generic framework that allows us to express many of these rules in a way that machines can understand and humans can interpret by reading a simple error message.
The IATI Validator V2 uses these rules to programmatically validate IATI files. The code used to interpret these rules and validate an IATI file are part of the validator GitHub repository IATI/js-validator-api.
There are some things given in definitions of elements that really only a human can interpret, such as “Is a title meaningful?”. The Standard Ruleset does not even try to deal with cases such as this.
Using the Standard Ruleset
The current Standard Ruleset is a collection of rules that can be used to test the data in a single iati-activity
or iati-organisation
record.
IATI data is often found as large files containing collections of (for example) activities, so to test a file of IATI data against the Standard Ruleset means running the tests on each iati-activity
or iati-organisation
record in that file.
Every iati-activity
or iati-organisation
record has the option to use different elements of the IATI Standard, and to also repeat certain elements, so in defining a Standard Ruleset it is necessary to include rules that may or may not need to apply for each individual iati-activity
or iati-organisation
record.
If we take a transaction
from an iati-activity
record as an example, we can see that this element does not have to be reported. However, it may also be reported many times. There are rules in the Standard Ruleset to check that some of the data reported in transactions makes sense, so these tests could either be run many times, or not at all on a single iati-activity
record.
Hence, the minimum and maximum number of tests undertaken on an iati-activity
or iati-organisation
can fluctuate according to the content.
Full list of IATI Rules
The full list of IATI rules are defined in a JSON file as part of our Single Source of Truth that can be consumed programmatically. The list below has been generated from that source. You can see the error/warning message in plain English and also an id link that would direct you to the source JSON. You will see in the JSON file there that there is a severity reference. All MUST statements are defined as errors (rules) and all SHOULD statement are defined as warnings (recommended guidance).
/iati-activities/iati-activity
1.1.3: The activity identifier must be different to the organisation identifier of the reporting organisation.
1.1.21: The activity identifier should begin with your IATI organisation identifier (either the current IATI Organisation identifier for the reporting organisation or a previous version included in other-identifier element) followed by a unique string for the activity separated by a hyphen
1.3.1: The iati-identifier should not start or end with spaces or newlines.
1.3.13: The iati-identifier must not contain any of the symbols /, &, | or ?.
1.6.1: The previous activity identifier should not start or end with spaces or newlines.
1.7.1: The related activity identifier should not start or end with spaces or newlines.
1.14.1: The reporting-org identifier should not start or end with spaces or newlines.
1.14.8: The reporting organisation id must start with an approved agency code.
1.14.13: The reporting-org identifier must not contain any of the symbols /, &, | or ?.
1.16.1: The previous reporting organisation identifier should not start or end with spaces or newlines.
2.1.1: When multiple sectors, within a vocabulary (e.g. 1 - OECD DAC) are declared, each must have a percentage.
2.1.2: Percentage values for sectors, within a vocabulary (e.g. 1 - OECD DAC), must add up to 100%.
2.1.4: When a single sector is declared, the percentage must either be omitted, or set to 100.
2.2.1: When using a reporting organisation sector code (vocabulary 98 or 99), it must include a narrative.
3.1.1: When multiple recipient countries are declared, each must have a percentage.
3.1.2: Percentage values for recipient countries, must add up to 100%.
3.1.4: When a single recipient country is declared, the percentage must either be omitted, or set to 100.
3.4.1: When multiple recipient countries or regions are declared, each must have a percentage.
3.4.2: Percentage values for recipient countries or regions, must add up to 100%.
3.4.4: When a single recipient region in a vocabulary is declared, the percentage must either be omitted, or set to 100.
3.6.2: Recipient countries or regions must only be declared at activity level OR for all transactions.
3.7.1: Recipient country or recipient region should be declared for either the activity or for all transactions.
3.7.2: Recipient country or recipient region should be declared for either the activity or for all transactions.
4.1.1: The activity should specify a default language OR the language must be specified for each narrative element.
6.2.2: Each activity must have a specified sector, either at activity level OR for all transactions.
6.6.2: Sectors must only be declared at activity level OR for all transactions.
6.7.2: If sector is declared at transaction level, a sector must be declared for all transactions.
6.11.1: The activity must have a planned start date or an actual start date.
7.8.1: The activity should specify a default currency OR the currency must be specified for each monetary value.
11.1.1: The last updated datetime of the activity must not be in the future.
11.1.2: The planned start date of the activity must be before the planned end date.
11.1.3: The actual start date of the activity must be before the actual end date.
11.1.4: The actual start date of the activity must not be in the future.
11.1.5: The actual end date of the activity must not be in the future.
11.2.1: The transaction date must not be in the future.
11.2.2: The transaction value date must not be in the future.
12.1.2: The region percentage value must be 0.0 or positive.
12.1.2: The country percentage value must be 0.0 or positive.
12.2.2: The percentage value must be 0.0 or positive.
12.3.2: The sector percentage value must be 0.0 or positive.
102.1.1: When a non OECD DAC sector vocabulary is used, sector vocabulary 1 - OECD DAC should also be used.
/iati-activities/iati-activity/other-identifier/owner-org
/iati-activities/iati-activity/transaction/provider-org | /iati-activities/iati-activity/planned-disbursement/provider-org
1.4.1: The provider-org activity identifier should not start or end with spaces or newlines.
1.10.1: The provider organisation identifier should not start or end with spaces or newlines.
1.10.13: The provider organisation identifier must not contain any of the symbols /, &, | or ?.
6.9.1: The provider organisation must have an organisation identifier or a narrative.
/iati-activities/iati-activity/transaction/receiver-org | /iati-activities/iati-activity/planned-disbursement/receiver-org
1.5.1: The receiver-org activity identifier should not start or end with spaces or newlines.
1.15.1: The receiver-org identifier should not start or end with spaces or newlines.
1.15.13: The receiver-org identifier must not contain any of the symbols /, &, | or ?.
6.9.2: The receiver organisation must have an organisation identifier or a narrative.
/iati-activities/iati-activity/policy-marker
/iati-organisations/iati-organisation
1.12.1: The organisation-identifier should not start or end with spaces or newlines.
1.12.13: The organisation-identifier must not contain any of the symbols /, &, | or ?.
1.17.1: The recipient organisation identifier should not start or end with spaces or newlines.
1.18.1: The reporting-org identifier should not start or end with spaces or newlines.
1.18.8: The reporting organisation id must start with an approved agency code.
1.18.13: The reporting-org identifier must not contain any of the symbols /, &, | or ?.
4.5.1: The organisation should specify a default language, or the language should be specified for each narrative element.
7.8.2: The financial value must have a specified currency, or the organisation must declare a default currency.
11.4.1: The last updated datetime of the organisation must not be in the future.
/iati-activities/iati-activity/participating-org
1.8.1: The participating-org identifier should not start or end with spaces or newlines.
1.8.13: The receiver-org identifier must not contain any of the symbols /, &, | or ?.
1.9.1: The participating-org activity identifier should not start or end with spaces or newlines.
6.10.1: The participating organisation must have an identifier or a narrative.
/iati-activities/iati-activity/planned-disbursement
8.6.3: The start of the period must be before the end of the period.
/iati-activities/iati-activity/budget
/iati-organisations/iati-organisation/total-budget
/iati-organisations/iati-organisation/recipient-country-budget
/iati-organisations/iati-organisation/recipient-org-budget
/iati-organisations/iati-organisation/recipient-region-budget
/iati-activities/iati-activity/result/indicator
8.11.1: A reference code must only be declared at result OR result indicator level.
/iati-activities/iati-activity/result/indicator/period
8.6.1: The start date of the indicator period must be before the end date of the indicator period.
/iati-organisations/iati-organisation/total-expenditure
//title
4.3.1: The title must contain narrative content.
//description
4.4.1: The description must contain narrative content.