Skip to main content
IATI - International Aid Transparency Initiative
  • Lang:
  • EN
  • FR
  • News
  • Events
  • Contact
  • About

    About IATI

    Our work involves making data on development and humanitarian spending and projects easier to access, use and understand. Organisations publish information according to the rules and guidance set out in the IATI Standard and this data is freely available and open to anyone in the world.

    Read more

    Introduction to IATI

    Read basic information about our initiative.

    • How IATI works
    • Who is IATI for?
    • Why use IATI?
    • About the Standard
    • The IATI story so far

    Case studies

    See how IATI data is used to improve decisions and accountability.

    • Madagascar case study
    • Oxfam Novib case study
    • AfDB's IATI portal improves development investments
  • IATI Standard

    IATI Standard

    The IATI Standard is a set of rules and guidance on how to publish useful development and humanitarian data. Find out the full range of data included in the IATI Standard and more about its technical format.

    Read more

    Using the reference site

    IATI Reference is an ‘instruction manual’ giving details of all the ‘parts’ you’ll need to build your datafiles.

    • How to use IATI Reference

    Standard documentation

    Find details of all the elements and attributes that can be included in IATI data.

    • Activity Standard
    • Organisation Standard
    • Codelists

    Developer documentation

    Explore how IATI data and the schema can be imported and used in different platforms.

    • IATI Developer Documentation
    • IATI Datastore
  • Using Data

    Using IATI data

    IATI data can be an invaluable resource for anyone searching for information on development or humanitarian spending and projects.

    Read more
    • Tools and resources
    • Types of data available
    • How do I use IATI data?
    • How to get help with using IATI data
    • IATI data use research
  • Tools & Resources

    Tools and resources

    Use IATI tools and resources to enable you to publish, improve and use IATI data.

    Read more

    d-portal

    Search key data on development and humanitarian activities presented in charts, graphs and maps. Recommended for users who are new to IATI.

    Visit d-portal

    IATI Datastore

    Use Datastore Search to download a wide range of IATI data in CSV, JSON and XML formats. Use IATI’s API to build complex searches.

    Visit Datastore

    IATI Validator

    Check if your data files align with the rules and guidance of the IATI Standard. Run checks on data files published by all other organisations.

    Visit Validator

    Additional IATI tools

    • IATI Registry
    • Country Development Finance Data
    • IATI Dashboard
    • API Gateway
    • Third-party tools and services for data use
  • Guidance & Support

    Guidance and support

    Find out how to publish data to the IATI Standard and improve your data by using our publishing guidance.

    Read more

    Standard overview

    Understand what data you can publish to IATI.

    • Key qualities of IATI data
    • What data should I publish?
    • Donors' reporting requirements

    Publishing guidance

    Understand how to create, check and publish your IATI files.

    • Publishing checklist
    • How to create your IATI organisation identifier
    • Data quality and visualisation

    Standard guidance

    Find guides on to how interpret specific areas of the IATI Standard.

    • COVID-19 related data
    • Sustainable Development Goals (SDGs)

    Get support

    Contact the IATI Helpdesk with questions about using and publishing IATI data, and other technical enquiries.

  • Get Involved

    Get Involved

    Find out how to join IATI as a member, engage with IATI’s community and access useful resources about the initiative.

    Read more

    IATI Community

    Engage in IATI's Communities of Practice.

    IATI Connect

    Membership

    Discover the benefits of joining IATI as a member.

    Join IATI

    Present IATI

    Access custom presentation materials on IATI.

    Learn more
    • IATI Videos
    • IATI Membership Pack
    • Working Groups
    • External resources
  • Governance

    Governance

    IATI is governed and funded by our members and run by the Governing Board and Secretariat.

    Read more

    Who runs IATI?

    Meet the Governing Board and Secretariat and understand their roles and responsibilities.

    Governing Board and Secretariat

    Membership

    Discover the benefits of joining IATI as a member.

    List of members
    • IATI future hosting arrangements post 2022
    • IATI Strategic Plan 2020-2025
    • Finances
    • IATI workplan
    • Annual reports
    • Governance documents
    • Members’ Assembly
  • News
  • Events
  • Contact
  • Lang:
  • EN
  • FR

Reference

  • IATI Developer Documentation
  • (GitHub) Contributor Covenant Code of Conduct
  • Code of practice
  • Codelist API
  • Design principles
  • Developer Community
  • Developer contributions
  • Guidance
  • IATI Normative and Non-normative content
  • IATI Software Deprecation Process
  • IATI Software Versioning Protocol
  • IATI Standard (Single Source of Truth)
  • IATI code examples
  • Non-functional Requirements
  • Notes about IATI Python Code
  • Open source tools: IATI GitHub
  • Security considerations
  • Useful XQuery queries
  • Guidance and support
  • IATI Developer Documentation
  • Codelist API

Codelist API

IATI provides two machine readable ways for people to consume the codelists needed to create and interpret IATI data.

You can:

  1. use the Codelist API to request a codelist via a URL

  2. from version 1.04 of the IATI standard upwards, you can work directly with our GitHub repositories

API Calls

To download a codelist. Select your endpoint (see below) and then specify the codelist name and the format:

<endpoint><codelist name>.<extension (xml/json/csv)>

Codelist Mappings

There exists a machine readable mapping from attributes to the codelist they should be on. This is available on GitHub as an XML file:

https://github.com/IATI/IATI-Codelists/blob/version-2.0{1,2,3}/mapping.xml

It is also available as XML and JSON from the codelist API:

http://iatistandard.org/{105,201}/codelists/downloads/clv{1,2,3}/mapping.{xml,json}

Endpoints

The codelists used in each version of the standard are derived from different endpoints as a result of the historical management of the codelist API. From May 2014, these are now under in-house control at IATI.

Therefore anyone relying on the services at:

  • http://datadev.aidinfolabs.org/data/, or

  • http://data.aidinfolabs.org/data/

is strongly advised to migrate to the new endpoints given below.

  • v1.01 of the standard - used datadev - change to http://codelists102.archive.iatistandard.org/data/

  • v1.02 of the standard - used datadev - change to - http://codelists102.archive.iatistandard.org/data/

  • v1.03 of the standard - used data - change to - http://codelists103.archive.iatistandard.org/data/

Codelists in Version 1.x after v1.03 (e.g. v1.04, v1.05) of the standard

In v1.04 of the standard a new codelist structure was introduced. See ‘Why create a new structure for codelists?’ below.

We call this ‘codelist version 2 (CLv2)’. This forms the ‘single source of truth’ from which codelists in various forms can be produced.

As this new structure would force a change on data users/producers to alter their routines for consuming codelists, we use the single source of truth to generate codelists in the previous format that they are used to. We named that format ‘codelist version 1 (CLv1)’.

Data users/producers can choose which format they wish to consume via the API. To stick with the old format, use CLv1.

The codelists matching the highest decimal version of the version 1.x standard will always be found using either:

  • http://iatistandard.org/codelists/downloads/clv1/, or

  • http://iatistandard.org/codelists/downloads/clv2/

To ‘lock in’ to a particular version of the codelists (above v1.03) you may specify

  • http://iatistandard.org/<version>/codelists/downloads/clv1/

For example: (note: use version number without the decimal point)

  • http://iatistandard.org/104/codelists/downloads/clv1/ will always return v1.04 codelists

  • http://iatistandard.org/105/codelists/downloads/clv1/ will always return v1.05 codelists

By locking into a specified version in this way, you can always guarantee you are getting the lists associated with that particular version of the standard, and not accidentally move up to a new version when a new version is released.

From version 1.04 onwards, developers might also choose to work directly with GitHub to get the data (see below).

New Codelist version (CLv3) in Version 2.01 of the IATI Standard

Version 2.01 of the IATI Standard sees a significant change to the way multilingual text can be reported. (see http://iatistandard.org/201/upgrades/integer-upgrade-to-2-01/migrating/#handling-translations)

As codelists can also supply definitions and descriptions in multiple languages, we decided to bring the XML format of the codelists into line with rest of the standard.

This change applies to the ‘source’ XML files from which the codelist API, the documentation on the website, and so on, is generated.

We are changing the format of the source XML in the IATI-Codelists and IATI-Codelists-NonEmbedded repositories. This is the third change we have made to the codelist format over the lifetime of IATI, so we are calling this CLv3 (Code List format version 3). The XML schema that defines the new format is available here: https://github.com/IATI/IATI-Codelists/blob/version-2.01/codelist.xsd

Anyone who fetches their codelists directly from GitHub will be affected by this change.

Developers dealing with version 1.04, 1.05 (and any subsequent version 1.x decimal versions) data with need to work with both the CLv2 format in the IATI-Codelists repository on the version-1.x branch, AND the CLv3 version of the IATI-Codelists-NonEmbedded repository (master branch)

However, the old XML formats (CLv1,CLv2) are still available from the web API. Since the API is versioned, the new CLv3 XML will only be served via the API to those explicitly requesting it.

To compare the old style XML with the new see for example:

Old style XML (CLv2):

  • http://iatistandard.org/201/codelists/downloads/clv2/xml/ActivityDateType.xml

New Style XML (CLv3):

  • http://iatistandard.org/201/codelists/downloads/clv3/xml/ActivityDateType.xml

Working with GitHub Directly

The codelist source is now on GitHub:

Core (Previously Embedded) Codelists

As of version 1.04, each version of the standard has it’s own branch in this repository. Branches are named version-<version-number> e.g. version-1.05. So, for example, the version 1.05 codelists can be found at:

  • https://github.com/IATI/IATI-Codelists/tree/version-1.05/xml

Non-Core and Replicated (Previously Non-Embedded) Codelists

These values on these lists can change independently of IATI versions. The latest versions are always on the ‘master’ branch.

  • https://github.com/IATI/IATI-Codelists-NonEmbedded/tree/master/xml

This repository now uses the Codelist Version 3 format.

We use this source to create all derived versions, (CSV, JSON and all forms of codelist version 1, and codelist version 2 files, as well as all the documentation on the iatistandard.org website)

If you wish to use the new style XML, or are prepared to run the supplied python scripts for converting to a different format of your choice, you can fetch the codelists from GitHub directly.

Developers dealing with version 1.04, 1.05 (and any subsequent version 1.x decimal versions) data with need to work with both the CLv2 format in the IATI-Codelists repository on the version-1.x branch, AND the CLv3 version of the IATI-Codelists-NonEmbedded repository (master branch)

Why did we create a new structure for codelists for version 1.04?

As part of our move towards creating a Single Source of Truth (SSOT) for the IATI Standard, we have started to take a different approach to codelists. See background paper previously circulated: https://docs.google.com/document/d/1oeH-8BFB__2IYF4MLnUwx2LcXZCVd5e-iYsXtQ4ViTk/edit

As this work progressed, it became evident that for the codelists to work in that environment we would need to make a few changes. As a result:

  1. The newer codelist files are more consistent:

  • they don’t include the element name as a tag name

  • all have language information described the same way as IATI XML.

  1. There is also a codelist schema that all the source XML validates against - https://github.com/IATI/IATI-Codelists/blob/version-1.04/codelist.xsd.

  2. Finally, more metadata, including a description, is now included in the codelists.

If you rely on the codelist API you should also read the notes on ‘Codelist API Compatibility in version 1.04 of the IATI Standard and above’ below.

Codelist API Compatibility in version 1.04 of the IATI Standard and above

For version 2.01 data, a more sustainable approach would be to migrate your codelist handling routines to deal with the latest CLv3 format.

If moving from a version before 1.04 to a higher 1.x decimal version you might first consider moving your data to version 2.01 instead. If you decide to upgrade to a higher 1.x version, you should consider going to the highest decimal version your data can accommodate. If you do this you may not need to alter the way you deal with codelists, but there are a few things that anyone relying on CLv1 should be aware of.

  • The ‘metadata’ link/call is no longer available (instead, some of this is now available in the CLv2 style code lists, and some is stored in the github repository metadata to be consistent with the rest of the Single Source of Truth)

  • Only the latest versions (those required in v1.04 of the standard and above) will be available through the API. If you need an older version use the static archives detailed above.

  • URLs containing the version and/or language do not work. (for example in the past a url like: /data/codelist/AidTypeFlag/version/1.0/lang/en was possible. This will not work using the /codelists/downloads/clv1/ endpoint. Instead, translations, where available, are maintained in the codelist version 2 (CLv2) files.

  • The ‘fields’ element is no longer provided in the index XML/JSON (See http://data.aidinfolabs.org/data/codelist.xml and compare with http://iatistandard.org/codelists/downloads/clv1/codelist.xml

  • Version information is no longer provided in the XML.

  • Specific changes to codelists:

    • The BudgetIdentifier codelist has different categories, and no ‘sector’ elements.

    • Names in the FileFormat codelist are no longer there as they make little sense, and the list now tracks the IANA source it is derived from directly.

Useful links

  • Contact
  • Privacy policy
  • Translation FAQs
  • Data removal

Newsletter

Copyright IATI 2023. All rights reserved

  • Twitter
  • YouTube