Skip to main content

Purpose

Two questions about one country’s defense position: how much military capacity does it fund and field, and who does it depend on for major weapons. The first comes from World Bank annual indicators, the second from SIPRI’s arms-transfer register reduced to supplier shares. Served from GET /api/military/v1/get-defense-industrial-base?country_code=<ISO2> and MCP get_defense_industrial_base. Both require a Pro subscription.
This route’s query parameter is country_code, in snake_case — unlike its siblings in this suite, which use countryCode. The name is fixed per route by the proto’s sebuf.http.query option, and the generated server reads that key only. Sending countryCode here is not rejected: the handler sees an empty country code, fails its ^[A-Z]{2}$ check, and returns HTTP 200 with available: false, which reads as “no data for this country” rather than as a bad request.

Part A — military capacity

World Bank MS.MIL.* series, one observation per country per year: Each metric carries value, year, previousValue, previousYear, source and its own available flag. The previous observation is served alongside the current one so a caller can show direction without a second request. Years differ per metric — World Bank does not publish the whole family on one clock.

Part B — supplier dependency

SIPRI publishes supplier-to-recipient transfers by year. For each importer the seeder computes, over a trailing five-year window:
  • suppliers — each supplier’s share of the importer’s total TIV
  • supplierHhi — concentration of that dependency
  • windowStartYear / windowEndYear — the window actually used
Reported 0–1 here rather than the 0–10,000 scale used for minerals. Higher means fewer dominant suppliers.

TIV is not money

The Trend Indicator Value measures transfer volume — it is a proxy for military capability delivered, calibrated to known unit production costs. It is not a price, not a contract value, and not comparable to the USD expenditure figures in Part A. Never render it with a currency symbol.

Mapping coverage

supplierHhi is computed over the full positive-TIV denominator. suppliers lists only rows whose supplier resolved to an ISO-2 country. supplierMappingCoverage is the share of positive TIV that mapped. The two are deliberately not reconciled: dropping unmapped TIV from the denominator would understate concentration by pretending the unmapped transfers did not happen. Read supplierMappingCoverage before treating the listed suppliers as exhaustive — at 0.97 the list is essentially complete; well below that, it is a sample.

Retention

supplierRetained: true means this importer’s previously published row was not refreshed in this tick. The seeder carries every prior importer forward and overlays only the current chunk as fresh, so retention is normally chunk carry-forward; a failed importer request is only one possible reason. supplierFetchedAt then reports the retained row’s original timestamp, not this tick. A retained row is real data with a known age, which is why it is served instead of an empty response.

Clocks

fetchedAt is the oldest source timestamp among the values served, so it is safe to treat as “nothing here is older than this”. Another part may be newer. industrialFetchedAt and supplierFetchedAt give the per-part clocks. The World Bank and SIPRI parts update on different schedules — SIPRI’s annual update lands each March.

Licensing

SIPRI’s terms require attribution and prohibit redistributing the full database. WorldMonitor therefore stores and serves derived per-country supplier shares, never the trade register itself. The licensing table in Data sources records the terms.