changedInput schema / properties / countries / anyOf
Previous value: -[
- {
- "description": "A single two-character code, or a comma- or semicolon-separated list of them.",
- "type": "string"
- },
- {
- "description": "An array of two-character codes.",
- "items": {
- "description": "A two-character country code.",
- "type": "string"
- },
- "type": "array"
- }
-]New value: +[
+ {
+ "description": "A single country code, or a comma- or semicolon-separated list of them.",
+ "type": "string"
+ },
+ {
+ "description": "An array of country codes.",
+ "items": {
+ "description": "An ISO3, ISO2, or World Bank regional code.",
+ "type": "string"
+ },
+ "type": "array"
+ }
+]
changedInput schema / properties / countries / description
Previous value: -"Borrowing countries, by the two-character code this API keys on: ISO2 for an economy (BR), or a World Bank regional code for a multi-country operation (3A for Africa, 4E for East Asia and Pacific). Several codes are combined as OR — a project matching any of them is returned. Omit for every country."New value: +"Borrowing countries: an economy by ISO3 or ISO2 code (BRA or BR), or a World Bank regional code for a multi-country operation (3A for Africa, 4E for East Asia and Pacific). Several codes are combined as OR — a project matching any of them is returned. Yemen, DR Congo, West Bank and Gaza, and Timor-Leste are searched under the legacy codes the portfolio files them by (RY, ZR, GZ, TP), which are also accepted as sent. A WDI aggregate (SSF, WLD, SAS) is rejected; use region for a regional search. Omit for every country."
addedInput schema / properties / financial_type
Added value: +{
+ "description": "Financing windows to include, combined as OR: a project matches when its financialTypes holds any of them. IBRD, IDA, Grants, Other are the complete set, case-sensitive. A project that publishes no financing window — 36% of the portfolio, older and dropped operations mostly — never matches. The Grants window says how an operation is financed; it is not the grantAmount figure.",
+ "items": {
+ "enum": [
+ "IBRD",
+ "IDA",
+ "Grants",
+ "Other"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+}
changedInput schema / properties / query / description
Previous value: -"Free-text search across project names, abstracts, and objectives. Every word must appear, so extra words narrow the result. Omit to browse the portfolio by filter alone, newest board approvals first."New value: +"Free-text search across project names, abstracts, and objectives. Every word must appear, so extra words narrow the result. A balanced quoted phrase and AND or OR between words parse; brackets, braces, an unmatched double quote, a slash between words, a trailing backslash, an AND or OR at either end, a trailing NOT, and # are not. Omit to browse the portfolio by filter alone. Results come newest board approval first either way."
changedOutput schema / properties / appliedFilters / properties / countries / description
Previous value: -"Country codes as sent upstream — uppercased and comma-joined here for readability, though the API itself takes them caret-separated. Omitted when no country filter was applied."New value: +"Country codes as sent upstream — each resolved to the code the portfolio keys on (BRA → BR, YEM or YE → RY), uppercased, deduplicated, and comma-joined here for readability, though the API itself takes them caret-separated. Omitted when no country filter was applied."
addedOutput schema / properties / appliedFilters / properties / financialType
Added value: +{
+ "description": "Financing windows applied, comma-joined, omitted when none.",
+ "type": "string"
+}
changedOutput schema / properties / error / properties / data / properties / reason / description
Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_country_code`: A countries entry is not a two-character code — most often an ISO3 code such as BRA, which the Projects API does not key on. `invalid_date`: approved_from or approved_to is shaped YYYY-MM-DD but names no real day — a month outside 01–12, or a day outside its month. `reversed_date_range`: approved_from falls after approved_to, an interval no project can match. `page_out_of_range`: The requested page starts past the 100,000-result offset the Projects API serves. `upstream_unavailable`: The Projects API answered with a non-success status or an HTML error page: a 4xx when it refuses the query text, a 5xx or an error page when it cannot serve the search. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_country_code`: A countries entry resolves to no economy: it is not two or three letters or digits, no economy in the World Bank country index has that three-character code, or it is a WDI aggregate such as SSF or WLD, which the portfolio lists no operations under. `invalid_date`: approved_from or approved_to is shaped YYYY-MM-DD but names no real day — a month outside 01–12, or a day outside its month. `reversed_date_range`: approved_from falls after approved_to, an interval no project can match. `invalid_query`: The Projects API could not parse query and answered HTTP 400, or query contains #, which the API answers with rows unrelated to the search. `page_out_of_range`: The requested page starts past the 100,000-result offset the Projects API serves. `upstream_unavailable`: The Projects API answered with a non-success status other than a query it could not parse — a rate limit, a timeout, a 5xx — or with an HTML error page, or the World Bank Indicators API country listing that resolves an ISO3 code could not be loaded. Other values are possible when a failure originates below the handler."
changedOutput schema / properties / error / properties / data / properties / reason / examples
Previous value: -[
- "invalid_country_code",
- "invalid_date",
- "reversed_date_range",
- "page_out_of_range",
- "upstream_unavailable"
-]New value: +[
+ "invalid_country_code",
+ "invalid_date",
+ "reversed_date_range",
+ "invalid_query",
+ "page_out_of_range",
+ "upstream_unavailable"
+]
changedOutput schema / properties / projects / description
Previous value: -"Projects on this page, newest board approval date first — the order the API returns and the order pagination walks."New value: +"Projects on this page, newest board approval date first with or without query, and projects with no board date last. Pagination walks the same order."
changedOutput schema / properties / projects / items / properties / countryCodes / description
Previous value: -"Two-character code of the borrowing country — ISO2 for an economy, a World Bank regional code such as 3A for a multi-country operation. Upstream publishes it as a list, though every project in the portfolio carries exactly one."New value: +"Two-character code of the borrowing country — the economy's ISO2 code, which chains into the other tools (YE for Yemen, though the portfolio files it under RY), or a World Bank regional code such as 3A for a multi-country operation. Upstream publishes it as a list, though every project in the portfolio carries exactly one."
changedOutput schema / properties / projects / items / properties / financialTypes / description
Previous value: -"Financing windows behind the operation: IBRD, IDA, Grants, or Other. A blended operation lists more than one."New value: +"Financing windows behind the operation: IBRD, IDA, Grants, Other — the values financial_type filters on. A blended operation lists more than one; empty where the project publishes none."
addedOutput schema / properties / projects / items / properties / grantAmount
Added value: +{
+ "description": "Grant amount in USD: trust-fund grants and, on some operations, other agencies' co-financing recorded on the project, so it is not all World Bank money. Counted in totalCommitment. It is its own figure, unrelated to which financialTypes the project lists.",
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / projects / items / properties / ibrdCommitment
Added value: +{
+ "description": "IBRD commitment in USD. Null when the project publishes no IBRD or IDA amount, as on a grant-only operation — not a commitment of zero.",
+ "type": [
+ "number",
+ "null"
+ ]
+}
addedOutput schema / properties / projects / items / properties / idaCommitment
Added value: +{
+ "description": "IDA commitment in USD, IDA grants included. Null when the project publishes no IBRD or IDA amount — not a commitment of zero.",
+ "type": [
+ "number",
+ "null"
+ ]
+}
changedOutput schema / properties / projects / items / properties / totalCommitment / description
Previous value: -"Total World Bank commitment in USD. Null on just over half the portfolio, which publishes no amount — dropped and older operations mostly — and that is not the same as a commitment of zero."New value: +"Commitment amount in USD as the project page reports it: ibrdCommitment + idaCommitment + grantAmount. Null on 35.8% of the portfolio (28,153 projects, 2026-09-25), which publishes no amount — dropped and older operations mostly — and that is not the same as a commitment of zero. It can include other agencies' co-financing through grantAmount; World Bank lending alone is ibrdCommitment + idaCommitment."
changedOutput schema / properties / projects / items / required
Previous value: -[
- "id",
- "name",
- "status",
- "countryCodes",
- "countryName",
- "regionName",
- "boardApprovalDate",
- "closingDate",
- "totalCommitment",
- "financialTypes",
- "majorSectors",
- "abstract",
- "url"
-]New value: +[
+ "id",
+ "name",
+ "status",
+ "countryCodes",
+ "countryName",
+ "regionName",
+ "boardApprovalDate",
+ "closingDate",
+ "totalCommitment",
+ "ibrdCommitment",
+ "idaCommitment",
+ "grantAmount",
+ "financialTypes",
+ "majorSectors",
+ "abstract",
+ "url"
+]