International Organizations

International Organizations and Country Membership

Labels

GeographyPolitics

Last released

License

Public Domain Mark 1.0

Attribution

This dataset has been compiled through web-search by Claude Opus 5.

Tables 3

19 rows 11 columns 3 links
Description

The 19 international organizations this dataset covers — political, economic, energy and military bodies, including several that no longer exist. Each has a short text id that the membership records point at; use it rather than the short name, which changes over time (BRIC became BRICS). Founding dates are not all the same kind of event, so read founded_date alongside founded_date_basis — some are treaty signings, some entries into force, and the informal forums like the G7 and G20 have no founding treaty at all. An empty dissolved_date means still active. Predecessor bodies are separate organizations: the EEC is not the EU. notes records the distinctions that are easy to get wrong.

Columns
org_id key String Stable lowercase slug identifying the organization. The join key used by the memberships table. Chosen over the short name because short names change (BRIC became BRICS, the G6 became the G7) while the row's identity does not.
short_name String Common abbreviation or short form as normally written (EU, OPEC, G7). Display label, not a key — not guaranteed unique or stable over time.
full_name String Full official name in English. Left as the acronym for BRICS, which has no expanded official form.
org_type String Broad category: political, economic, political_economic, energy, or military. A convenience grouping for filtering, not an official classification — several of these organizations span categories and the assignment is a judgement call.
founded_date Date Date the organization came into being. Read together with founded_date_basis: these dates are NOT all the same kind of event, because treaty-based bodies and informal forums have no comparable founding moment. Precision is genuine to the day for treaty bodies and conventional for forums such as the G7, G20 and BRICS.
founded_date_basis String What founded_date actually marks: treaty_signed, treaty_in_force, charter_in_force, convention_in_force, statute_in_force, founding_agreement, founding_conference, founding_meeting or first_summit. Exists because comparing founding dates across these organizations is otherwise misleading — NATO's date is a signing while the UN's is entry into force, and the informal forums have no legal instrument at all.
predecessor_org_id key String org_id of the body this one was reorganized from, where the predecessor is a distinct organization rather than a rename. Nullable. Kept so that pre-succession membership can be recorded against the body that actually existed at the time, mirroring how historical states are handled on the country side.
source_url String Primary source for the founding date and history, preferring the organization's own site. Blank for the informal forums, which publish no authoritative founding record.
notes String Scope and modelling notes for this organization: what its membership timeline will contain, which cases will be awkward, and any distinction that is easy to get wrong (OPEC versus OPEC+, NATO membership versus integrated-command participation, invitation versus accession). Written for whoever loads the memberships rows next.
wikidata_qid String Wikidata entity identifier (Q-number) for the organization, as an external join key to Wikidata and anything keyed on it. POPULATED ONLY WHERE VERIFIED against the Wikidata entity page — blank means not yet confirmed, not that no QID exists. Every organization here almost certainly has one; the blanks are unfinished work rather than absent facts. Same convention as ISIN elsewhere in MyCorr: an unverified identifier is worse than a missing one, because a wrong QID silently joins to the wrong entity.
dissolved_date Date Date the organization ceased to exist, was dissolved, or was reorganized into its successor. Null means still active. Where an organization was superseded rather than wound up, this is the date the successor took over, so predecessor and successor meet without a gap — OEEC ends 1961-09-30 as OECD begins, Shanghai Five ends 2001-06-15 as the SCO begins. Needed because roughly a third of the rows here are historical bodies whose memberships must not appear live in a point-in-time query.

201 rows 12 columns 3 links
Description

Which countries belonged to which organizations, and when — one row per unbroken stretch of time a country held a given status in a given organization. valid_to is the first day not covered, so membership ends the day before it; empty means current. An interrupted membership appears as several rows: a country that left and rejoined has no row for the gap, while a suspended one does. Identify countries by entity_id, not the two- or three-letter codes, which are incomplete and have been reused. States that ceased to exist get their own rows, with succeeds_entity_id noting any inherited seat. Excluded by design: declined invitations, territory-level arrangements, disputes that stopped short of an actual membership change, and wider groupings like OPEC+. Where a source gave only a year or month, the date falls back to the 1st and notes says so.

Columns
membership_id String
org_id key String
entity_id key String
member_kind String
status key String
valid_from Date
valid_to Date
start_reason String
end_reason String
succeeds_entity_id String
source_url String
notes String

11 rows 8 columns 2 links
Description

What each kind of membership means — member, suspended, observer, candidate, associate, partner. Two columns answer different questions: counts_as_member is whether it counts as membership, is_active is whether the country is actually taking part. A suspended country separates them — still a member, not participating. Most rows are general definitions; where an organization uses a word differently, it has its own row naming that organization, which takes precedence over the general one.

Columns
status_id String Primary key. For default rows this equals status_code; for org-specific overrides it is status_code + '__' + org_id (e.g. partner__sco). A surrogate key is needed because status_code alone is not unique once overrides exist.
status_code key String The status value as written in the memberships table: member, suspended, observer, candidate, associate or partner. This is the join key from memberships, not status_id — memberships stores the code and the org, and resolution finds the right row from those two.
org_id key String NULL for the default definition applying to every organization; set to an org_id to override that status for one organization only. Unique on (status_code, org_id). RESOLUTION RULE: match on both status_code and org_id first, and fall back to the row where org_id IS NULL. In SQL, join on (s.status_code = m.status AND (s.org_id = m.org_id OR s.org_id IS NULL)) and keep one row per membership ordering by org_id NULLS LAST — the join returns two rows wherever an override exists, so without that the override and the default both survive.
label String Human-readable name for display. Override rows name the organization's own term for the tier (the SCO says 'dialogue partner', not 'partner'), which is often the more recognizable label.
definition String What the status means in substance: what rights or obligations it carries and how it differs from adjacent statuses. Default rows are deliberately generic, since a single global definition cannot capture what an observer means at both the OECD and the SCO. Where the difference is material, add an override rather than making the default vaguer.
counts_as_member Boolean Whether this status counts as membership for aggregate questions like 'how many members did OPEC have in 1985'. The intended query-time filter, so that callers never hardcode lists of status strings that go stale when a status is added. True for member and suspended only.
is_active Boolean Whether the country is actually participating under this status. Deliberately independent of counts_as_member: a suspended country is a member that is not participating, so the two booleans answer different questions and only differ on that status today. Use counts_as_member to count members and is_active to count participants.
notes String Guidance for whoever loads memberships using this status: edge cases, statuses it is easy to confuse with this one, and where the default classification is debatable rather than settled.

Linked datasets

Datasets that join to International Organizations in the Mycorr graph.