uk-parliament-mcp-server
An open-source MCP server that provides access to UK Parliament data including bills, members, votes, Hansard records, written questions, and committees. It supports searching and retrieving detailed parliamentary records via STDIO or Streamable HTTP transports without requiring an API key.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://uk-parliament.caseyjhand.com/mcpWhat you can do with it
- Search Westminster bill summaries by title, House, session, or status
- Retrieve detailed bill stages, amendments, and publications
- Find current and former MPs and peers with voting history
- Search Hansard spoken contributions and written questions
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- uk-parliament-mcp-server 0.1.2
- MCP protocol
- 2025-06-18
- Tools
- 9 advertised
- Resources
- 0 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"subscribe": true,
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
9 advertised
ukparl_lookup_reference — Ukparl Lookup Reference
Resolve Parliament filter IDs and inspect source coverage before searching. Use identifiers for ID namespaces and required selectors, coverage for Hansard date limitations, or a named reference topic for filter IDs. Follow opaque collection cursors with the same filters; use contentCursor to reconstruct an oversized selected payload.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"topic"
],
"properties": {
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Commons or Lords; required for active parties."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 9007199254740991,
"description": "Requested whole reference rows; positive safe integer, default 10, effective cap 20.",
"exclusiveMinimum": 0
},
"topic": {
"enum": [
"identifiers",
"coverage",
"bill_stages",
"bill_types",
"parties",
"departments",
"answering_bodies"
],
"type": "string",
"description": "Reference topic or static identifier/coverage guide."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque collection cursor; repeat the same normalized filters."
},
"nameContains": {
"type": "string",
"minLength": 1,
"description": "Case-insensitive AND tokens over the complete named reference set."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Opaque same-selection recursive content continuation."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective maximum whole reference rows per call."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Whole reference-row pagination.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_mode_arguments",
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"invalid_cursor",
"source_changed"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_mode_arguments`: A static topic has live filters, parties lacks House, or another topic has House. `http_invalid_params`: The official reference API rejects request parameters. `http_unauthorized`: The official reference API requires authorization unexpectedly. `http_forbidden`: The official reference API denies access. `http_conflict`: The official reference API reports a conflicting request state. `http_rate_limited`: The official reference API or local origin queue is rate limited. `http_invalid_request`: The official reference API rejects the request or redirects it. `invalid_cursor`: A content or collection cursor is malformed or bound to another selection. `source_changed`: The selected normalized payload changed during content continuation. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Reference decimal identifier within the selected topic."
},
"url": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House label, or selected active-party House."
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"rel": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"href": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"method": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Published relationship link; href may be relative.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Published party wrapper relationships."
},
"target": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"category": {
"type": [
"string",
"null"
],
"description": "Bill type category."
},
"imageUrl": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"shortName": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"department": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"url": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"imageUrl": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Complete published department metadata.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Associated department; null is meaningful."
},
"description": {
"type": [
"string",
"null"
],
"description": "Reference description."
},
"abbreviation": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"departmentId": {
"type": "string",
"description": "Associated department decimal identifier when supplied."
},
"governmentType": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"backgroundColour": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"foregroundColour": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"isLordsMainParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isIndependentParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isLordsSpiritualParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
}
},
"description": "One complete typed reference row.",
"additionalProperties": false
},
"description": "Complete named reference rows in the selected page."
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actual whole reference rows selected for delivery."
},
"topic": {
"enum": [
"identifiers",
"coverage",
"bill_stages",
"bill_types",
"parties",
"departments",
"answering_bodies"
],
"type": "string",
"description": "Selected reference topic on a full payload."
},
"notice": {
"type": "string",
"description": "Licence, coverage and workload notices."
},
"applied": {
"type": "object",
"required": [
"topic",
"limit",
"source"
],
"properties": {
"house": {
"type": "string",
"description": "Normalized House."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective reference row limit."
},
"topic": {
"enum": [
"identifiers",
"coverage",
"bill_stages",
"bill_types",
"parties",
"departments",
"answering_bodies"
],
"type": "string",
"description": "Normalized topic."
},
"source": {
"type": "string",
"description": "Static guide or official API selection."
},
"nameContainsLocation": {
"type": "string",
"const": "/nameContains",
"description": "Complete normalized local filter is in the selected payload."
}
},
"description": "Normalized selection applied by this call.",
"additionalProperties": false
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "One official reference request provenance record.",
"additionalProperties": false
},
"description": "All requests that supplied the complete reference set."
},
"coverage": {
"type": "object",
"required": [
"source",
"archiveStartDate",
"apiMinimumDate",
"verifiedSampleYears",
"completeness",
"knownGaps",
"archiveUrl",
"scope",
"sources",
"guidance"
],
"properties": {
"scope": {
"type": "string",
"description": "Institutional scope."
},
"source": {
"type": "string",
"const": "spoken_api",
"description": "Spoken contributions API, without automatic archive fallback."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Official source HTTPS URL."
},
"label": {
"type": "string",
"description": "Official source title."
}
},
"description": "One official source link.",
"additionalProperties": false
},
"description": "Official evidence for archive dates and warnings."
},
"guidance": {
"type": "string",
"description": "How to interpret dates, empty results and timeouts."
},
"knownGaps": {
"type": "array",
"items": {
"type": "string",
"description": "Documented coverage warning."
},
"description": "Known warnings, including website/API distinctions."
},
"archiveUrl": {
"type": "string",
"description": "Official historical archive, which is not an automatic fallback."
},
"completeness": {
"type": "string",
"const": "not_guaranteed",
"description": "Continuous historical coverage is not guaranteed."
},
"apiMinimumDate": {
"type": "null",
"description": "No official API minimum date has been established."
},
"archiveStartDate": {
"type": "string",
"description": "Documented historical archive start; not an API cutoff."
},
"verifiedSampleYears": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Year with a verified successful API sample."
},
"description": "Samples establish availability only, never complete coverage."
}
},
"description": "Static typed historical coverage facts and official sources.",
"additionalProperties": false
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"truncated": {
"type": "boolean",
"description": "Further reference rows remain after the selected page."
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known complete selected guide or reference row count."
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"identifiers": {
"type": "object",
"required": [
"namespaces",
"modes",
"sessionDiscovery"
],
"properties": {
"modes": {
"type": "array",
"items": {
"type": "object",
"required": [
"tool",
"selectors"
],
"properties": {
"tool": {
"type": "string",
"description": "Tool accepting these selections."
},
"selectors": {
"type": "array",
"items": {
"type": "string",
"description": "Supported mode or section."
},
"description": "Supported mode/section names."
}
},
"description": "One tool and its supported selections.",
"additionalProperties": false
},
"description": "Supported tool selections."
},
"namespaces": {
"type": "array",
"items": {
"type": "object",
"required": [
"namespace",
"format",
"discovery",
"distinction"
],
"properties": {
"format": {
"type": "string",
"description": "Accepted identifier syntax."
},
"discovery": {
"type": "string",
"description": "Same-server discovery route."
},
"namespace": {
"type": "string",
"description": "Identifier namespace; never interchangeable with another row."
},
"distinction": {
"type": "string",
"description": "Source-specific identifier distinction."
}
},
"description": "One identifier namespace and its discovery route.",
"additionalProperties": false
},
"description": "Parliament identifier namespaces."
},
"sessionDiscovery": {
"type": "string",
"description": "How to discover bill session identifiers without a current-session assumption."
}
},
"description": "Static typed identifier namespaces and supported selections.",
"additionalProperties": false
},
"nameContains": {
"type": "string",
"description": "Complete normalized AND-token filter, retained through content continuation."
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Caller limit before an effective cap was applied."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}ukparl_search_bills — Ukparl Search Bills
Search Westminster bill summaries by title, current or originating House, session, sponsoring member, department, reference stage, bill type or status, with optional official ordering. Use ukparl_lookup_reference for stage/type/department IDs and ukparl_get_bill for complete selected records. Department IDs are distinct from answering-body IDs. inAmendableStage=true restricts to amendable stages; false is unrestricted. No session or date scope is inferred. Follow collection cursors with the same filters; use contentCursor to reconstruct an oversized item.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Current Commons or Lords House."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 9007199254740991,
"description": "Requested bills; positive safe integer, default 10, effective cap 20.",
"exclusiveMinimum": 0
},
"query": {
"type": "string",
"minLength": 1,
"description": "Bill title search text."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque collection continuation; preserve filters."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Sponsoring member identifier."
},
"stageIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Reference stage identifier."
},
"maxItems": 20,
"description": "Reference stages, distinct from bill-specific stage IDs."
},
"sessionId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Session identifier discovered in bill records."
},
"sortOrder": {
"enum": [
"TitleAscending",
"TitleDescending",
"DateUpdatedAscending",
"DateUpdatedDescending"
],
"type": "string",
"description": "Official ordering; omission preserves the source default."
},
"isDefeated": {
"type": "boolean",
"description": "Filter by defeated state, including false."
},
"billTypeIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Reference bill type identifier."
},
"maxItems": 20,
"description": "Reference bill types."
},
"isWithdrawn": {
"type": "boolean",
"description": "Filter by withdrawn state, including false."
},
"departmentId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members department ID from ukparl_lookup_reference topic=departments; distinct from answering-body IDs."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Opaque same-selection lossless content continuation."
},
"inAmendableStage": {
"type": "boolean",
"description": "True restricts to amendable stages; false applies no restriction."
},
"originatingHouse": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Originating Commons or Lords House; omission includes all."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective per-call collection limit."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Actual whole-item pagination.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"invalid_cursor",
"source_changed",
"unknown_reference_id",
"queue_full"
],
"description": "Machine-readable failure mode. Declared by this tool: `http_invalid_params`: The official API returned HTTP 400 for this request. `http_unauthorized`: The official public API returned HTTP 401. `http_forbidden`: The official public API returned HTTP 402 or 403. `http_conflict`: The official API returned HTTP 409, 423 or 424. `http_rate_limited`: The official API returned HTTP 429 after bounded retry handling. `http_invalid_request`: The official API returned an unexpected redirect or another unsupported HTTP client response. `invalid_cursor`: A collection or content cursor is malformed or belongs to another selection. `source_changed`: The selected payload changed during content retrieval. `unknown_reference_id`: A complete authoritative stage or bill type reference excludes a supplied ID. `queue_full`: The Bills origin request queue is full. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"billId",
"source",
"detailLevel"
],
"properties": {
"isAct": {
"type": [
"boolean",
"null"
],
"description": "Explicit enacted flag."
},
"billId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Bill identifier."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Official request provenance.",
"additionalProperties": false
},
"billTypeId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference bill type ID."
},
"isDefeated": {
"type": [
"boolean",
"null"
],
"description": "Defeated flag."
},
"lastUpdate": {
"type": [
"string",
"null"
],
"description": "Last update timestamp."
},
"shortTitle": {
"type": [
"string",
"null"
],
"description": "Short title."
},
"detailLevel": {
"type": "string",
"const": "summary",
"description": "Search summary; retrieve selected detail separately."
},
"currentHouse": {
"type": [
"string",
"null"
],
"description": "Current source House."
},
"currentStage": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Bill-specific stage occurrence ID."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House including Unassigned."
},
"stageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference stage ID."
},
"sessionId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Session ID."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source stage order."
},
"description": {
"type": [
"string",
"null"
],
"description": "Stage description."
},
"abbreviation": {
"type": [
"string",
"null"
],
"description": "Stage abbreviation."
},
"stageSittings": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Sitting ID."
},
"date": {
"type": [
"string",
"null"
],
"description": "Source sitting date."
},
"billId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Bill ID."
},
"stageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference stage ID."
},
"billStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Bill-specific stage ID."
}
},
"description": "One complete stage sitting.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All supplied stage sittings."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Current stage summary, not full history."
},
"billWithdrawn": {
"type": [
"string",
"null"
],
"description": "Withdrawal date."
},
"formerShortTitle": {
"type": [
"string",
"null"
],
"description": "Former short title."
},
"originatingHouse": {
"type": [
"string",
"null"
],
"description": "Originating source House."
},
"includedSessionIds": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$"
}
},
{
"type": "null"
}
],
"description": "All included session IDs."
},
"introducedSessionId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Introduction session ID."
}
},
"description": "One bill summary and its provenance.",
"additionalProperties": false
},
"description": "Complete source bill summaries on this page."
},
"query": {
"type": "string",
"description": "Complete normalized query text, also reconstructed through content continuation."
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actual whole records emitted or selected for lossless reconstruction."
},
"notice": {
"type": "string",
"description": "Licence and empty/workload notices."
},
"applied": {
"type": "object",
"required": [
"source",
"limit"
],
"properties": {
"house": {
"type": "string",
"description": "Applied House."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective bill limit."
},
"source": {
"type": "string",
"const": "bills",
"description": "Official Bills API."
},
"memberId": {
"type": "string",
"description": "Applied member ID."
},
"stageIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Applied reference stages."
},
"sessionId": {
"type": "string",
"description": "Applied session ID."
},
"sortOrder": {
"enum": [
"TitleAscending",
"TitleDescending",
"DateUpdatedAscending",
"DateUpdatedDescending"
],
"type": "string",
"description": "Applied official ordering."
},
"isDefeated": {
"type": "boolean",
"description": "Applied defeated filter."
},
"billTypeIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Applied bill types."
},
"isWithdrawn": {
"type": "boolean",
"description": "Applied withdrawn filter."
},
"departmentId": {
"type": "string",
"description": "Applied Members department ID."
},
"queryLocation": {
"type": "string",
"const": "/query",
"description": "Complete normalized search text is in the selected payload at /query."
},
"inAmendableStage": {
"type": "boolean",
"description": "Supplied amendable-stage selection; false is unrestricted."
},
"originatingHouse": {
"type": "string",
"description": "Applied originating House."
}
},
"description": "Normalized filters; no implicit current-session scope.",
"additionalProperties": false
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"truncated": {
"type": "boolean",
"description": "Further source matches remain after this selected page."
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source total matches."
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Caller limit before clamping."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}ukparl_get_bill — Ukparl Get Bill
Retrieve a Westminster bill overview or select stages, stage, publications, amendments, amendment, motions or motion. Stage/amendment/motion selections require the bill-specific billStageId from section=stages; singular amendment/motion also require itemId from their parent collection. Use amendmentId for amendment retrieval and motion.id for motions. Filter only the amendments collection by amendmentNumber, decision or sponsoring memberId. Collection selectors paginate whole records. Overview leaves publications unchecked; select publications to discover actual supplied legislation.gov.uk statute links. Follow contentCursor with the original selection to reconstruct oversized records.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"billId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Collection records; positive safe integer, default 20, effective cap 50; collections only."
},
"billId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Parent bill identifier from ukparl_search_bills."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Collection continuation; collections only."
},
"itemId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Amendment amendmentId or ping-pong motion.id; singular selections only."
},
"section": {
"enum": [
"overview",
"stages",
"stage",
"publications",
"amendments",
"amendment",
"motions",
"motion"
],
"type": "string",
"default": "overview",
"description": "Selected bill section; overview by default."
},
"decision": {
"enum": [
"All",
"NoDecision",
"Withdrawn",
"Disagreed",
"NotMoved",
"Agreed",
"QuestionProposed",
"NotSelected",
"WithdrawnBeforeDebate",
"StoodPart",
"NotStoodPart",
"Preempted",
"NotCalled",
"NegativedOnDivision",
"AgreedOnDivision"
],
"type": "string",
"description": "Official amendment decision filter; amendments collection only."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Sponsoring member ID; amendments collection only."
},
"billStageId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Bill-specific stage occurrence ID, required for stage/amendment/motion selections."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Lossless same-selection content continuation."
},
"amendmentNumber": {
"type": "string",
"minLength": 1,
"description": "Published amendment number, retaining letter suffixes; amendments collection only."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective per-call collection limit."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Actual emitted collection continuation.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"invalid_mode_arguments",
"invalid_cursor",
"source_changed",
"queue_full"
],
"description": "Machine-readable failure mode. Declared by this tool: `http_invalid_params`: The official API returned HTTP 400 for this request. `http_unauthorized`: The official public API returned HTTP 401. `http_forbidden`: The official public API returned HTTP 402 or 403. `http_conflict`: The official API returned HTTP 409, 423 or 424. `http_rate_limited`: The official API returned HTTP 429 after bounded retry handling. `http_invalid_request`: The official API returned an unexpected redirect or another unsupported HTTP client response. `invalid_mode_arguments`: Required branch IDs are missing, unrelated IDs are supplied, or pagination is used on a singular selector. `invalid_cursor`: A collection or content cursor is malformed or bound to another selection. `source_changed`: The selected payload changed during content retrieval. `queue_full`: The Bills origin request queue is full. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"found": {
"type": "boolean",
"description": "Whether the selected entity exists."
},
"items": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Bill-specific stage occurrence ID."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House including Unassigned."
},
"stageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference stage ID."
},
"sessionId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Session ID."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source stage order."
},
"description": {
"type": [
"string",
"null"
],
"description": "Stage description."
},
"abbreviation": {
"type": [
"string",
"null"
],
"description": "Stage abbreviation."
},
"stageSittings": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Sitting ID."
},
"date": {
"type": [
"string",
"null"
],
"description": "Source sitting date."
},
"billId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Bill ID."
},
"stageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference stage ID."
},
"billStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Bill-specific stage ID."
}
},
"description": "One complete stage sitting.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All supplied stage sittings."
}
},
"description": "One stage occurrence.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Publication ID."
},
"files": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Document ID."
},
"filename": {
"type": [
"string",
"null"
],
"description": "Filename."
},
"contentType": {
"type": [
"string",
"null"
],
"description": "Media type."
},
"downloadUrl": {
"type": [
"string",
"null"
],
"description": "Actual published download URL."
},
"contentLength": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published size in bytes."
}
},
"description": "One published document file.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Every published document."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House including Unassigned."
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Published link ID."
},
"url": {
"type": [
"string",
"null"
],
"description": "Actual published URL."
},
"title": {
"type": [
"string",
"null"
],
"description": "Link title."
},
"contentType": {
"type": [
"string",
"null"
],
"description": "Published media type."
}
},
"description": "One published source link.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Every published link."
},
"title": {
"type": [
"string",
"null"
],
"description": "Publication title."
},
"displayDate": {
"type": [
"string",
"null"
],
"description": "Source display date."
},
"publicationType": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Publication type ID."
},
"name": {
"type": [
"string",
"null"
],
"description": "Type name."
},
"description": {
"type": [
"string",
"null"
],
"description": "Type description."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Publication type."
}
},
"description": "One complete publication.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id",
"amendmentId"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Generic source ID; amendment summaries may use zero."
},
"dNum": {
"type": [
"string",
"null"
],
"description": "Source drafting identifier."
},
"billId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Parent bill ID."
},
"clause": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Clause number."
},
"decision": {
"type": [
"string",
"null"
],
"description": "Source decision."
},
"schedule": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Schedule number."
},
"sponsors": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"memberId"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Published name."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party name."
},
"isLead": {
"type": [
"boolean",
"null"
],
"description": "Lead sponsor flag."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API identifier."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source order."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or membership basis."
},
"memberPage": {
"type": [
"string",
"null"
],
"description": "Published member URL."
},
"memberPhoto": {
"type": [
"string",
"null"
],
"description": "Published photograph URL."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Party colour."
}
},
"description": "One published member sponsor.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All sponsors."
},
"lineNumber": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Line number."
},
"pageNumber": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Page number."
},
"amendmentId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Retrieval identifier; use this rather than generic id."
},
"billStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Parent stage occurrence ID."
},
"summaryText": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Complete summary lines."
},
"amendmentType": {
"type": [
"string",
"null"
],
"description": "Amendment type."
},
"statusIndicator": {
"type": [
"string",
"null"
],
"description": "Status indicator."
},
"amendmentPosition": {
"type": [
"string",
"null"
],
"description": "Source position."
},
"marshalledListText": {
"type": [
"string",
"null"
],
"description": "Marshalled identifier."
},
"decisionExplanation": {
"type": [
"string",
"null"
],
"description": "Complete decision explanation."
}
},
"description": "One amendment summary.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id",
"itemKind"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Generic source ID; amendment summaries may use zero."
},
"type": {
"type": [
"string",
"null"
],
"description": "Source ping-pong type."
},
"billId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Parent bill ID."
},
"number": {
"type": [
"string",
"null"
],
"description": "Motion number."
},
"summary": {
"type": [
"string",
"null"
],
"description": "Complete summary."
},
"decision": {
"type": [
"string",
"null"
],
"description": "Source decision."
},
"itemKind": {
"type": "string",
"description": "Original wrapper type identifying Motion or Amendment."
},
"sponsors": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"memberId"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Published name."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party name."
},
"isLead": {
"type": [
"boolean",
"null"
],
"description": "Lead sponsor flag."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API identifier."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source order."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or membership basis."
},
"memberPage": {
"type": [
"string",
"null"
],
"description": "Published member URL."
},
"memberPhoto": {
"type": [
"string",
"null"
],
"description": "Published photograph URL."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Party colour."
}
},
"description": "One published member sponsor.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All sponsors."
},
"billStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Parent stage occurrence ID."
},
"matchingText": {
"type": [
"string",
"null"
],
"description": "Source matching text."
},
"statusIndicator": {
"type": [
"string",
"null"
],
"description": "Status indicator."
},
"decisionExplanation": {
"type": [
"string",
"null"
],
"description": "Complete decision explanation."
}
},
"description": "One ping-pong summary with its source wrapper type.",
"additionalProperties": false
}
],
"description": "One complete selected collection item."
},
"description": "Whole selected collection records."
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actual whole records emitted or selected for lossless reconstruction."
},
"billId": {
"type": "string",
"description": "Parent bill ID."
},
"notice": {
"type": "string",
"description": "Licence, workload and selected empty-collection notices."
},
"record": {
"anyOf": [
{
"type": "object",
"required": [
"billId"
],
"properties": {
"agent": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Agent name."
},
"email": {
"type": [
"string",
"null"
],
"description": "Agent email."
},
"address": {
"type": [
"string",
"null"
],
"description": "Agent address."
},
"phoneNo": {
"type": [
"string",
"null"
],
"description": "Agent phone."
},
"website": {
"type": [
"string",
"null"
],
"description": "Agent website."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Published bill agent."
},
"isAct": {
"type": [
"boolean",
"null"
],
"description": "Explicit enacted flag."
},
"billId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Bill identifier."
},
"summary": {
"type": [
"string",
"null"
],
"description": "Complete supplied summary."
},
"sponsors": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"member": {
"anyOf": [
{
"type": "object",
"required": [
"memberId"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Published name."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party name."
},
"isLead": {
"type": [
"boolean",
"null"
],
"description": "Lead sponsor flag."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API identifier."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source order."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or membership basis."
},
"memberPage": {
"type": [
"string",
"null"
],
"description": "Published member URL."
},
"memberPhoto": {
"type": [
"string",
"null"
],
"description": "Published photograph URL."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Party colour."
}
},
"description": "One published member sponsor.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Member sponsor."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Sponsor order."
},
"organisation": {
"anyOf": [
{
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Organisation URL."
},
"name": {
"type": [
"string",
"null"
],
"description": "Organisation name."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Organisation sponsor."
}
},
"description": "One published bill sponsor.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All sponsors."
},
"longTitle": {
"type": [
"string",
"null"
],
"description": "Complete long title."
},
"promoters": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"organisationUrl": {
"type": [
"string",
"null"
],
"description": "Promoter URL."
},
"organisationName": {
"type": [
"string",
"null"
],
"description": "Promoter name."
}
},
"description": "One published promoter.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All promoters."
},
"billTypeId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference bill type ID."
},
"isDefeated": {
"type": [
"boolean",
"null"
],
"description": "Defeated flag."
},
"lastUpdate": {
"type": [
"string",
"null"
],
"description": "Last update timestamp."
},
"shortTitle": {
"type": [
"string",
"null"
],
"description": "Short title."
},
"currentHouse": {
"type": [
"string",
"null"
],
"description": "Current source House."
},
"currentStage": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Bill-specific stage occurrence ID."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House including Unassigned."
},
"stageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference stage ID."
},
"sessionId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Session ID."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source stage order."
},
"description": {
"type": [
"string",
"null"
],
"description": "Stage description."
},
"abbreviation": {
"type": [
"string",
"null"
],
"description": "Stage abbreviation."
},
"stageSittings": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Sitting ID."
},
"date": {
"type": [
"string",
"null"
],
"description": "Source sitting date."
},
"billId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Bill ID."
},
"stageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference stage ID."
},
"billStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Bill-specific stage ID."
}
},
"description": "One complete stage sitting.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All supplied stage sittings."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Current stage summary, not full history."
},
"billWithdrawn": {
"type": [
"string",
"null"
],
"description": "Withdrawal date."
},
"formerShortTitle": {
"type": [
"string",
"null"
],
"description": "Former short title."
},
"originatingHouse": {
"type": [
"string",
"null"
],
"description": "Originating source House."
},
"petitioningPeriod": {
"type": [
"string",
"null"
],
"description": "Petition period."
},
"includedSessionIds": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$"
}
},
{
"type": "null"
}
],
"description": "All included session IDs."
},
"introducedSessionId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Introduction session ID."
},
"petitionInformation": {
"type": [
"string",
"null"
],
"description": "Petition information."
}
},
"description": "Complete bill overview.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Bill-specific stage occurrence ID."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House including Unassigned."
},
"stageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference stage ID."
},
"committee": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Committee ID."
},
"url": {
"type": [
"string",
"null"
],
"description": "Published committee URL."
},
"name": {
"type": [
"string",
"null"
],
"description": "Committee name."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House."
},
"category": {
"type": [
"string",
"null"
],
"description": "Committee category."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Associated committee."
},
"sessionId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Session ID."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source stage order."
},
"hasMotions": {
"type": [
"boolean",
"null"
],
"description": "Source motion availability flag."
},
"lastUpdate": {
"type": [
"string",
"null"
],
"description": "Last update timestamp."
},
"description": {
"type": [
"string",
"null"
],
"description": "Stage description."
},
"abbreviation": {
"type": [
"string",
"null"
],
"description": "Stage abbreviation."
},
"stageSittings": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Sitting ID."
},
"date": {
"type": [
"string",
"null"
],
"description": "Source sitting date."
},
"billId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Bill ID."
},
"stageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Reference stage ID."
},
"billStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Bill-specific stage ID."
}
},
"description": "One complete stage sitting.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All supplied stage sittings."
},
"nextStageBillStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Next stage occurrence ID."
},
"previousStageBillStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Previous stage occurrence ID."
}
},
"description": "Complete stage occurrence.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id",
"amendmentId"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Generic source ID; amendment summaries may use zero."
},
"dNum": {
"type": [
"string",
"null"
],
"description": "Source drafting identifier."
},
"billId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Parent bill ID."
},
"clause": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Clause number."
},
"decision": {
"type": [
"string",
"null"
],
"description": "Source decision."
},
"schedule": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Schedule number."
},
"sponsors": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"memberId"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Published name."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party name."
},
"isLead": {
"type": [
"boolean",
"null"
],
"description": "Lead sponsor flag."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API identifier."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source order."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or membership basis."
},
"memberPage": {
"type": [
"string",
"null"
],
"description": "Published member URL."
},
"memberPhoto": {
"type": [
"string",
"null"
],
"description": "Published photograph URL."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Party colour."
}
},
"description": "One published member sponsor.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All sponsors."
},
"lineNumber": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Line number."
},
"mainHeader": {
"type": [
"string",
"null"
],
"description": "Main header."
},
"pageNumber": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Page number."
},
"amendmentId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Retrieval identifier; use this rather than generic id."
},
"billStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Parent stage occurrence ID."
},
"summaryText": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Complete summary lines."
},
"amendmentNote": {
"type": [
"string",
"null"
],
"description": "Amendment note."
},
"amendmentType": {
"type": [
"string",
"null"
],
"description": "Amendment type."
},
"amendmentLines": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
],
"description": "Complete source text or HTML."
},
"isImage": {
"type": [
"boolean",
"null"
],
"description": "Image flag."
},
"imageType": {
"type": [
"string",
"null"
],
"description": "Image format."
},
"indentation": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source indentation."
},
"hangingIndentation": {
"type": [
"string",
"null"
],
"description": "Numbered or hanging prefix."
}
},
"description": "One complete amendment text line.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All complete numbered amendment lines."
},
"explanatoryText": {
"type": [
"string",
"null"
],
"description": "Complete explanatory HTML."
},
"statusIndicator": {
"type": [
"string",
"null"
],
"description": "Status indicator."
},
"amendmentLocation": {
"type": [
"string",
"null"
],
"description": "Location text."
},
"amendmentPosition": {
"type": [
"string",
"null"
],
"description": "Source position."
},
"marshalledListText": {
"type": [
"string",
"null"
],
"description": "Marshalled identifier."
},
"decisionExplanation": {
"type": [
"string",
"null"
],
"description": "Complete decision explanation."
},
"explanatoryTextPrefix": {
"type": [
"string",
"null"
],
"description": "Explanatory prefix."
}
},
"description": "Complete amendment detail.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id",
"itemKind"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Generic source ID; amendment summaries may use zero."
},
"type": {
"type": [
"string",
"null"
],
"description": "Source ping-pong type."
},
"billId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Parent bill ID."
},
"number": {
"type": [
"string",
"null"
],
"description": "Motion number."
},
"summary": {
"type": [
"string",
"null"
],
"description": "Complete summary."
},
"decision": {
"type": [
"string",
"null"
],
"description": "Source decision."
},
"itemKind": {
"type": "string",
"description": "Original Motion or Amendment wrapper type."
},
"sponsors": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"memberId"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Published name."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party name."
},
"isLead": {
"type": [
"boolean",
"null"
],
"description": "Lead sponsor flag."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API identifier."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source order."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or membership basis."
},
"memberPage": {
"type": [
"string",
"null"
],
"description": "Published member URL."
},
"memberPhoto": {
"type": [
"string",
"null"
],
"description": "Published photograph URL."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Party colour."
}
},
"description": "One published member sponsor.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All sponsors."
},
"billStageId": {
"anyOf": [
{
"type": "string",
"pattern": "^[0-9]+$"
},
{
"type": "null"
}
],
"description": "Parent stage occurrence ID."
},
"matchingText": {
"type": [
"string",
"null"
],
"description": "Source matching text."
},
"motionGroups": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
],
"description": "Complete source text or HTML."
},
"isImage": {
"type": [
"boolean",
"null"
],
"description": "Image flag."
},
"imageType": {
"type": [
"string",
"null"
],
"description": "Image format."
},
"indentation": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source indentation."
},
"hangingIndentation": {
"type": [
"string",
"null"
],
"description": "Numbered or hanging prefix."
}
},
"description": "One complete amendment text line.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete group text."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source group order."
},
"amendmentIndices": {
"anyOf": [
{
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Index into relatedAmendments."
}
},
{
"type": "null"
}
],
"description": "Related amendment indices in original order; preserves null or absent collections."
}
},
"description": "One complete group with explicit related amendment associations.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete motion groups."
},
"amendmentGroups": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
],
"description": "Complete source text or HTML."
},
"isImage": {
"type": [
"boolean",
"null"
],
"description": "Image flag."
},
"imageType": {
"type": [
"string",
"null"
],
"description": "Image format."
},
"indentation": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source indentation."
},
"hangingIndentation": {
"type": [
"string",
"null"
],
"description": "Numbered or hanging prefix."
}
},
"description": "One complete amendment text line.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete group text."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source group order."
},
"amendmentIndices": {
"anyOf": [
{
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Index into relatedAmendments."
}
},
{
"type": "null"
}
],
"description": "Related amendment indices in original order; preserves null or absent collections."
}
},
"description": "One complete group with explicit related amendment associations.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete amendment groups."
},
"statusIndicator": {
"type": [
"string",
"null"
],
"description": "Status indicator."
},
"relatedAmendments": {
"type": "array",
"items": {
"type": "object",
"required": [
"groupKind",
"groupIndex",
"amendmentIndex"
],
"properties": {
"text": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
],
"description": "Complete source text or HTML."
},
"isImage": {
"type": [
"boolean",
"null"
],
"description": "Image flag."
},
"imageType": {
"type": [
"string",
"null"
],
"description": "Image format."
},
"indentation": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source indentation."
},
"hangingIndentation": {
"type": [
"string",
"null"
],
"description": "Numbered or hanging prefix."
}
},
"description": "One complete amendment text line.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete related amendment lines."
},
"number": {
"type": [
"string",
"null"
],
"description": "Related amendment number."
},
"decision": {
"type": [
"string",
"null"
],
"description": "Related decision."
},
"sponsors": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"memberId"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Published name."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party name."
},
"isLead": {
"type": [
"boolean",
"null"
],
"description": "Lead sponsor flag."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API identifier."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source order."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or membership basis."
},
"memberPage": {
"type": [
"string",
"null"
],
"description": "Published member URL."
},
"memberPhoto": {
"type": [
"string",
"null"
],
"description": "Published photograph URL."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Party colour."
}
},
"description": "One published member sponsor.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All related sponsors."
},
"groupKind": {
"enum": [
"motionGroups",
"amendmentGroups"
],
"type": "string",
"description": "Source group collection."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source order."
},
"groupIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based parent group index."
},
"amendmentIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position within the original parent group."
}
},
"description": "One complete related amendment and its parent association.",
"additionalProperties": false
},
"description": "All related amendments, retaining group membership and source order."
},
"decisionExplanation": {
"type": [
"string",
"null"
],
"description": "Complete decision explanation."
}
},
"description": "Complete ping-pong item with its source wrapper type.",
"additionalProperties": false
}
],
"description": "Complete selected record."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Selected request provenance.",
"additionalProperties": false
},
"applied": {
"type": "object",
"required": [
"billId",
"section",
"source"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective collection limit."
},
"billId": {
"type": "string",
"description": "Parent bill ID."
},
"itemId": {
"type": "string",
"description": "Selected retrieval ID."
},
"source": {
"type": "string",
"const": "bills",
"description": "Official Bills API."
},
"section": {
"enum": [
"overview",
"stages",
"stage",
"publications",
"amendments",
"amendment",
"motions",
"motion"
],
"type": "string",
"description": "Applied section."
},
"decision": {
"enum": [
"All",
"NoDecision",
"Withdrawn",
"Disagreed",
"NotMoved",
"Agreed",
"QuestionProposed",
"NotSelected",
"WithdrawnBeforeDebate",
"StoodPart",
"NotStoodPart",
"Preempted",
"NotCalled",
"NegativedOnDivision",
"AgreedOnDivision"
],
"type": "string",
"description": "Applied amendment decision filter."
},
"memberId": {
"type": "string",
"description": "Applied amendment sponsor ID."
},
"billStageId": {
"type": "string",
"description": "Stage occurrence ID."
},
"amendmentNumber": {
"type": "string",
"description": "Applied published amendment number."
}
},
"description": "Normalized selection and actual source.",
"additionalProperties": false
},
"section": {
"enum": [
"overview",
"stages",
"stage",
"publications",
"amendments",
"amendment",
"motions",
"motion"
],
"type": "string",
"description": "Selected bill section."
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"guidance": {
"type": "string",
"description": "Same-server recovery for an entity miss."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"truncated": {
"type": "boolean",
"description": "Further source records remain after this selected page."
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known selected collection total."
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"detailLevel": {
"enum": [
"summary",
"complete"
],
"type": "string",
"description": "Selected source completeness."
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Caller limit before clamping."
},
"legislationHandoff": {
"type": "object",
"required": [
"status",
"links"
],
"properties": {
"links": {
"type": "array",
"items": {
"type": "object",
"required": [
"url",
"label"
],
"properties": {
"url": {
"type": "string",
"description": "Published document URL."
},
"label": {
"type": "string",
"description": "Published link label."
},
"format": {
"type": "string",
"description": "Published format or media type."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Published document size in bytes."
},
"documentId": {
"type": "string",
"description": "Upstream document identifier."
},
"publicationDate": {
"type": "string",
"description": "Published date as supplied by the source."
}
},
"description": "One actual authoritative statute link.",
"additionalProperties": false
},
"description": "Actual authoritative statute links."
},
"reason": {
"type": "string",
"description": "Why an authoritative link is unavailable."
},
"status": {
"enum": [
"not_enacted",
"authoritative_link",
"unavailable"
],
"type": "string",
"description": "Source-only handoff state; unavailable may mean publications remain unchecked."
}
},
"description": "Authoritative statute handoff.",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}ukparl_search_members — Ukparl Search Members
Find MPs and peers by name, location or constituency, party, House, and current or historical membership. currentOnly=false includes current and former members. asOf selects historical membership and accepts name only, without House, party or location filters. Search results preserve latest profile fields; retrieve sections with ukparl_get_member. Follow opaque cursors with unchanged filters and use contentCursor for oversized records.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"asOf": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Historical membership on YYYY-MM-DD; only name and pagination may accompany it."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Name substring; omission searches all names."
},
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Filter most recent House; unavailable with asOf."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 9007199254740991,
"description": "Requested whole members; default 10, cap 20; safe over-cap integers are clamped.",
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque collection cursor for the same filters."
},
"partyId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Party ID; active reference parties do not exhaust historical IDs."
},
"currentOnly": {
"type": "boolean",
"default": false,
"description": "True restricts to current members; false includes former and current."
},
"constituency": {
"type": "string",
"minLength": 1,
"description": "Source location or constituency text, not exact equality."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Same-selection lossless content continuation."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied",
"notice"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective member workload cap."
},
"mode": {
"enum": [
"search",
"historical"
],
"type": "string",
"description": "Modern or dated historical search."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation by actually emitted records.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"queue_full",
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"invalid_mode_arguments",
"invalid_cursor",
"source_changed"
],
"description": "Machine-readable failure mode. Declared by this tool: `queue_full`: The selected Parliament origin has two active requests and 32 queued requests. `http_invalid_params`: The official API returned HTTP 400 for this request. `http_unauthorized`: The official public API returned HTTP 401. `http_forbidden`: The official public API returned HTTP 402 or 403. `http_conflict`: The official API returned HTTP 409, 423 or 424. `http_rate_limited`: The official API returned HTTP 429 after bounded retry handling. `http_invalid_request`: The official API returned an unexpected redirect or another unsupported HTTP client response. `invalid_mode_arguments`: Historical search is combined with unsupported filters. `invalid_cursor`: A collection or content cursor is invalid or belongs to different filters. `source_changed`: Selected source records changed during content retrieval. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"memberId",
"source",
"detailLevel"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"rel": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"href": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"method": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Published relationship link; href may be relative.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Published source relationship links."
},
"gender": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual search provenance.",
"additionalProperties": false
},
"memberId": {
"type": "string",
"description": "Members API identifier for ukparl_get_member."
},
"nameListAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"detailLevel": {
"type": "string",
"const": "summary",
"description": "Search metadata without optional biographies or histories."
},
"latestParty": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"abbreviation": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"governmentType": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"backgroundColour": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"foregroundColour": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"isLordsMainParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isIndependentParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isLordsSpiritualParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
}
},
"description": "Published party metadata.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Latest source party, possibly unknown in historical results."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameAddressAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameDisplayAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameFullTitle": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"latestHouseMembership": {
"anyOf": [
{
"type": "object",
"properties": {
"house": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source numeric House code; Members uses 1 Commons and 2 Lords."
},
{
"type": "string",
"description": "Source chamber label, including source-specific values."
},
{
"type": "null",
"description": "Source supplied no House."
}
],
"description": "Source House; never inferred from another membership."
},
"membershipFrom": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"membershipFromId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"membershipStatus": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"statusId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"statusNotes": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"statusIsActive": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"statusStartDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"statusDescription": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Published membership status and its effective date.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Latest source membership status."
},
"membershipEndDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"membershipEndReason": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"membershipStartDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"membershipEndReasonId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"membershipEndReasonNotes": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Latest source membership, not a guaranteed as-of snapshot."
}
},
"description": "Complete member search summary.",
"additionalProperties": false
},
"description": "Whole summary member records."
},
"query": {
"type": "object",
"required": [
"currentOnly"
],
"properties": {
"asOf": {
"type": "string",
"description": "Historical membership date, when requested."
},
"name": {
"type": "string",
"description": "Applied name substring."
},
"house": {
"type": "string",
"description": "Applied latest-House filter."
},
"partyId": {
"type": "string",
"description": "Applied party identifier, including historical identifiers."
},
"currentOnly": {
"type": "boolean",
"description": "True requests current members; false leaves membership status unrestricted."
},
"constituency": {
"type": "string",
"description": "Applied source location text; not exact constituency equality."
}
},
"description": "Complete normalized filters and membership-date semantics.",
"additionalProperties": false
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actual whole members emitted."
},
"notice": {
"type": "string",
"description": "Licence, historical scope and workload notices."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual official search request.",
"additionalProperties": false
},
"applied": {
"type": "object",
"required": [
"mode",
"source",
"limit",
"filters"
],
"properties": {
"mode": {
"enum": [
"search",
"historical"
],
"type": "string",
"description": "Selected modern or historical search."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective maximum whole rows."
},
"source": {
"type": "string",
"const": "members",
"description": "Official Members API."
},
"filters": {
"type": "string",
"const": "/query",
"description": "Complete normalized filters are reconstructable in the payload at /query."
}
},
"description": "Effective source and workload; full filters stay in /query.",
"additionalProperties": false
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"guidance": {
"type": "string",
"description": "Empty-result recovery guidance."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"truncated": {
"type": "boolean",
"description": "Further whole member results remain."
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source total before paging."
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Original request when capped."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}ukparl_get_member — Ukparl Get Member
Retrieve a member profile, roles, committee seats, official contact information, registered interests or recorded voting history. Roles without category lists available biography categories; select category to page whole periods. Interests and voting require an explicit House. Committee person IDs differ from member IDs. Voting uses native 20-row pages and reports recorded lobby and teller facts, without lifetime participation metrics. Follow collection cursors with unchanged selectors; use contentCursor to reconstruct oversized records.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"memberId"
],
"properties": {
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Required for interests and voting; forbidden for other sections."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 9007199254740991,
"description": "Requested whole rows; default 20, cap 50 for local histories. Voting uses native 20-row pages independently of limit.",
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque whole-item collection continuation with unchanged selectors."
},
"section": {
"enum": [
"profile",
"roles",
"committee_seats",
"contact",
"interests",
"voting"
],
"type": "string",
"default": "profile",
"description": "Selected member subsection; default profile."
},
"category": {
"enum": [
"representations",
"electionsContested",
"houseMemberships",
"governmentPosts",
"oppositionPosts",
"otherPosts",
"partyAffiliations",
"committeeMemberships"
],
"type": "string",
"description": "Roles only: select one complete biography collection."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API decimal identifier from ukparl_search_members."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Opaque same-selection lossless content continuation."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied",
"notice"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective whole-item workload cap."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Continuation by actual emitted items.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"queue_full",
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"invalid_mode_arguments",
"invalid_cursor",
"source_changed"
],
"description": "Machine-readable failure mode. Declared by this tool: `queue_full`: The selected Parliament origin has two active requests and 32 queued requests. `http_invalid_params`: The official API returned HTTP 400 for this request. `http_unauthorized`: The official public API returned HTTP 401. `http_forbidden`: The official public API returned HTTP 402 or 403. `http_conflict`: The official API returned HTTP 409, 423 or 424. `http_rate_limited`: The official API returned HTTP 429 after bounded retry handling. `http_invalid_request`: The official API returned an unexpected redirect or another unsupported HTTP client response. `invalid_mode_arguments`: A section lacks its House or uses incompatible category, House or collection cursor fields. `invalid_cursor`: A collection or content cursor is malformed or belongs to another selection. `source_changed`: Selected source data changed during recursive content retrieval. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"found": {
"type": "boolean",
"description": "Whether the parent member exists."
},
"items": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "role",
"description": "Whole biography period."
},
"value": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"house": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source numeric House code; Members uses 1 Commons and 2 Lords."
},
{
"type": "string",
"description": "Source chamber label, including source-specific values."
},
{
"type": "null",
"description": "Source supplied no House."
}
],
"description": "Source House; never inferred from another membership."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"additionalInfo": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"constituencyEnd": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"constituencyStart": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"additionalInfoLink": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Whole biography period, dates and additional links.",
"additionalProperties": false
}
},
"description": "Selected role period.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "contact",
"description": "Official contact record."
},
"value": {
"type": "object",
"properties": {
"fax": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"type": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"email": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"line1": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"line2": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"line3": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"line4": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"line5": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"notes": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"phone": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"typeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"website": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"postcode": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"isPreferred": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isWebAddress": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"typeDescription": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Official contact record including complete source notes and caveats.",
"additionalProperties": false
}
},
"description": "Selected official contact.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "interest_category",
"description": "Whole recursive interest category."
},
"value": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"interests": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"path"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"path": {
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
},
"interest": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"childPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
}
},
{
"type": "null"
}
],
"description": "Ordered child source pointers; null and omission preserve source absence."
},
"parentPath": {
"type": "string",
"description": "Parent declaration pointer; omitted for a root interest."
},
"createdWhen": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"deletedWhen": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"isCorrection": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"lastAmendedWhen": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Complete declaration with explicit ordered parent/child associations.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Every descendant declaration, once, in source preorder."
},
"rootPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
}
},
{
"type": "null"
}
],
"description": "Ordered root declaration pointers; null/omission mirrors source interests."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
}
},
"description": "Whole interest category with reconstructable recursive relationships.",
"additionalProperties": false
}
},
"description": "Selected interest category.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"divisionId",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "vote",
"description": "Recorded vote."
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"rel": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"href": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"method": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Published relationship link; href may be relative.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Published vote relationships."
},
"value": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"date": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"house": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source numeric House code; Members uses 1 Commons and 2 Lords."
},
{
"type": "string",
"description": "Source chamber label, including source-specific values."
},
{
"type": "null",
"description": "Source supplied no House."
}
],
"description": "Source House; never inferred from another membership."
},
"title": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"actedAsTeller": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"numberAgainst": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"divisionNumber": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"numberInFavour": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"inNegativeLobby": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"inAffirmativeLobby": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
}
},
"description": "Recorded division and member lobby/teller facts.",
"additionalProperties": false
},
"divisionId": {
"type": "string",
"description": "Division ID to pair with the explicit House in ukparl_search_divisions."
}
},
"description": "Recorded division and member vote.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"committeeId",
"value",
"relatedCommittees",
"member"
],
"properties": {
"kind": {
"type": "string",
"const": "committee_seat",
"description": "Whole committee seat."
},
"value": {
"type": "object",
"required": [
"id",
"path"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"path": {
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
},
"house": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source numeric House code; Members uses 1 Commons and 2 Lords."
},
{
"type": "string",
"description": "Source chamber label, including source-specific values."
},
{
"type": "null",
"description": "Source supplied no House."
}
],
"description": "Source House; never inferred from another membership."
},
"roles": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"roleState",
"roleTypeState"
],
"properties": {
"roleId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published source identifier, within its own namespace."
},
"coOpted": {
"type": [
"boolean",
"null"
],
"description": "Source co-opted flag."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"isChair": {
"type": [
"boolean",
"null"
],
"description": "Source role chair flag."
},
"roleName": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"alternate": {
"type": [
"boolean",
"null"
],
"description": "Source alternate flag."
},
"exOfficio": {
"type": [
"boolean",
"null"
],
"description": "Source ex officio flag."
},
"roleState": {
"enum": [
"missing",
"null",
"present"
],
"type": "string",
"description": "Whether the source nested object was omitted, null or present."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"roleTypeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published source identifier, within its own namespace."
},
"roleTypeName": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"roleTypeState": {
"enum": [
"missing",
"null",
"present"
],
"type": "string",
"description": "Whether the source nested object was omitted, null or present."
}
},
"description": "Whole role period with flattened named role and type metadata.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Whole source membership role periods; omitted for related summaries."
},
"contact": {
"anyOf": [
{
"type": "object",
"properties": {
"email": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"phone": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"address": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"contactDisclaimer": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Committee contacts including complete source disclaimer."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"category": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Named source identifier.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Published committee category."
},
"leadHouse": {
"anyOf": [
{
"type": "object",
"properties": {
"isLords": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isCommons": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Source lead-House flags; Joint remains distinct."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameHistory": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"committeeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
}
},
"description": "Dated committee name.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete published committee name history."
},
"showOnWebsite": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"committeeTypes": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"categoryState"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source committee type ID."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"categoryId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published source identifier, within its own namespace."
},
"categoryName": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"categoryState": {
"enum": [
"missing",
"null",
"present"
],
"type": "string",
"description": "Whether the source nested object was omitted, null or present."
}
},
"description": "Committee type and complete flattened category metadata.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete committee types and flattened category metadata."
},
"isLeadCommittee": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"websiteLegacyUrl": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"subCommitteePaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
}
},
{
"type": "null"
}
],
"description": "Ordered child source pointers; null and omission preserve source absence."
},
"dateLordsAppointed": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"parentCommitteePath": {
"anyOf": [
{
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
},
{
"type": "null"
}
],
"description": "Parent committee source pointer; null/omission is preserved."
},
"dateCommonsAppointed": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"scrutinisingDepartments": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"departmentId"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"departmentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
}
},
"description": "Department scrutinised by this committee.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All published scrutinised departments."
},
"websiteLegacyRedirectEnabled": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
}
},
"description": "Complete typed committee record with explicit tree relationships.",
"additionalProperties": false
},
"member": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"personId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"photoUrl": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"memberInfo": {
"anyOf": [
{
"type": "object",
"required": [
"mnisId"
],
"properties": {
"house": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source numeric House code; Members uses 1 Commons and 2 Lords."
},
{
"type": "string",
"description": "Source chamber label, including source-specific values."
},
{
"type": "null",
"description": "Source supplied no House."
}
],
"description": "Source House; never inferred from another membership."
},
"party": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"mnisId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"isChair": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"addressAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"displayAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"fullTitle": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"isCurrent": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Member metadata; mnisId is the Members API join key."
}
},
"description": "Source person and explicit MNIS member join metadata.",
"additionalProperties": false
},
"committeeId": {
"type": "string",
"description": "Committee ID for ukparl_get_committee."
},
"relatedCommittees": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"path"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"path": {
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
},
"house": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source numeric House code; Members uses 1 Commons and 2 Lords."
},
{
"type": "string",
"description": "Source chamber label, including source-specific values."
},
{
"type": "null",
"description": "Source supplied no House."
}
],
"description": "Source House; never inferred from another membership."
},
"roles": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"roleState",
"roleTypeState"
],
"properties": {
"roleId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published source identifier, within its own namespace."
},
"coOpted": {
"type": [
"boolean",
"null"
],
"description": "Source co-opted flag."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"isChair": {
"type": [
"boolean",
"null"
],
"description": "Source role chair flag."
},
"roleName": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"alternate": {
"type": [
"boolean",
"null"
],
"description": "Source alternate flag."
},
"exOfficio": {
"type": [
"boolean",
"null"
],
"description": "Source ex officio flag."
},
"roleState": {
"enum": [
"missing",
"null",
"present"
],
"type": "string",
"description": "Whether the source nested object was omitted, null or present."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"roleTypeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published source identifier, within its own namespace."
},
"roleTypeName": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"roleTypeState": {
"enum": [
"missing",
"null",
"present"
],
"type": "string",
"description": "Whether the source nested object was omitted, null or present."
}
},
"description": "Whole role period with flattened named role and type metadata.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Whole source membership role periods; omitted for related summaries."
},
"contact": {
"anyOf": [
{
"type": "object",
"properties": {
"email": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"phone": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"address": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"contactDisclaimer": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Committee contacts including complete source disclaimer."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"category": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Named source identifier.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Published committee category."
},
"leadHouse": {
"anyOf": [
{
"type": "object",
"properties": {
"isLords": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isCommons": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Source lead-House flags; Joint remains distinct."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameHistory": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"committeeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
}
},
"description": "Dated committee name.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete published committee name history."
},
"showOnWebsite": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"committeeTypes": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"categoryState"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source committee type ID."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"categoryId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published source identifier, within its own namespace."
},
"categoryName": {
"type": [
"string",
"null"
],
"description": "Published source text; null and omission remain unknown."
},
"categoryState": {
"enum": [
"missing",
"null",
"present"
],
"type": "string",
"description": "Whether the source nested object was omitted, null or present."
}
},
"description": "Committee type and complete flattened category metadata.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete committee types and flattened category metadata."
},
"isLeadCommittee": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"websiteLegacyUrl": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"subCommitteePaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
}
},
{
"type": "null"
}
],
"description": "Ordered child source pointers; null and omission preserve source absence."
},
"dateLordsAppointed": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"parentCommitteePath": {
"anyOf": [
{
"type": "string",
"description": "Source JSON pointer identifying this record within its whole pagination atom."
},
{
"type": "null"
}
],
"description": "Parent committee source pointer; null/omission is preserved."
},
"dateCommonsAppointed": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"scrutinisingDepartments": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"departmentId"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"departmentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
}
},
"description": "Department scrutinised by this committee.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "All published scrutinised departments."
},
"websiteLegacyRedirectEnabled": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
}
},
"description": "Complete typed committee record with explicit tree relationships.",
"additionalProperties": false
},
"description": "Every related committee with explicit source paths."
}
},
"description": "Committee membership with whole role periods.",
"additionalProperties": false
}
],
"description": "One whole selected source item."
},
"description": "Whole selected source records tagged by kind."
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"rel": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"href": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"method": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Published relationship link; href may be relative.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Selected source relationship links."
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actual whole items emitted in this collection page."
},
"notice": {
"type": "string",
"description": "Licence, coverage and workload notices."
},
"record": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "profile",
"description": "Complete published member profile."
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"rel": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"href": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"method": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Published relationship link; href may be relative.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Published member profile relationships."
},
"value": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"gender": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameListAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"latestParty": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"abbreviation": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"governmentType": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"backgroundColour": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"foregroundColour": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"isLordsMainParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isIndependentParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"isLordsSpiritualParty": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
}
},
"description": "Published party metadata.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Latest source party, possibly unknown in historical results."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameAddressAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameDisplayAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"nameFullTitle": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"latestHouseMembership": {
"anyOf": [
{
"type": "object",
"properties": {
"house": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source numeric House code; Members uses 1 Commons and 2 Lords."
},
{
"type": "string",
"description": "Source chamber label, including source-specific values."
},
{
"type": "null",
"description": "Source supplied no House."
}
],
"description": "Source House; never inferred from another membership."
},
"membershipFrom": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"membershipFromId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"membershipStatus": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"statusId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"statusNotes": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"statusIsActive": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"statusStartDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"statusDescription": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"description": "Published membership status and its effective date.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Latest source membership status."
},
"membershipEndDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"membershipEndReason": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"membershipStartDate": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"membershipEndReasonId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"membershipEndReasonNotes": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Latest source membership, not a guaranteed as-of snapshot."
}
},
"description": "Complete published member metadata.",
"additionalProperties": false
}
},
"description": "Complete member profile value and source links.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"categories"
],
"properties": {
"kind": {
"type": "string",
"const": "role_categories",
"description": "Biography category outline."
},
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"category",
"count",
"available"
],
"properties": {
"count": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Exact whole-period count, or null when source category is unavailable."
},
"category": {
"enum": [
"representations",
"electionsContested",
"houseMemberships",
"governmentPosts",
"oppositionPosts",
"otherPosts",
"partyAffiliations",
"committeeMemberships"
],
"type": "string",
"description": "Biography category name."
},
"available": {
"type": "boolean",
"description": "Whether the source supplied this collection."
}
},
"description": "Biography category availability and exact count.",
"additionalProperties": false
},
"description": "Every supported biography category."
}
},
"description": "Category outline; select one category for whole periods.",
"additionalProperties": false
}
],
"description": "Whole member profile or explicit role category outline."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual selected source request.",
"additionalProperties": false
},
"applied": {
"type": "object",
"required": [
"memberId",
"section",
"limit",
"source"
],
"properties": {
"house": {
"type": "string",
"description": "Explicit chamber for interests or voting."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective whole-item limit; voting always requests a native 20-row page."
},
"source": {
"type": "string",
"description": "Selected official source namespace."
},
"section": {
"enum": [
"profile",
"roles",
"committee_seats",
"contact",
"interests",
"voting"
],
"type": "string",
"description": "Selected subsection."
},
"category": {
"enum": [
"representations",
"electionsContested",
"houseMemberships",
"governmentPosts",
"oppositionPosts",
"otherPosts",
"partyAffiliations",
"committeeMemberships"
],
"type": "string",
"description": "Selected biography category."
},
"memberId": {
"type": "string",
"description": "Selected Members API ID."
}
},
"description": "Normalized selectors, source and effective workload.",
"additionalProperties": false
},
"section": {
"enum": [
"profile",
"roles",
"committee_seats",
"contact",
"interests",
"voting"
],
"type": "string",
"description": "Selected member subsection."
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"guidance": {
"type": "string",
"description": "Absence, uncertainty or same-server follow-up guidance."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"memberId": {
"type": "string",
"description": "Canonical Members API identifier."
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"truncated": {
"type": "boolean",
"description": "Further whole collection items remain."
},
"nativePage": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actual requested source voting page, starting at one."
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Complete selected collection count when known."
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"nativePageSize": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Native voting page size, independent of caller limit."
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Caller limit when a cap or native-page rule applies."
},
"membershipContexts": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"committeesState"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"personId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Published integer; null or omitted means unavailable."
},
"photoUrl": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"memberInfo": {
"anyOf": [
{
"type": "object",
"required": [
"mnisId"
],
"properties": {
"house": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source numeric House code; Members uses 1 Commons and 2 Lords."
},
{
"type": "string",
"description": "Source chamber label, including source-specific values."
},
{
"type": "null",
"description": "Source supplied no House."
}
],
"description": "Source House; never inferred from another membership."
},
"party": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"mnisId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Identifier within this source record namespace."
},
"isChair": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"addressAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"displayAs": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"fullTitle": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"isCurrent": {
"type": [
"boolean",
"null"
],
"description": "Published flag; null or omitted is unknown."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Published source text; null or omitted means unavailable."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Member metadata; mnisId is the Members API join key."
},
"committeesState": {
"enum": [
"missing",
"null",
"present"
],
"type": "string",
"description": "Whether the source supplied a committee membership collection."
}
},
"description": "Source person metadata and membership-collection availability.",
"additionalProperties": false
},
"description": "Source person metadata, including people with unavailable or empty membership collections."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}ukparl_search_divisions — Ukparl Search Divisions
Search official Commons or Lords division summaries, or use detail, voters or party_totals with a divisionId from the same House. Search supports title/number text, member and inclusive division dates; member searches include memberVote with the recorded House-native lobby and teller flag. Detail preserves complete metadata and teller identities, with roster selectors for voters mode. Voters can filter exact source party labels and House-compatible lobbies. not_recorded means only the source list, never abstention. Party totals count listed non-tellers and tellers separately from official headline counts. Follow collection cursors with unchanged filters; reconstruct oversized content using contentCursor.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"house"
],
"properties": {
"mode": {
"enum": [
"search",
"detail",
"voters",
"party_totals"
],
"type": "string",
"default": "search",
"description": "Operation; defaults to search; accepts case-insensitive canonical mode names."
},
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Selected House and division ID namespace."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe integer; search default 5/cap 10, voters default 20/cap 50; detail and party_totals do not paginate.",
"exclusiveMinimum": 0
},
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content",
"not_recorded"
],
"type": "string",
"description": "Voters only: Commons aye/no/not_recorded or Lords content/not_content."
},
"party": {
"type": "string",
"minLength": 1,
"description": "Exact case-insensitive source party label; voters only, not a party ID."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Division title or number search text; search mode only."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque search/voters collection continuation; repeat the same filters."
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive source division-date upper bound; search only."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API ID; search returns this member's recorded lobby and teller flag, including divisions where they were a teller."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive source division-date lower bound; search only."
},
"divisionId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Division ID in the selected House; required outside search."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Opaque same-selection lossless content continuation, separate from collection cursor."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied",
"notice"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mode": {
"enum": [
"search",
"detail",
"voters",
"party_totals"
],
"type": "string",
"description": "Selected division operation."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Actual emitted whole-row collection continuation.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"invalid_mode",
"invalid_date_range",
"invalid_cursor",
"source_changed",
"queue_full"
],
"description": "Machine-readable failure mode. Declared by this tool: `http_invalid_params`: The official API returned HTTP 400 for this request. `http_unauthorized`: The official public API returned HTTP 401. `http_forbidden`: The official public API returned HTTP 402 or 403. `http_conflict`: The official API returned HTTP 409, 423 or 424. `http_rate_limited`: The official API returned HTTP 429 after bounded retry handling. `http_invalid_request`: The official API returned an unexpected redirect or another unsupported HTTP client response. `invalid_mode`: Filters, selected identifiers or lobby do not apply to this mode or House. `invalid_date_range`: A date is invalid or the lower bound exceeds the upper bound. `invalid_cursor`: A cursor is malformed or belongs to another selection. `source_changed`: A selected payload changed during content continuation. `queue_full`: The selected voting source request queue is full. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"found": {
"type": "boolean",
"description": "Selected division existence; absent in search mode."
},
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "House scoping division IDs."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"divisionId",
"detailLevel",
"source",
"sourceUrl",
"rosterAvailableVia",
"headlineCountTreatment",
"headlineCountExplanationUrl"
],
"properties": {
"date": {
"type": [
"string",
"null"
],
"description": "Source division date and time."
},
"notes": {
"type": [
"string",
"null"
],
"description": "Complete Lords notes."
},
"title": {
"type": [
"string",
"null"
],
"description": "Complete division title."
},
"number": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "House session division number; distinct from divisionId."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual official request provenance.",
"additionalProperties": false
},
"isHouse": {
"type": [
"boolean",
"null"
],
"description": "Lords source House flag."
},
"noCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official Commons no count, never derived from rows."
},
"tellers": {
"type": "array",
"items": {
"type": "object",
"required": [
"memberId",
"lobby",
"isTeller"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Source member name, unknown when absent or null."
},
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content",
"not_recorded"
],
"type": "string",
"description": "Source lobby or explicitly not-recorded list."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party at this division, without current-party inference."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sortable member name."
},
"isTeller": {
"type": "boolean",
"description": "Member appears in this lobby teller list."
},
"memberId": {
"type": "string",
"description": "Members API identifier supplied by this voting source."
},
"subParty": {
"type": [
"string",
"null"
],
"description": "Source sub-party label."
},
"proxyName": {
"type": [
"string",
"null"
],
"description": "Source proxy name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Source constituency or peerage description."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Source party colour."
},
"constituency": {
"type": [
"string",
"null"
],
"description": "Commons constituency only; absent for Lords."
},
"partyIsMainParty": {
"type": [
"boolean",
"null"
],
"description": "Source main-party flag."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Source party abbreviation."
}
},
"description": "One whole normalized voter or teller identity.",
"additionalProperties": false
},
"description": "Available source teller identities on selected detail; rosterSelectors discloses omitted source lists."
},
"ayeCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official Commons aye count, never derived from rows."
},
"evelType": {
"type": [
"string",
"null"
],
"description": "Historic Commons EVEL type."
},
"isWhipped": {
"type": [
"boolean",
"null"
],
"description": "Lords whipped division flag."
},
"sourceUrl": {
"type": "string",
"description": "Official public division page."
},
"divisionId": {
"type": "string",
"description": "Division ID scoped to the accompanying House."
},
"isDeferred": {
"type": [
"boolean",
"null"
],
"description": "Commons deferred division flag."
},
"memberVote": {
"type": "object",
"required": [
"memberId",
"lobby",
"wasTeller"
],
"properties": {
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content"
],
"type": "string",
"description": "Recorded House-native vote direction."
},
"memberId": {
"type": "string",
"description": "Selected member identity supplied by the voting record."
},
"wasTeller": {
"type": "boolean",
"description": "Source identifies this member as a teller for this division."
}
},
"description": "Selected member vote, present only in member-filtered search results.",
"additionalProperties": false
},
"detailLevel": {
"enum": [
"summary",
"complete"
],
"type": "string",
"description": "Search summary or selected complete metadata."
},
"evelCountry": {
"type": [
"string",
"null"
],
"description": "Historic Commons EVEL country."
},
"isInquorate": {
"type": [
"boolean",
"null"
],
"description": "Lords inquorate division flag."
},
"friendlyTitle": {
"type": [
"string",
"null"
],
"description": "Commons friendly title."
},
"isGovernmentWin": {
"type": [
"boolean",
"null"
],
"description": "Lords source government-win flag."
},
"remoteVotingEnd": {
"type": [
"string",
"null"
],
"description": "Source remote voting end."
},
"rosterSelectors": {
"type": "array",
"items": {
"type": "object",
"required": [
"lobby",
"membersKnown",
"tellersKnown",
"selector"
],
"properties": {
"count": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Known complete roster row count; unknown if source omitted its list."
},
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content",
"not_recorded"
],
"type": "string",
"description": "Select this lobby in voters mode."
},
"selector": {
"type": "string",
"const": "voters",
"description": "Mode selecting this collection."
},
"membersKnown": {
"type": "boolean",
"description": "Source supplied a complete member roster array for this lobby."
},
"tellersKnown": {
"type": "boolean",
"description": "Source supplied a teller array, or this lobby has no teller concept."
}
},
"description": "One complete roster selector with explicit availability.",
"additionalProperties": false
},
"description": "Complete-detail roster descriptors; summaries do not claim roster completeness."
},
"remoteVotingStart": {
"type": [
"string",
"null"
],
"description": "Source remote voting start."
},
"divisionHadTellers": {
"type": [
"boolean",
"null"
],
"description": "Lords source teller presence flag."
},
"memberContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Lords source member content tally."
},
"publicationUpdated": {
"type": [
"string",
"null"
],
"description": "Source publication update time."
},
"rosterAvailableVia": {
"type": "string",
"const": "ukparl_search_divisions",
"description": "Use mode=voters with house and divisionId for complete roster rows."
},
"sponsoringMemberId": {
"type": [
"string",
"null"
],
"description": "Source sponsoring Members API ID."
},
"tellerContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Lords count recorded by tellers; not the number of tellers."
},
"friendlyDescription": {
"type": [
"string",
"null"
],
"description": "Complete Commons friendly description."
},
"isGovernmentContent": {
"type": [
"boolean",
"null"
],
"description": "Lords government content position."
},
"amendmentMotionNotes": {
"type": [
"string",
"null"
],
"description": "Complete Lords amendment motion HTML."
},
"doubleMajorityNoCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official Commons double-majority no count."
},
"memberNotContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Lords source member not-content tally."
},
"tellerNotContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Lords not-content count recorded by tellers."
},
"doubleMajorityAyeCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official Commons double-majority aye count."
},
"headlineCountTreatment": {
"type": "string",
"description": "Source-specific official count semantics, separate from roster arithmetic."
},
"authoritativeContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official authoritative Lords content count."
},
"headlineCountExplanationUrl": {
"type": "string",
"description": "Official Parliament explanation of whether tellers are counted in each House."
},
"authoritativeNotContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official authoritative Lords not-content count."
},
"divisionWasExclusivelyRemote": {
"type": [
"boolean",
"null"
],
"description": "Lords exclusively remote division flag."
}
},
"description": "Normalized whole division metadata.",
"additionalProperties": false
},
"description": "Explicit search summaries without full roster arrays."
},
"notice": {
"type": "string",
"description": "Licence, coverage, empty-result and workload notices."
},
"record": {
"type": "object",
"required": [
"divisionId",
"detailLevel",
"source",
"sourceUrl",
"rosterAvailableVia",
"headlineCountTreatment",
"headlineCountExplanationUrl"
],
"properties": {
"date": {
"type": [
"string",
"null"
],
"description": "Source division date and time."
},
"notes": {
"type": [
"string",
"null"
],
"description": "Complete Lords notes."
},
"title": {
"type": [
"string",
"null"
],
"description": "Complete division title."
},
"number": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "House session division number; distinct from divisionId."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual official request provenance.",
"additionalProperties": false
},
"isHouse": {
"type": [
"boolean",
"null"
],
"description": "Lords source House flag."
},
"noCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official Commons no count, never derived from rows."
},
"tellers": {
"type": "array",
"items": {
"type": "object",
"required": [
"memberId",
"lobby",
"isTeller"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Source member name, unknown when absent or null."
},
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content",
"not_recorded"
],
"type": "string",
"description": "Source lobby or explicitly not-recorded list."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party at this division, without current-party inference."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sortable member name."
},
"isTeller": {
"type": "boolean",
"description": "Member appears in this lobby teller list."
},
"memberId": {
"type": "string",
"description": "Members API identifier supplied by this voting source."
},
"subParty": {
"type": [
"string",
"null"
],
"description": "Source sub-party label."
},
"proxyName": {
"type": [
"string",
"null"
],
"description": "Source proxy name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Source constituency or peerage description."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Source party colour."
},
"constituency": {
"type": [
"string",
"null"
],
"description": "Commons constituency only; absent for Lords."
},
"partyIsMainParty": {
"type": [
"boolean",
"null"
],
"description": "Source main-party flag."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Source party abbreviation."
}
},
"description": "One whole normalized voter or teller identity.",
"additionalProperties": false
},
"description": "Available source teller identities on selected detail; rosterSelectors discloses omitted source lists."
},
"ayeCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official Commons aye count, never derived from rows."
},
"evelType": {
"type": [
"string",
"null"
],
"description": "Historic Commons EVEL type."
},
"isWhipped": {
"type": [
"boolean",
"null"
],
"description": "Lords whipped division flag."
},
"sourceUrl": {
"type": "string",
"description": "Official public division page."
},
"divisionId": {
"type": "string",
"description": "Division ID scoped to the accompanying House."
},
"isDeferred": {
"type": [
"boolean",
"null"
],
"description": "Commons deferred division flag."
},
"memberVote": {
"type": "object",
"required": [
"memberId",
"lobby",
"wasTeller"
],
"properties": {
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content"
],
"type": "string",
"description": "Recorded House-native vote direction."
},
"memberId": {
"type": "string",
"description": "Selected member identity supplied by the voting record."
},
"wasTeller": {
"type": "boolean",
"description": "Source identifies this member as a teller for this division."
}
},
"description": "Selected member vote, present only in member-filtered search results.",
"additionalProperties": false
},
"detailLevel": {
"enum": [
"summary",
"complete"
],
"type": "string",
"description": "Search summary or selected complete metadata."
},
"evelCountry": {
"type": [
"string",
"null"
],
"description": "Historic Commons EVEL country."
},
"isInquorate": {
"type": [
"boolean",
"null"
],
"description": "Lords inquorate division flag."
},
"friendlyTitle": {
"type": [
"string",
"null"
],
"description": "Commons friendly title."
},
"isGovernmentWin": {
"type": [
"boolean",
"null"
],
"description": "Lords source government-win flag."
},
"remoteVotingEnd": {
"type": [
"string",
"null"
],
"description": "Source remote voting end."
},
"rosterSelectors": {
"type": "array",
"items": {
"type": "object",
"required": [
"lobby",
"membersKnown",
"tellersKnown",
"selector"
],
"properties": {
"count": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Known complete roster row count; unknown if source omitted its list."
},
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content",
"not_recorded"
],
"type": "string",
"description": "Select this lobby in voters mode."
},
"selector": {
"type": "string",
"const": "voters",
"description": "Mode selecting this collection."
},
"membersKnown": {
"type": "boolean",
"description": "Source supplied a complete member roster array for this lobby."
},
"tellersKnown": {
"type": "boolean",
"description": "Source supplied a teller array, or this lobby has no teller concept."
}
},
"description": "One complete roster selector with explicit availability.",
"additionalProperties": false
},
"description": "Complete-detail roster descriptors; summaries do not claim roster completeness."
},
"remoteVotingStart": {
"type": [
"string",
"null"
],
"description": "Source remote voting start."
},
"divisionHadTellers": {
"type": [
"boolean",
"null"
],
"description": "Lords source teller presence flag."
},
"memberContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Lords source member content tally."
},
"publicationUpdated": {
"type": [
"string",
"null"
],
"description": "Source publication update time."
},
"rosterAvailableVia": {
"type": "string",
"const": "ukparl_search_divisions",
"description": "Use mode=voters with house and divisionId for complete roster rows."
},
"sponsoringMemberId": {
"type": [
"string",
"null"
],
"description": "Source sponsoring Members API ID."
},
"tellerContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Lords count recorded by tellers; not the number of tellers."
},
"friendlyDescription": {
"type": [
"string",
"null"
],
"description": "Complete Commons friendly description."
},
"isGovernmentContent": {
"type": [
"boolean",
"null"
],
"description": "Lords government content position."
},
"amendmentMotionNotes": {
"type": [
"string",
"null"
],
"description": "Complete Lords amendment motion HTML."
},
"doubleMajorityNoCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official Commons double-majority no count."
},
"memberNotContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Lords source member not-content tally."
},
"tellerNotContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Lords not-content count recorded by tellers."
},
"doubleMajorityAyeCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official Commons double-majority aye count."
},
"headlineCountTreatment": {
"type": "string",
"description": "Source-specific official count semantics, separate from roster arithmetic."
},
"authoritativeContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official authoritative Lords content count."
},
"headlineCountExplanationUrl": {
"type": "string",
"description": "Official Parliament explanation of whether tellers are counted in each House."
},
"authoritativeNotContentCount": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Official authoritative Lords not-content count."
},
"divisionWasExclusivelyRemote": {
"type": [
"boolean",
"null"
],
"description": "Lords exclusively remote division flag."
}
},
"description": "Complete selected division metadata, teller identities and roster selectors.",
"additionalProperties": false
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual selected API request provenance.",
"additionalProperties": false
},
"voters": {
"type": "array",
"items": {
"type": "object",
"required": [
"memberId",
"lobby",
"isTeller"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Source member name, unknown when absent or null."
},
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content",
"not_recorded"
],
"type": "string",
"description": "Source lobby or explicitly not-recorded list."
},
"party": {
"type": [
"string",
"null"
],
"description": "Party at this division, without current-party inference."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sortable member name."
},
"isTeller": {
"type": "boolean",
"description": "Member appears in this lobby teller list."
},
"memberId": {
"type": "string",
"description": "Members API identifier supplied by this voting source."
},
"subParty": {
"type": [
"string",
"null"
],
"description": "Source sub-party label."
},
"proxyName": {
"type": [
"string",
"null"
],
"description": "Source proxy name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Source constituency or peerage description."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Source party colour."
},
"constituency": {
"type": [
"string",
"null"
],
"description": "Commons constituency only; absent for Lords."
},
"partyIsMainParty": {
"type": [
"boolean",
"null"
],
"description": "Source main-party flag."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Source party abbreviation."
}
},
"description": "One whole normalized voter or teller identity.",
"additionalProperties": false
},
"description": "Whole deduplicated selected voter rows, including tellers."
},
"applied": {
"type": "object",
"required": [
"selectionPath",
"house",
"mode",
"source",
"limit",
"dateSemantics"
],
"properties": {
"mode": {
"enum": [
"search",
"detail",
"voters",
"party_totals"
],
"type": "string",
"description": "Applied operation."
},
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Applied House."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective collection workload limit."
},
"source": {
"enum": [
"commons_votes",
"lords_votes"
],
"type": "string",
"description": "Selected official API; no cross-source fallback."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actual whole items emitted on the selected collection page."
},
"dateSemantics": {
"type": "string",
"description": "Search boundaries apply inclusively to division dates; no implicit window."
},
"selectionPath": {
"type": "string",
"const": "/selection",
"description": "Complete normalized filters are reconstructable at this payload path."
}
},
"description": "Required normalized operation and actual workload metadata.",
"additionalProperties": false
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"guidance": {
"type": "string",
"description": "Actionable recovery for a missing division or unavailable complete roster."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"selection": {
"type": "object",
"required": [
"house",
"mode",
"limit"
],
"properties": {
"mode": {
"enum": [
"search",
"detail",
"voters",
"party_totals"
],
"type": "string",
"description": "Selected division operation."
},
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Selected House and division ID namespace."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 9007199254740991,
"description": "Positive safe integer; search default 5/cap 10, voters default 20/cap 50.",
"exclusiveMinimum": 0
},
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content",
"not_recorded"
],
"type": "string",
"description": "Voters only: Commons aye/no/not_recorded or Lords content/not_content."
},
"party": {
"type": "string",
"minLength": 1,
"description": "Exact case-insensitive source party label; voters only, not a party ID."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Division title or number search text; search mode only."
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive source division-date upper bound; search only."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API ID; search returns this member's recorded lobby and teller flag, including divisions where they were a teller."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive source division-date lower bound; search only."
},
"divisionId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Division ID in the selected House; required outside search."
}
},
"description": "Complete normalized filters retained through content delivery.",
"additionalProperties": false
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known selected collection total; search arrays do not supply a total."
},
"truncation": {
"type": "object",
"required": [
"shown",
"cap"
],
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective workload cap."
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole items emitted."
}
},
"description": "Further collection rows remain; follow page.nextCursor.",
"additionalProperties": false
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"partyTotals": {
"type": "array",
"items": {
"type": "object",
"required": [
"lobby",
"voterCount",
"tellerCount"
],
"properties": {
"lobby": {
"enum": [
"aye",
"no",
"content",
"not_content",
"not_recorded"
],
"type": "string",
"description": "Source lobby."
},
"party": {
"type": [
"string",
"null"
],
"description": "Source party label; unknown remains unknown."
},
"voterCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Unique listed non-teller members in this party and lobby."
},
"tellerCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Unique listed tellers in this party and lobby."
}
},
"description": "One roster-derived party and lobby tally.",
"additionalProperties": false
},
"description": "Complete roster-derived party/lobby non-teller and teller counts."
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Caller limit when clamped to the operation cap."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}ukparl_search_hansard — Search spoken Hansard
Search spoken Westminster Hansard contributions by topic, member, House, date or numeric debateSectionId. Returns full source contribution text where supplied, including HTML; previews are labelled summaries. Repeat with a returned debateSectionId to search that section, which does not establish an entire debate transcript. Historical completeness is not guaranteed, including the 2004–2006 website warning despite some API records. Use ukparl_lookup_reference topic=coverage for archive guidance. Follow collection cursors unchanged and contentCursor for lossless oversized contributions; retry timeouts with shorter date windows.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Commons or Lords; exact official House aliases are accepted."
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 9007199254740991,
"description": "Requested whole contributions; default 5, effective cap 20 with notice.",
"exclusiveMinimum": 0
},
"query": {
"type": "string",
"minLength": 1,
"description": "Spoken contribution search text; no date range is inferred."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque collection continuation; repeat the same filters and effective limit."
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive latest sitting date, real YYYY-MM-DD; must not precede startDate."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Members API identifier discovered with ukparl_search_members."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive earliest sitting date, real YYYY-MM-DD; no inferred archive cutoff."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Opaque lossless content continuation; preserve original selection and collection cursor."
},
"debateSectionId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Returned numeric debateSectionId, distinct from external debate IDs."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied",
"coverage"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actual collection workload cap."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Actual emitted whole-item continuation, independent of content delivery.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"invalid_cursor",
"source_changed",
"invalid_date_range",
"queue_full",
"attempt_timeout",
"call_deadline_exceeded"
],
"description": "Machine-readable failure mode. Declared by this tool: `http_invalid_params`: The official API returned HTTP 400 for this request. `http_unauthorized`: The official public API returned HTTP 401. `http_forbidden`: The official public API returned HTTP 402 or 403. `http_conflict`: The official API returned HTTP 409, 423 or 424. `http_rate_limited`: The official API returned HTTP 429 after bounded retry handling. `http_invalid_request`: The official API returned an unexpected redirect or another unsupported HTTP client response. `invalid_cursor`: Collection or content cursor is invalid or bound to another selection. `source_changed`: Selected contribution data changed during content reconstruction. `invalid_date_range`: Date bounds are impossible or reversed. `queue_full`: Hansard origin request queue is full. `attempt_timeout`: A Spoken source attempt timed out. `call_deadline_exceeded`: The shared call deadline elapsed while searching Spoken contributions. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"itemId",
"contributionExtId",
"textFormat",
"detailLevel",
"contributionUrl",
"source"
],
"properties": {
"rank": {
"type": [
"number",
"null"
],
"description": "Source search rank, not a synthesized score."
},
"text": {
"type": "string",
"description": "Complete ContributionTextFull, including source HTML and whitespace."
},
"house": {
"type": [
"string",
"null"
],
"description": "Source House label, preserved verbatim."
},
"hrsTag": {
"type": [
"string",
"null"
],
"description": "Source HRSTag classification."
},
"itemId": {
"type": "string",
"description": "Source content item identifier; decimal string preserves int64 IDs."
},
"notice": {
"type": "string",
"description": "Explanation when full text is unavailable."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual request provenance and licence.",
"additionalProperties": false
},
"preview": {
"type": [
"string",
"null"
],
"description": "Source ContributionText preview, distinct from complete text."
},
"section": {
"type": [
"string",
"null"
],
"description": "Source chamber or section label."
},
"memberId": {
"type": [
"string",
"null"
],
"description": "Positive Members API join identifier; null for source null or nonpositive sentinels."
},
"timecode": {
"type": [
"string",
"null"
],
"description": "Source timecode as supplied; null is unknown."
},
"debateUrl": {
"type": "string",
"description": "Official debate permalink resolver when its external ID is supplied; returns the website path as JSON, resolved against https://hansard.parliament.uk."
},
"memberName": {
"type": [
"string",
"null"
],
"description": "Source speaker name; null includes procedural records."
},
"textFormat": {
"type": "string",
"const": "source_html_or_text",
"description": "Source text is preserved verbatim, never executed."
},
"detailLevel": {
"enum": [
"complete",
"summary"
],
"type": "string",
"description": "Complete only when full contribution text is supplied."
},
"sittingDate": {
"type": [
"string",
"null"
],
"description": "Source sitting date and time representation."
},
"attributedTo": {
"type": [
"string",
"null"
],
"description": "Source attribution preserved without trimming."
},
"debateSection": {
"type": [
"string",
"null"
],
"description": "Source debate section title."
},
"hansardSection": {
"type": [
"string",
"null"
],
"description": "Source HansardSection code."
},
"sourceMemberId": {
"type": "string",
"description": "Original nonpositive source MemberId sentinel; not a Members API join identifier."
},
"contributionUrl": {
"type": "string",
"description": "Official permalink resolver; returns the contribution website path as JSON, resolved against https://hansard.parliament.uk."
},
"debateSectionId": {
"type": [
"string",
"null"
],
"description": "Numeric debate section filter ID; repeat this tool with this ID."
},
"contributionExtId": {
"type": "string",
"description": "Open external identifier, including historical digit strings."
},
"debateSectionExtId": {
"type": [
"string",
"null"
],
"description": "External debate section ID, distinct from the numeric filter ID."
},
"debateSectionOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source debate section order."
},
"orderInDebateSection": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source contribution order within this section."
}
},
"description": "One source Spoken contribution with exact text and provenance.",
"additionalProperties": false
},
"description": "Whole Spoken contributions in source search order."
},
"query": {
"type": "string",
"description": "Complete normalized search text, reconstructable during content delivery."
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole contributions emitted or selected for reconstruction."
},
"notice": {
"type": "string",
"description": "Licence, coverage, missing-text, empty-result and clamped-limit guidance."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Exact official Spoken request provenance, including empty pages.",
"additionalProperties": false
},
"applied": {
"type": "object",
"required": [
"dateSemantics",
"source",
"limit"
],
"properties": {
"house": {
"type": "string",
"description": "Applied canonical House."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective per-call whole-contribution limit."
},
"source": {
"type": "string",
"const": "hansard",
"description": "Official Spoken Hansard API namespace."
},
"endDate": {
"type": "string",
"description": "Applied inclusive end date, unchanged."
},
"memberId": {
"type": "string",
"description": "Applied Members API identifier."
},
"startDate": {
"type": "string",
"description": "Applied inclusive start date, unchanged."
},
"dateSemantics": {
"type": "string",
"const": "sitting_date_inclusive_no_inferred_window",
"description": "Date filters use sitting dates without a default range."
},
"queryLocation": {
"type": "string",
"const": "/query",
"description": "Complete query is retained at /query in the selected payload."
},
"debateSectionId": {
"type": "string",
"description": "Applied numeric section filter."
}
},
"description": "Normalized filters and actual workload.",
"additionalProperties": false
},
"coverage": {
"type": "object",
"required": [
"source",
"archiveStartDate",
"apiMinimumDate",
"verifiedSampleYears",
"completeness",
"knownGaps",
"archiveUrl"
],
"properties": {
"source": {
"type": "string",
"const": "spoken_api",
"description": "Spoken contributions API, without automatic archive fallback."
},
"knownGaps": {
"type": "array",
"items": {
"type": "string",
"description": "Documented coverage warning."
},
"description": "Known warnings, including website/API distinctions."
},
"archiveUrl": {
"type": "string",
"description": "Official historical archive, which is not an automatic fallback."
},
"completeness": {
"type": "string",
"const": "not_guaranteed",
"description": "Continuous historical coverage is not guaranteed."
},
"apiMinimumDate": {
"type": "null",
"description": "No official API minimum date has been established."
},
"archiveStartDate": {
"type": "string",
"description": "Documented historical archive start; not an API cutoff."
},
"verifiedSampleYears": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Year with a verified successful API sample."
},
"description": "Samples establish availability only, never complete coverage."
}
},
"description": "Historical source facts; samples never establish complete coverage.",
"additionalProperties": false
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"truncated": {
"type": "boolean",
"description": "Further whole contributions remain; follow the collection cursor."
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source TotalResultCount."
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"searchTerms": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Source parsed search term."
}
},
{
"type": "null"
}
],
"description": "Source parsed terms, including explicit null."
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Original request when above the workload cap."
},
"spokenResultCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source SpokenResultCount, distinct from total matches."
},
"writtenResultCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source WrittenResultCount metadata."
},
"divisionsResultCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source DivisionsResultCount metadata."
},
"correctionsResultCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source CorrectionsResultCount metadata."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}ukparl_search_questions — Search written questions
Search Westminster written questions and answer previews by text, exact UIN, asking or answering member, House, answering body, answer state and dates. An undated UIN returns candidates across sessions; narrow with tabling dates and retrieve mode=detail with a returned questionId for complete question and answer HTML, corrections and attachment links. A UIN is not a questionId and never determines House. Search includes all sessions and withdrawn questions. Follow collection cursors unchanged; use contentCursor for lossless oversized answers.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"uin": {
"type": "string",
"minLength": 1,
"description": "Exact UIN lookup string, such as 36068 or HL1234; preserves leading zeros. Search only; combine with tabling dates to narrow reused UINs."
},
"mode": {
"enum": [
"search",
"detail"
],
"type": "string",
"default": "search",
"description": "Search previews or retrieve one complete question."
},
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Commons or Lords; search only."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Search page size, default 10, cap 20; larger safe integers are capped. Omit in detail.",
"exclusiveMinimum": 0
},
"query": {
"type": "string",
"minLength": 1,
"description": "Question or answer content terms; search only."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque search continuation; repeat unchanged filters."
},
"answered": {
"type": "boolean",
"description": "True answered, false unanswered, omission either; search only."
},
"memberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Asking Members API ID; search only."
},
"tabledTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive tabling end YYYY-MM-DD; search only."
},
"answeredTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive answer end YYYY-MM-DD; search only."
},
"questionId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Positive decimal Questions API ID required in detail; UIN is not this ID."
},
"tabledFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive tabling start YYYY-MM-DD; search only."
},
"answeredFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive answer start YYYY-MM-DD; search only."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Opaque lossless content continuation for this same selection."
},
"answeringBodyIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Official answering-body ID."
},
"maxItems": 20,
"minItems": 1,
"description": "Up to 20 answering-body IDs resolved through ukparl_lookup_reference; search only."
},
"answeringMemberId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Answering Members API ID; search only, independent of asking memberId."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied",
"notice"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective search page-size cap."
},
"mode": {
"enum": [
"search",
"detail"
],
"type": "string",
"description": "Selected question operation."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Whole-question search continuation.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"queue_full",
"invalid_mode_arguments",
"invalid_date_range",
"unknown_reference_id",
"invalid_cursor",
"source_changed"
],
"description": "Machine-readable failure mode. Declared by this tool: `http_invalid_params`: The official API returned HTTP 400 for this request. `http_unauthorized`: The official public API returned HTTP 401. `http_forbidden`: The official public API returned HTTP 402 or 403. `http_conflict`: The official API returned HTTP 409, 423 or 424. `http_rate_limited`: The official API returned HTTP 429 after bounded retry handling. `http_invalid_request`: The official API returned an unexpected redirect or another unsupported HTTP client response. `queue_full`: A selected Questions or Members origin request queue is full. `invalid_mode_arguments`: Required detail ID is missing or fields conflict with the selected mode. `invalid_date_range`: Calendar dates are invalid or reversed. `unknown_reference_id`: The complete answering-body reference excludes a supplied ID. `invalid_cursor`: Collection or content cursor is malformed or bound to another selection. `source_changed`: Selected content changed during retrieval. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"found": {
"type": "boolean",
"description": "Detail lookup success; false requires guidance."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"questionId",
"source",
"detailLevel"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Questions API numeric record ID, distinct from UIN.",
"exclusiveMinimum": 0
},
"uin": {
"type": [
"string",
"null"
],
"description": "Source UIN; search returns candidates across sessions, while questionId selects one record."
},
"house": {
"enum": [
"Bicameral",
"Commons",
"Lords"
],
"type": "string",
"description": "Source House."
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"rel": {
"type": [
"string",
"null"
],
"description": "Source relation."
},
"href": {
"type": [
"string",
"null"
],
"description": "Source link target."
},
"method": {
"type": [
"string",
"null"
],
"description": "Source link method."
}
},
"description": "Source relationship link.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Source relationship links."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual selected request provenance.",
"additionalProperties": false
},
"heading": {
"type": [
"string",
"null"
],
"description": "Source question heading."
},
"followUp": {
"type": "string",
"description": "Same-tool instruction for complete question and answer retrieval."
},
"answerText": {
"type": [
"string",
"null"
],
"description": "Search answer preview or complete detail HTML, preserved verbatim."
},
"dateTabled": {
"type": "string",
"description": "Source tabling date."
},
"isNamedDay": {
"type": "boolean",
"description": "Source named-day flag."
},
"questionId": {
"type": "string",
"description": "Decimal Questions API ID for detail mode."
},
"attachments": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Published attachment link; not downloaded."
},
"title": {
"type": [
"string",
"null"
],
"description": "Attachment title."
},
"fileType": {
"type": [
"string",
"null"
],
"description": "Published file type."
},
"fileSizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Published size in bytes."
}
},
"description": "Published attachment metadata.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Every attachment supplied by the selected response."
},
"detailLevel": {
"enum": [
"summary",
"complete"
],
"type": "string",
"description": "Summary previews or complete selected question."
},
"isWithdrawn": {
"type": "boolean",
"description": "Source withdrawal flag."
},
"askingMember": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Members API identifier.",
"exclusiveMinimum": 0
},
"name": {
"type": [
"string",
"null"
],
"description": "Member display name."
},
"party": {
"type": [
"string",
"null"
],
"description": "Recorded party name."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sorting name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or member origin."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Recorded party colour."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"description": "Published member thumbnail link."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Recorded party abbreviation."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Expanded asking member reference."
},
"dateAnswered": {
"type": [
"string",
"null"
],
"description": "Source answer date."
},
"questionText": {
"type": [
"string",
"null"
],
"description": "Question text; search is a preview, detail is complete."
},
"dateForAnswer": {
"type": "string",
"description": "Source requested answer date."
},
"askingMemberId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Asking Members API ID.",
"exclusiveMinimum": 0
},
"answerIsHolding": {
"type": [
"boolean",
"null"
],
"description": "Source holding-answer flag."
},
"answeringBodyId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source answering-body reference ID."
},
"answeringMember": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Members API identifier.",
"exclusiveMinimum": 0
},
"name": {
"type": [
"string",
"null"
],
"description": "Member display name."
},
"party": {
"type": [
"string",
"null"
],
"description": "Recorded party name."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sorting name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or member origin."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Recorded party colour."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"description": "Published member thumbnail link."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Recorded party abbreviation."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Expanded answering member."
},
"attachmentCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Published attachment count; does not mean files were fetched."
},
"correctingMember": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Members API identifier.",
"exclusiveMinimum": 0
},
"name": {
"type": [
"string",
"null"
],
"description": "Member display name."
},
"party": {
"type": [
"string",
"null"
],
"description": "Recorded party name."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sorting name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or member origin."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Recorded party colour."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"description": "Published member thumbnail link."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Recorded party abbreviation."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Expanded correcting member."
},
"groupedQuestions": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Related question UIN."
}
},
{
"type": "null"
}
],
"description": "Source grouped UINs, not Questions API IDs."
},
"answeringBodyName": {
"type": [
"string",
"null"
],
"description": "Source answering-body name."
},
"answeringMemberId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Answering Members API ID."
},
"dateHoldingAnswer": {
"type": [
"string",
"null"
],
"description": "Holding answer date."
},
"memberHasInterest": {
"type": "boolean",
"description": "Recorded interest flag; omitted means unknown."
},
"answerIsCorrection": {
"type": [
"boolean",
"null"
],
"description": "Source corrected-answer flag."
},
"correctingMemberId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Correcting Members API ID."
},
"originalAnswerText": {
"type": [
"string",
"null"
],
"description": "Original answer content, preserved verbatim."
},
"dateAnswerCorrected": {
"type": [
"string",
"null"
],
"description": "Correction date."
},
"comparableAnswerText": {
"type": [
"string",
"null"
],
"description": "Source comparable answer content."
},
"groupedQuestionsDates": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"dateTabled": {
"type": "string",
"description": "Related question tabling date."
},
"questionUin": {
"type": [
"string",
"null"
],
"description": "Related question UIN."
}
},
"description": "Date-qualified grouped question reference.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Grouped question UIN and date relationships."
}
},
"description": "Question preview summary.",
"additionalProperties": false
},
"description": "Selected search page; never automatically hydrated."
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actually emitted whole search results."
},
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Upstream total when known."
},
"notice": {
"type": "string",
"description": "Licence, preview and workload notices."
},
"record": {
"type": "object",
"required": [
"id",
"questionId",
"source",
"detailLevel"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Questions API numeric record ID, distinct from UIN.",
"exclusiveMinimum": 0
},
"uin": {
"type": [
"string",
"null"
],
"description": "Source UIN; search returns candidates across sessions, while questionId selects one record."
},
"house": {
"enum": [
"Bicameral",
"Commons",
"Lords"
],
"type": "string",
"description": "Source House."
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"rel": {
"type": [
"string",
"null"
],
"description": "Source relation."
},
"href": {
"type": [
"string",
"null"
],
"description": "Source link target."
},
"method": {
"type": [
"string",
"null"
],
"description": "Source link method."
}
},
"description": "Source relationship link.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Source relationship links."
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual selected request provenance.",
"additionalProperties": false
},
"heading": {
"type": [
"string",
"null"
],
"description": "Source question heading."
},
"followUp": {
"type": "string",
"description": "Same-tool instruction for complete question and answer retrieval."
},
"answerText": {
"type": [
"string",
"null"
],
"description": "Search answer preview or complete detail HTML, preserved verbatim."
},
"dateTabled": {
"type": "string",
"description": "Source tabling date."
},
"isNamedDay": {
"type": "boolean",
"description": "Source named-day flag."
},
"questionId": {
"type": "string",
"description": "Decimal Questions API ID for detail mode."
},
"attachments": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Published attachment link; not downloaded."
},
"title": {
"type": [
"string",
"null"
],
"description": "Attachment title."
},
"fileType": {
"type": [
"string",
"null"
],
"description": "Published file type."
},
"fileSizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Published size in bytes."
}
},
"description": "Published attachment metadata.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Every attachment supplied by the selected response."
},
"detailLevel": {
"enum": [
"summary",
"complete"
],
"type": "string",
"description": "Summary previews or complete selected question."
},
"isWithdrawn": {
"type": "boolean",
"description": "Source withdrawal flag."
},
"askingMember": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Members API identifier.",
"exclusiveMinimum": 0
},
"name": {
"type": [
"string",
"null"
],
"description": "Member display name."
},
"party": {
"type": [
"string",
"null"
],
"description": "Recorded party name."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sorting name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or member origin."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Recorded party colour."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"description": "Published member thumbnail link."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Recorded party abbreviation."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Expanded asking member reference."
},
"dateAnswered": {
"type": [
"string",
"null"
],
"description": "Source answer date."
},
"questionText": {
"type": [
"string",
"null"
],
"description": "Question text; search is a preview, detail is complete."
},
"dateForAnswer": {
"type": "string",
"description": "Source requested answer date."
},
"askingMemberId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Asking Members API ID.",
"exclusiveMinimum": 0
},
"answerIsHolding": {
"type": [
"boolean",
"null"
],
"description": "Source holding-answer flag."
},
"answeringBodyId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source answering-body reference ID."
},
"answeringMember": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Members API identifier.",
"exclusiveMinimum": 0
},
"name": {
"type": [
"string",
"null"
],
"description": "Member display name."
},
"party": {
"type": [
"string",
"null"
],
"description": "Recorded party name."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sorting name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or member origin."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Recorded party colour."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"description": "Published member thumbnail link."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Recorded party abbreviation."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Expanded answering member."
},
"attachmentCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Published attachment count; does not mean files were fetched."
},
"correctingMember": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Members API identifier.",
"exclusiveMinimum": 0
},
"name": {
"type": [
"string",
"null"
],
"description": "Member display name."
},
"party": {
"type": [
"string",
"null"
],
"description": "Recorded party name."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Source sorting name."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Constituency or member origin."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Recorded party colour."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"description": "Published member thumbnail link."
},
"partyAbbreviation": {
"type": [
"string",
"null"
],
"description": "Recorded party abbreviation."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Expanded correcting member."
},
"groupedQuestions": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Related question UIN."
}
},
{
"type": "null"
}
],
"description": "Source grouped UINs, not Questions API IDs."
},
"answeringBodyName": {
"type": [
"string",
"null"
],
"description": "Source answering-body name."
},
"answeringMemberId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Answering Members API ID."
},
"dateHoldingAnswer": {
"type": [
"string",
"null"
],
"description": "Holding answer date."
},
"memberHasInterest": {
"type": "boolean",
"description": "Recorded interest flag; omitted means unknown."
},
"answerIsCorrection": {
"type": [
"boolean",
"null"
],
"description": "Source corrected-answer flag."
},
"correctingMemberId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Correcting Members API ID."
},
"originalAnswerText": {
"type": [
"string",
"null"
],
"description": "Original answer content, preserved verbatim."
},
"dateAnswerCorrected": {
"type": [
"string",
"null"
],
"description": "Correction date."
},
"comparableAnswerText": {
"type": [
"string",
"null"
],
"description": "Source comparable answer content."
},
"groupedQuestionsDates": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"dateTabled": {
"type": "string",
"description": "Related question tabling date."
},
"questionUin": {
"type": [
"string",
"null"
],
"description": "Related question UIN."
}
},
"description": "Date-qualified grouped question reference.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Grouped question UIN and date relationships."
}
},
"description": "Complete selected question including answer HTML and attachments metadata.",
"additionalProperties": false
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual selected official request.",
"additionalProperties": false
},
"applied": {
"type": "object",
"required": [
"mode",
"source",
"limit",
"filters",
"sessionStatus",
"expandMember",
"dateSemantics"
],
"properties": {
"mode": {
"enum": [
"search",
"detail"
],
"type": "string",
"description": "Selected mode."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective maximum whole search records."
},
"source": {
"type": "string",
"const": "questions",
"description": "Official Questions API."
},
"filters": {
"type": "string",
"const": "/filters",
"description": "Complete normalized search filters are retained at /filters."
},
"questionId": {
"type": "string",
"description": "Selected Questions API record ID."
},
"answerState": {
"enum": [
"Any",
"Answered",
"Unanswered"
],
"type": "string",
"description": "Independent upstream answered selection."
},
"expandMember": {
"type": "boolean",
"const": true,
"description": "Expanded source member references requested."
},
"dateSemantics": {
"type": "string",
"const": "inclusive calendar dates; no implicit date window",
"description": "Date-bound semantics."
},
"sessionStatus": {
"type": "string",
"const": "Any",
"description": "No current-session restriction."
},
"questionStatus": {
"type": "string",
"const": "AllQuestions",
"description": "Search includes every question status."
},
"includeWithdrawn": {
"type": "boolean",
"const": true,
"description": "Search includes withdrawn questions."
}
},
"description": "Effective filters, explicit upstream scope and date semantics.",
"additionalProperties": false
},
"filters": {
"type": "object",
"properties": {
"uin": {
"type": "string",
"description": "Exact source UIN lookup string, potentially shared across sessions."
},
"house": {
"enum": [
"commons",
"lords"
],
"type": "string",
"description": "Selected House."
},
"query": {
"type": "string",
"description": "Content search terms."
},
"answered": {
"type": "boolean",
"description": "True answered, false unanswered, omitted either."
},
"memberId": {
"type": "string",
"description": "Asking member ID."
},
"tabledTo": {
"type": "string",
"description": "Inclusive tabling end date."
},
"answeredTo": {
"type": "string",
"description": "Inclusive answer end date."
},
"tabledFrom": {
"type": "string",
"description": "Inclusive tabling start date."
},
"answeredFrom": {
"type": "string",
"description": "Inclusive answer start date."
},
"answeringBodyIds": {
"type": "array",
"items": {
"type": "string",
"description": "Answering-body ID."
},
"description": "Selected answering-body IDs."
},
"answeringMemberId": {
"type": "string",
"description": "Answering member ID, distinct from asking member."
}
},
"description": "Complete normalized selection filters.",
"additionalProperties": false
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"guidance": {
"type": "string",
"description": "Same-tool recovery for missing or empty selections."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"truncated": {
"type": "boolean",
"description": "Further whole search results remain."
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"questionId": {
"type": "string",
"description": "Selected Questions API ID."
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Original page-size request when capped."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}ukparl_get_committee — Get committees and evidence
Find Westminster committees with mode=search, then use committeeId for detail, members, inquiries or publications. Inquiries returns every committee business type, labelled by isInquiry; use businessId with mode=inquiry for complete business detail or to filter publications. Use publicationId with mode=publication for complete report/publication metadata and source links. Use mode=evidence with businessId and evidenceType=written|oral to list evidence; mode=evidence_detail requires evidenceId and evidenceType in the same namespace. Memberships retain all role periods; personId is distinct from Members API memberId. No document downloads or text extraction. Follow cursors with unchanged filters; contentCursor retrieves oversized records losslessly. Typed entities retain sourcePath relationships to reconstruct nested source metadata.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mode": {
"enum": [
"search",
"detail",
"members",
"inquiries",
"inquiry",
"publications",
"publication",
"evidence",
"evidence_detail"
],
"type": "string",
"default": "search",
"description": "Search, committee detail, members, business list/detail, publication list/detail or written/oral evidence list/detail."
},
"house": {
"enum": [
"commons",
"lords",
"joint"
],
"type": "string",
"description": "Commons, Lords or Joint, case-insensitive; exact House of Commons/Lords aliases also accepted. Search only."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Collection size: search default 10 cap 20; nested default 20 cap 50. Safe over-cap values clamp. Omit for singular modes.",
"exclusiveMinimum": 0
},
"query": {
"type": "string",
"minLength": 1,
"description": "Search terms for search, inquiries or publications; latter two require at least two characters."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque collection continuation; repeat unchanged filters and effective limit."
},
"status": {
"anyOf": [
{
"enum": [
"Current",
"Former",
"All"
],
"type": "string"
},
{
"enum": [
"Open",
"Closed"
],
"type": "string"
}
],
"description": "Search: Current|Former|All. Inquiries: Open|Closed. Omitted uses source default."
},
"openedTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inquiries opened on/before this ISO date."
},
"sortOrder": {
"anyOf": [
{
"enum": [
"DateOpenedNewest",
"DateOpenedOldest",
"PublicationDateAscending",
"PublicationDateDescending"
],
"type": "string"
},
{
"enum": [
"PublicationDateAscending",
"PublicationDateDescending",
"ResponseDateAscending",
"ResponseDateDescending"
],
"type": "string"
}
],
"description": "Inquiries: DateOpenedNewest|DateOpenedOldest|PublicationDateAscending|PublicationDateDescending. Publications: PublicationDateAscending|PublicationDateDescending|ResponseDateAscending|ResponseDateDescending. Omitted preserves source order."
},
"businessId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Business ID required for inquiry and evidence; optional additional publication filter."
},
"evidenceId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Evidence detail ID, scoped by evidenceType."
},
"membership": {
"enum": [
"all",
"current",
"former"
],
"type": "string",
"description": "Members mode only, default all; filters role-period membership status."
},
"openedFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inquiries opened on/after this ISO date."
},
"committeeId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Committee ID required for detail, members and publications; optional for inquiries to discover businesses across committees."
},
"publishedTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Publications starting on/before this ISO date."
},
"evidenceType": {
"enum": [
"written",
"oral"
],
"type": "string",
"description": "Required for evidence list/detail; written and oral IDs are distinct."
},
"contentCursor": {
"type": "string",
"minLength": 1,
"description": "Opaque same-selection content continuation; reconstruct records before advancing collection cursor."
},
"publicationId": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Publication ID required for publication detail."
},
"publishedFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Publications starting on/after this ISO date."
},
"acceptingEvidence": {
"type": "boolean",
"description": "Inquiries only: true selects accepting businesses; false leaves source selection unrestricted."
},
"publicationTypeIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$"
},
"description": "Publications only: positive publication type IDs, serialized as repeated parameters."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"delivery",
"applied",
"notice"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum collection workload for this mode."
},
"mode": {
"enum": [
"search",
"detail",
"members",
"inquiries",
"inquiry",
"publications",
"publication",
"evidence",
"evidence_detail"
],
"type": "string",
"description": "Selected committee operation."
},
"page": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Whole-record collection continuation.",
"additionalProperties": false
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_date_range",
"http_invalid_params",
"http_unauthorized",
"http_forbidden",
"http_conflict",
"http_rate_limited",
"http_invalid_request",
"queue_full",
"invalid_mode_arguments",
"invalid_cursor",
"source_changed"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_date_range`: An opened or published date range ends before it starts. `http_invalid_params`: The official API returned HTTP 400 for this request. `http_unauthorized`: The official public API returned HTTP 401. `http_forbidden`: The official public API returned HTTP 402 or 403. `http_conflict`: The official API returned HTTP 409, 423 or 424. `http_rate_limited`: The official API returned HTTP 429 after bounded retry handling. `http_invalid_request`: The official API returned an unexpected redirect or another unsupported HTTP client response. `queue_full`: Committees origin request queue is full. `invalid_mode_arguments`: Required mode identifier is missing or another branch argument conflicts. `invalid_cursor`: Collection or content cursor does not match this selection. `source_changed`: Selected source metadata changed during content retrieval. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"found": {
"type": "boolean",
"description": "Singular lookup result; false requires guidance."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"recordId",
"recordType",
"rootPath",
"entities"
],
"properties": {
"entities": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"id",
"sourcePath",
"kind"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Evidence ID within the written or oral namespace."
},
"kind": {
"type": "string",
"const": "WrittenEvidence",
"description": "Official source entity type."
},
"anonymous": {
"type": [
"boolean",
"null"
],
"description": "Source anonymity state."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into the selected evidence record."
},
"documentPath": {
"type": [
"string",
"null"
],
"description": "Document relationship preserving absence."
},
"hcNumberPath": {
"type": [
"string",
"null"
],
"description": "Paper relationship preserving absence."
},
"legacyPdfUrl": {
"type": [
"string",
"null"
],
"description": "Supplied legacy PDF URL."
},
"submissionId": {
"type": [
"string",
"null"
],
"description": "Source submission UUID."
},
"legacyHtmlUrl": {
"type": [
"string",
"null"
],
"description": "Supplied legacy HTML URL."
},
"witnessesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered witness pointer."
}
},
{
"type": "null"
}
],
"description": "Witness relationships preserving absence."
},
"committeesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered committee pointer."
}
},
{
"type": "null"
}
],
"description": "Committee relationships preserving absence."
},
"publicationDate": {
"type": [
"string",
"null"
],
"description": "Source publication date."
},
"internalReference": {
"type": [
"string",
"null"
],
"description": "Source submission reference."
},
"anonymousWitnessText": {
"type": [
"string",
"null"
],
"description": "Published anonymous witness text."
},
"committeeBusinessPath": {
"type": [
"string",
"null"
],
"description": "Business relationship preserving absence."
}
},
"description": "Complete WrittenEvidence metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id",
"sourcePath",
"kind"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Evidence ID within the written or oral namespace."
},
"kind": {
"type": "string",
"const": "OralEvidence",
"description": "Official source entity type."
},
"activityId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source activity identifier."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into the selected evidence record."
},
"meetingDate": {
"type": [
"string",
"null"
],
"description": "Source meeting date."
},
"documentPath": {
"type": [
"string",
"null"
],
"description": "Document relationship preserving absence."
},
"legacyPdfUrl": {
"type": [
"string",
"null"
],
"description": "Supplied legacy PDF URL."
},
"legacyHtmlUrl": {
"type": [
"string",
"null"
],
"description": "Supplied legacy HTML URL."
},
"hcNumbersPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered paper pointer."
}
},
{
"type": "null"
}
],
"description": "Paper relationships preserving absence."
},
"witnessesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered witness pointer."
}
},
{
"type": "null"
}
],
"description": "Witness relationships preserving absence."
},
"committeesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered committee pointer."
}
},
{
"type": "null"
}
],
"description": "Committee relationships preserving absence."
},
"publicationDate": {
"type": [
"string",
"null"
],
"description": "Source publication date."
},
"activityStartDate": {
"type": [
"string",
"null"
],
"description": "Source activity start datetime."
},
"committeeBusinessesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered business pointer."
}
},
{
"type": "null"
}
],
"description": "Business relationships preserving absence."
}
},
"description": "Complete OralEvidence metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id",
"kind",
"sourcePath"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Committee submitter identifier, distinct from MNIS."
},
"kind": {
"type": "string",
"const": "Submitter",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published witness name."
},
"personId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source person identifier."
},
"photoUrl": {
"type": [
"string",
"null"
],
"description": "Published witness photo URL."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into the selected evidence record."
},
"submitterType": {
"type": [
"string",
"null"
],
"description": "Source submitter type."
},
"memberInfoPath": {
"type": [
"string",
"null"
],
"description": "Member relationship preserving absence."
},
"additionalContext": {
"type": [
"string",
"null"
],
"description": "Source witness context, including HTML."
},
"organisationsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered organisation pointer."
}
},
{
"type": "null"
}
],
"description": "Organisation relationships preserving absence."
}
},
"description": "Complete Submitter metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ID of the committee."
},
"kind": {
"type": "string",
"const": "CommitteeDetails",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The current name of the committee."
},
"house": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "The end date of the committee."
},
"purpose": {
"type": [
"string",
"null"
],
"description": "Gets or sets the purpose of the committee."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "The start date of the committee."
},
"bannerPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for banner; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for contact; null/omission preserves source absence."
},
"categoryPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for category; null/omission preserves source absence."
},
"leadHousePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for leadHouse; null/omission preserves source absence."
},
"showOnWebsite": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether this committee should be shown on the website."
},
"isLeadCommittee": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether this is the lead committee, if linked to an event with multiple committees."
},
"nameHistoryPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for nameHistory; null/omission preserves source absence."
},
"websiteLegacyUrl": {
"type": [
"string",
"null"
],
"description": "The legacy website URL for the committee, if one exists."
},
"contentLinksPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for contentLinks; null/omission preserves source absence."
},
"dateLordsAppointed": {
"type": [
"string",
"null"
],
"description": "The date the committee was appointed by the House of Lords."
},
"subCommitteesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for subCommittees; null/omission preserves source absence."
},
"committeeTypesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for committeeTypes; null/omission preserves source absence."
},
"parentCommitteePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for parentCommittee; null/omission preserves source absence."
},
"dateCommonsAppointed": {
"type": [
"string",
"null"
],
"description": "The date the committee was appointed by the House of Commons."
},
"previousCommitteesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for previousCommittees; null/omission preserves source absence."
},
"scrutinisingDepartmentsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for scrutinisingDepartments; null/omission preserves source absence."
},
"websiteLegacyRedirectEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether automatic redirect to the legacy website has been enabled for the committee."
}
},
"description": "Complete CommitteeDetails metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the person."
},
"kind": {
"type": "string",
"const": "CommitteeMember",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the person."
},
"personId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the optional person ID."
},
"photoUrl": {
"type": [
"string",
"null"
],
"description": "Gets or sets the URL of the person's photo."
},
"rolesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for roles; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"isLayMember": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the member is a lay member."
},
"memberInfoPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for memberInfo; null/omission preserves source absence."
}
},
"description": "Complete CommitteeMember metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of committee business."
},
"kind": {
"type": "string",
"const": "CommitteeBusinessDetails",
"description": "Official source entity type."
},
"scope": {
"type": [
"string",
"null"
],
"description": "Gets or sets the scope of the committee business."
},
"title": {
"type": [
"string",
"null"
],
"description": "Title of committee business."
},
"openDate": {
"type": [
"string",
"null"
],
"description": "Date the business started."
},
"typePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for type; null/omission preserves source absence."
},
"closeDate": {
"type": [
"string",
"null"
],
"description": "Date the business ended."
},
"bannerPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for banner; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for contact; null/omission preserves source absence."
},
"hcNumbersPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for hcNumbers; null/omission preserves source absence."
},
"latestReportPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for latestReport; null/omission preserves source absence."
},
"relatedInformationPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for relatedInformation; null/omission preserves source absence."
},
"openSubmissionPeriodsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for openSubmissionPeriods; null/omission preserves source absence."
},
"nextOralEvidenceSessionPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for nextOralEvidenceSession; null/omission preserves source absence."
},
"closedSubmissionPeriodsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for closedSubmissionPeriods; null/omission preserves source absence."
}
},
"description": "Complete CommitteeBusinessDetails metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ID of the publication."
},
"kind": {
"type": "string",
"const": "Publication",
"description": "Official source entity type."
},
"typePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for type; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Description of publication."
},
"hlPaperPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for hlPaper; null/omission preserves source absence."
},
"hcNumberPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for hcNumber; null/omission preserves source absence."
},
"committeePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for committee; null/omission preserves source absence."
},
"documentsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for documents; null/omission preserves source absence."
},
"businessesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for businesses; null/omission preserves source absence."
},
"publicationEndDate": {
"type": [
"string",
"null"
],
"description": "Date when publication can be published until."
},
"additionalContentUrl": {
"type": [
"string",
"null"
],
"description": "URL to additional content related to the publication."
},
"publicationStartDate": {
"type": [
"string",
"null"
],
"description": "Date when publication can be published from."
},
"additionalContentUrl2": {
"type": [
"string",
"null"
],
"description": "Second URL for additional content related to the publication."
},
"governmentResponsesPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for governmentResponses; null/omission preserves source absence."
},
"responseToPublicationId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "If publication is in response to another publication, that publication's ID."
},
"respondingDepartmentPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for respondingDepartment; null/omission preserves source absence."
}
},
"description": "Complete Publication metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "ContactInformation",
"description": "Official source entity type."
},
"email": {
"type": [
"string",
"null"
],
"description": "Current contact email."
},
"phone": {
"type": [
"string",
"null"
],
"description": "Telephone number."
},
"address": {
"type": [
"string",
"null"
],
"description": "Postal address."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactDisclaimer": {
"type": [
"string",
"null"
],
"description": "Disclaimer for contact information."
}
},
"description": "Complete ContactInformation metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ID of the committee."
},
"kind": {
"type": "string",
"const": "CommitteeSummary",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The current name of the committee."
},
"house": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "The end date of the committee."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "The start date of the committee."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for contact; null/omission preserves source absence."
},
"categoryPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for category; null/omission preserves source absence."
},
"leadHousePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for leadHouse; null/omission preserves source absence."
},
"showOnWebsite": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether this committee should be shown on the website."
},
"isLeadCommittee": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether this is the lead committee, if linked to an event with multiple committees."
},
"nameHistoryPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for nameHistory; null/omission preserves source absence."
},
"websiteLegacyUrl": {
"type": [
"string",
"null"
],
"description": "The legacy website URL for the committee, if one exists."
},
"dateLordsAppointed": {
"type": [
"string",
"null"
],
"description": "The date the committee was appointed by the House of Lords."
},
"subCommitteesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for subCommittees; null/omission preserves source absence."
},
"committeeTypesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for committeeTypes; null/omission preserves source absence."
},
"parentCommitteePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for parentCommittee; null/omission preserves source absence."
},
"dateCommonsAppointed": {
"type": [
"string",
"null"
],
"description": "The date the committee was appointed by the House of Commons."
},
"scrutinisingDepartmentsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for scrutinisingDepartments; null/omission preserves source absence."
},
"websiteLegacyRedirectEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether automatic redirect to the legacy website has been enabled for the committee."
}
},
"description": "Complete CommitteeSummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "LeadHouse",
"description": "Official source entity type."
},
"isLords": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the lead house is the House of Lords."
},
"isCommons": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the lead house is the House of Commons."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete LeadHouse metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the committee category."
},
"kind": {
"type": "string",
"const": "CommitteeCategory",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the committee category."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete CommitteeCategory metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the committee type."
},
"kind": {
"type": "string",
"const": "CommitteeType",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the committee type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"committeeCategoryPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for committeeCategory; null/omission preserves source absence."
}
},
"description": "Complete CommitteeType metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "ScrutinisingDepartment",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the department which this committee scrutinises."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"departmentId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "The Id of the department which this committee scrutinises."
}
},
"description": "Complete ScrutinisingDepartment metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the committee name."
},
"kind": {
"type": "string",
"const": "CommitteeName",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the committee."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Gets or sets the end date of the committee, if applicable."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Gets or sets the start date of the committee."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"committeeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the unique identifier for the committee."
}
},
"description": "Complete CommitteeName metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "Banner",
"description": "Official source entity type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"mobileBannerPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for mobileBanner; null/omission preserves source absence."
},
"desktopBannerPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for desktopBanner; null/omission preserves source absence."
}
},
"description": "Complete Banner metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "URL of the content link."
},
"kind": {
"type": "string",
"const": "ContentLink",
"description": "Official source entity type."
},
"title": {
"type": [
"string",
"null"
],
"description": "Title of the content link."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Description of the content link."
},
"displayOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Order to display the content link."
}
},
"description": "Complete ContentLink metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"mnisId"
],
"properties": {
"kind": {
"type": "string",
"const": "MemberInfo",
"description": "Official source entity type."
},
"house": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"party": {
"type": [
"string",
"null"
],
"description": "Gets or sets the political party of the member."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the member as listed."
},
"mnisId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the member in the MNIS system."
},
"isChair": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the member is a chairperson."
},
"addressAs": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name to address the member as."
},
"displayAs": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the member for display purposes."
},
"fullTitle": {
"type": [
"string",
"null"
],
"description": "Gets or sets the full title of the member."
},
"isCurrent": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the member is currently active."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Gets or sets the location the member represents."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Gets or sets the color associated with the member's party."
}
},
"description": "Complete MemberInfo metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "CommitteeMemberRole",
"description": "Official source entity type."
},
"coOpted": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the committee member is co-opted."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Gets or sets the end date of the committee member's role. Null if the role is ongoing."
},
"rolePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for role; null/omission preserves source absence."
},
"alternate": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the committee member is an alternate."
},
"exOfficio": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the committee member holds an ex officio position."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Gets or sets the start date of the committee member's role."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete CommitteeMemberRole metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the business type."
},
"kind": {
"type": "string",
"const": "CommitteeBusinessType",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the business type."
},
"isInquiry": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the business is an inquiry."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Gets or sets the description of the business type."
}
},
"description": "Complete CommitteeBusinessType metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ID of the publication."
},
"kind": {
"type": "string",
"const": "PublicationSummary",
"description": "Official source entity type."
},
"typePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for type; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Description of publication."
},
"hlPaperPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for hlPaper; null/omission preserves source absence."
},
"hcNumberPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for hcNumber; null/omission preserves source absence."
},
"documentsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for documents; null/omission preserves source absence."
},
"publicationEndDate": {
"type": [
"string",
"null"
],
"description": "Date when publication can be published until."
},
"additionalContentUrl": {
"type": [
"string",
"null"
],
"description": "URL to additional content related to the publication."
},
"publicationStartDate": {
"type": [
"string",
"null"
],
"description": "Date when publication can be published from."
},
"additionalContentUrl2": {
"type": [
"string",
"null"
],
"description": "Second URL for additional content related to the publication."
},
"governmentResponsesPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for governmentResponses; null/omission preserves source absence."
},
"responseToPublicationId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "If publication is in response to another publication, that publication's ID."
},
"respondingDepartmentPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for respondingDepartment; null/omission preserves source absence."
}
},
"description": "Complete PublicationSummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the submission period."
},
"kind": {
"type": "string",
"const": "SubmissionPeriodSummary",
"description": "Official source entity type."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Submission period end date."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Submission period start date."
},
"isPromoted": {
"type": [
"boolean",
"null"
],
"description": "Whether the submission period should be promoted or not."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"statusMessage": {
"type": [
"string",
"null"
],
"description": "The status message of the submission period (if applicable)."
},
"submissionType": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"allowSubmissionsPastEndDate": {
"type": [
"boolean",
"null"
],
"description": "Whether submissions are allowed past the deadline if the form is accessed via direct link."
}
},
"description": "Complete SubmissionPeriodSummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The id of the activity."
},
"kind": {
"type": "string",
"const": "ActivitySummary",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the activity."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "The datetime the activity ends."
},
"eventId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "The id of the event this activity is attached to."
},
"isPrivate": {
"type": [
"boolean",
"null"
],
"description": "Whether an activity is private or public."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "The datetime the activity starts."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"activityType": {
"type": [
"string",
"null"
],
"description": "Type of activity."
},
"attendeesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for attendees; null/omission preserves source absence."
}
},
"description": "Complete ActivitySummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Gets or sets the URL of the link."
},
"kind": {
"type": "string",
"const": "Links",
"description": "Official source entity type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Gets or sets the description of the link."
}
},
"description": "Complete Links metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "HouseNumber",
"description": "Official source entity type."
},
"number": {
"type": [
"string",
"null"
],
"description": "Gets or sets the house number."
},
"sessionId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the session ID associated with the house number."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"sessionDescription": {
"type": [
"string",
"null"
],
"description": "Gets or sets the description of the session associated with the house number."
}
},
"description": "Complete HouseNumber metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "GovernmentResponse",
"description": "Official source entity type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"publicationPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for publication; null/omission preserves source absence."
},
"responseDeadline": {
"type": [
"string",
"null"
],
"description": "Gets or sets the deadline for the government response."
},
"responseExcepted": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the response is expected."
}
},
"description": "Complete GovernmentResponse metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"documentId"
],
"properties": {
"kind": {
"type": "string",
"const": "Document",
"description": "Official source entity type."
},
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the document."
},
"filesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for files; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete Document metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The id of the publication type."
},
"kind": {
"type": "string",
"const": "PublicationType",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the publication type."
},
"iconKey": {
"type": [
"string",
"null"
],
"description": "Icon type to be rendered on the website for this type of publication."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "The description of the publication type."
},
"canBeResponse": {
"type": [
"boolean",
"null"
],
"description": "Indicates that publications of this type can be responses to other publications."
},
"pluralVersion": {
"type": [
"string",
"null"
],
"description": "Plural form of the publication type name."
},
"governmentCanRespond": {
"type": [
"boolean",
"null"
],
"description": "Indicates that the government can respond to this type of publication."
}
},
"description": "Complete PublicationType metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the department."
},
"url": {
"type": [
"string",
"null"
],
"description": "Gets or sets the website URL of the department."
},
"kind": {
"type": "string",
"const": "Department",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the department."
},
"email": {
"type": [
"string",
"null"
],
"description": "Gets or sets the email address of the department."
},
"phone": {
"type": [
"string",
"null"
],
"description": "Gets or sets the phone number of the department."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"addressPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for address; null/omission preserves source absence."
},
"otherAddress": {
"type": [
"string",
"null"
],
"description": "Gets or sets an alternative address for the department."
}
},
"description": "Complete Department metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of committee business."
},
"kind": {
"type": "string",
"const": "CommitteeBusinessSummary",
"description": "Official source entity type."
},
"title": {
"type": [
"string",
"null"
],
"description": "Title of committee business."
},
"openDate": {
"type": [
"string",
"null"
],
"description": "Date the business started."
},
"typePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for type; null/omission preserves source absence."
},
"closeDate": {
"type": [
"string",
"null"
],
"description": "Date the business ended."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for contact; null/omission preserves source absence."
},
"latestReportPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for latestReport; null/omission preserves source absence."
},
"openSubmissionPeriodsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for openSubmissionPeriods; null/omission preserves source absence."
},
"nextOralEvidenceSessionPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for nextOralEvidenceSession; null/omission preserves source absence."
},
"closedSubmissionPeriodsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for closedSubmissionPeriods; null/omission preserves source absence."
}
},
"description": "Complete CommitteeBusinessSummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "File",
"description": "Official source entity type."
},
"fileData": {
"type": [
"string",
"null"
],
"description": "Gets or sets the binary data of the file."
},
"fileName": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the file."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete File metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The id of the role."
},
"kind": {
"type": "string",
"const": "Role",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the role."
},
"isChair": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the role is a chair."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"roleTypePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for roleType; null/omission preserves source absence."
}
},
"description": "Complete Role metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the person."
},
"kind": {
"type": "string",
"const": "ActivityPerson",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the person."
},
"personId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the optional person ID."
},
"photoUrl": {
"type": [
"string",
"null"
],
"description": "Gets or sets the URL of the person's photo."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"displayOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the display order of the person in the activity."
},
"submitterType": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"memberInfoPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for memberInfo; null/omission preserves source absence."
},
"additionalContext": {
"type": [
"string",
"null"
],
"description": "Gets or sets additional context information about the submitter."
},
"organisationsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for organisations; null/omission preserves source absence."
}
},
"description": "Complete ActivityPerson metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Gets or sets the URL where the file can be accessed."
},
"kind": {
"type": "string",
"const": "DocumentFile",
"description": "Official source entity type."
},
"format": {
"type": [
"string",
"null"
],
"description": "Gets or sets the format of the file."
},
"fileName": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the file."
},
"fileSize": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the size of the file in bytes. Nullable if the size is unknown."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"fileDataFormat": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"documentPurposePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for documentPurpose; null/omission preserves source absence."
}
},
"description": "Complete DocumentFile metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "Address",
"description": "Official source entity type."
},
"postcode": {
"type": [
"string",
"null"
],
"description": "Gets or sets the postcode of the address."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"addressLine1": {
"type": [
"string",
"null"
],
"description": "Gets or sets the first line of the address."
},
"addressLine2": {
"type": [
"string",
"null"
],
"description": "Gets or sets the second line of the address."
},
"addressLine3": {
"type": [
"string",
"null"
],
"description": "Gets or sets the third line of the address."
},
"addressLine4": {
"type": [
"string",
"null"
],
"description": "Gets or sets the fourth line of the address."
},
"addressLine5": {
"type": [
"string",
"null"
],
"description": "Gets or sets the fifth line of the address."
}
},
"description": "Complete Address metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The id of the role type."
},
"kind": {
"type": "string",
"const": "RoleType",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the role type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete RoleType metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "Organisation",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the organization."
},
"role": {
"type": [
"string",
"null"
],
"description": "Gets or sets the role of the organization."
},
"cisId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the CIS identifier for the organization."
},
"idmsId": {
"type": [
"string",
"null"
],
"description": "Gets or sets the IDMS identifier for the organization."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete Organisation metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the document purpose."
},
"kind": {
"type": "string",
"const": "DocumentPurpose",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the document purpose."
},
"label": {
"type": [
"string",
"null"
],
"description": "Gets or sets the label of the document purpose."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the sort order for the document purpose."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Gets or sets the description of the document purpose."
}
},
"description": "Complete DocumentPurpose metadata and source-path relationships.",
"additionalProperties": false
}
],
"description": "Complete typed entity with source pointer relationships."
},
"description": "All source entities in preorder; reconstruct references by sourcePath."
},
"memberId": {
"type": "string",
"description": "Members API join ID from memberInfo.mnisId only, never personId."
},
"recordId": {
"type": "string",
"description": "Selected source ID; namespace is identified by recordType."
},
"rootPath": {
"type": "string",
"const": "",
"description": "Root entity source pointer."
},
"recordType": {
"enum": [
"committee",
"membership",
"business",
"publication",
"written_evidence",
"oral_evidence"
],
"type": "string",
"description": "Selected source record namespace."
}
},
"description": "Whole source record.",
"additionalProperties": false
},
"description": "Selected whole collection items."
},
"shown": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Actually emitted whole collection records."
},
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source total collection records."
},
"notice": {
"type": "string",
"description": "Licence, namespace, business and document-access notices."
},
"record": {
"type": "object",
"required": [
"recordId",
"recordType",
"rootPath",
"entities"
],
"properties": {
"entities": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"id",
"sourcePath",
"kind"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Evidence ID within the written or oral namespace."
},
"kind": {
"type": "string",
"const": "WrittenEvidence",
"description": "Official source entity type."
},
"anonymous": {
"type": [
"boolean",
"null"
],
"description": "Source anonymity state."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into the selected evidence record."
},
"documentPath": {
"type": [
"string",
"null"
],
"description": "Document relationship preserving absence."
},
"hcNumberPath": {
"type": [
"string",
"null"
],
"description": "Paper relationship preserving absence."
},
"legacyPdfUrl": {
"type": [
"string",
"null"
],
"description": "Supplied legacy PDF URL."
},
"submissionId": {
"type": [
"string",
"null"
],
"description": "Source submission UUID."
},
"legacyHtmlUrl": {
"type": [
"string",
"null"
],
"description": "Supplied legacy HTML URL."
},
"witnessesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered witness pointer."
}
},
{
"type": "null"
}
],
"description": "Witness relationships preserving absence."
},
"committeesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered committee pointer."
}
},
{
"type": "null"
}
],
"description": "Committee relationships preserving absence."
},
"publicationDate": {
"type": [
"string",
"null"
],
"description": "Source publication date."
},
"internalReference": {
"type": [
"string",
"null"
],
"description": "Source submission reference."
},
"anonymousWitnessText": {
"type": [
"string",
"null"
],
"description": "Published anonymous witness text."
},
"committeeBusinessPath": {
"type": [
"string",
"null"
],
"description": "Business relationship preserving absence."
}
},
"description": "Complete WrittenEvidence metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id",
"sourcePath",
"kind"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Evidence ID within the written or oral namespace."
},
"kind": {
"type": "string",
"const": "OralEvidence",
"description": "Official source entity type."
},
"activityId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source activity identifier."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into the selected evidence record."
},
"meetingDate": {
"type": [
"string",
"null"
],
"description": "Source meeting date."
},
"documentPath": {
"type": [
"string",
"null"
],
"description": "Document relationship preserving absence."
},
"legacyPdfUrl": {
"type": [
"string",
"null"
],
"description": "Supplied legacy PDF URL."
},
"legacyHtmlUrl": {
"type": [
"string",
"null"
],
"description": "Supplied legacy HTML URL."
},
"hcNumbersPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered paper pointer."
}
},
{
"type": "null"
}
],
"description": "Paper relationships preserving absence."
},
"witnessesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered witness pointer."
}
},
{
"type": "null"
}
],
"description": "Witness relationships preserving absence."
},
"committeesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered committee pointer."
}
},
{
"type": "null"
}
],
"description": "Committee relationships preserving absence."
},
"publicationDate": {
"type": [
"string",
"null"
],
"description": "Source publication date."
},
"activityStartDate": {
"type": [
"string",
"null"
],
"description": "Source activity start datetime."
},
"committeeBusinessesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered business pointer."
}
},
{
"type": "null"
}
],
"description": "Business relationships preserving absence."
}
},
"description": "Complete OralEvidence metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"id",
"kind",
"sourcePath"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Committee submitter identifier, distinct from MNIS."
},
"kind": {
"type": "string",
"const": "Submitter",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Published witness name."
},
"personId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Source person identifier."
},
"photoUrl": {
"type": [
"string",
"null"
],
"description": "Published witness photo URL."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into the selected evidence record."
},
"submitterType": {
"type": [
"string",
"null"
],
"description": "Source submitter type."
},
"memberInfoPath": {
"type": [
"string",
"null"
],
"description": "Member relationship preserving absence."
},
"additionalContext": {
"type": [
"string",
"null"
],
"description": "Source witness context, including HTML."
},
"organisationsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered organisation pointer."
}
},
{
"type": "null"
}
],
"description": "Organisation relationships preserving absence."
}
},
"description": "Complete Submitter metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ID of the committee."
},
"kind": {
"type": "string",
"const": "CommitteeDetails",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The current name of the committee."
},
"house": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "The end date of the committee."
},
"purpose": {
"type": [
"string",
"null"
],
"description": "Gets or sets the purpose of the committee."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "The start date of the committee."
},
"bannerPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for banner; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for contact; null/omission preserves source absence."
},
"categoryPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for category; null/omission preserves source absence."
},
"leadHousePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for leadHouse; null/omission preserves source absence."
},
"showOnWebsite": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether this committee should be shown on the website."
},
"isLeadCommittee": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether this is the lead committee, if linked to an event with multiple committees."
},
"nameHistoryPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for nameHistory; null/omission preserves source absence."
},
"websiteLegacyUrl": {
"type": [
"string",
"null"
],
"description": "The legacy website URL for the committee, if one exists."
},
"contentLinksPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for contentLinks; null/omission preserves source absence."
},
"dateLordsAppointed": {
"type": [
"string",
"null"
],
"description": "The date the committee was appointed by the House of Lords."
},
"subCommitteesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for subCommittees; null/omission preserves source absence."
},
"committeeTypesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for committeeTypes; null/omission preserves source absence."
},
"parentCommitteePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for parentCommittee; null/omission preserves source absence."
},
"dateCommonsAppointed": {
"type": [
"string",
"null"
],
"description": "The date the committee was appointed by the House of Commons."
},
"previousCommitteesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for previousCommittees; null/omission preserves source absence."
},
"scrutinisingDepartmentsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for scrutinisingDepartments; null/omission preserves source absence."
},
"websiteLegacyRedirectEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether automatic redirect to the legacy website has been enabled for the committee."
}
},
"description": "Complete CommitteeDetails metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the person."
},
"kind": {
"type": "string",
"const": "CommitteeMember",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the person."
},
"personId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the optional person ID."
},
"photoUrl": {
"type": [
"string",
"null"
],
"description": "Gets or sets the URL of the person's photo."
},
"rolesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for roles; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"isLayMember": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the member is a lay member."
},
"memberInfoPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for memberInfo; null/omission preserves source absence."
}
},
"description": "Complete CommitteeMember metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of committee business."
},
"kind": {
"type": "string",
"const": "CommitteeBusinessDetails",
"description": "Official source entity type."
},
"scope": {
"type": [
"string",
"null"
],
"description": "Gets or sets the scope of the committee business."
},
"title": {
"type": [
"string",
"null"
],
"description": "Title of committee business."
},
"openDate": {
"type": [
"string",
"null"
],
"description": "Date the business started."
},
"typePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for type; null/omission preserves source absence."
},
"closeDate": {
"type": [
"string",
"null"
],
"description": "Date the business ended."
},
"bannerPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for banner; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for contact; null/omission preserves source absence."
},
"hcNumbersPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for hcNumbers; null/omission preserves source absence."
},
"latestReportPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for latestReport; null/omission preserves source absence."
},
"relatedInformationPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for relatedInformation; null/omission preserves source absence."
},
"openSubmissionPeriodsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for openSubmissionPeriods; null/omission preserves source absence."
},
"nextOralEvidenceSessionPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for nextOralEvidenceSession; null/omission preserves source absence."
},
"closedSubmissionPeriodsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for closedSubmissionPeriods; null/omission preserves source absence."
}
},
"description": "Complete CommitteeBusinessDetails metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ID of the publication."
},
"kind": {
"type": "string",
"const": "Publication",
"description": "Official source entity type."
},
"typePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for type; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Description of publication."
},
"hlPaperPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for hlPaper; null/omission preserves source absence."
},
"hcNumberPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for hcNumber; null/omission preserves source absence."
},
"committeePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for committee; null/omission preserves source absence."
},
"documentsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for documents; null/omission preserves source absence."
},
"businessesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for businesses; null/omission preserves source absence."
},
"publicationEndDate": {
"type": [
"string",
"null"
],
"description": "Date when publication can be published until."
},
"additionalContentUrl": {
"type": [
"string",
"null"
],
"description": "URL to additional content related to the publication."
},
"publicationStartDate": {
"type": [
"string",
"null"
],
"description": "Date when publication can be published from."
},
"additionalContentUrl2": {
"type": [
"string",
"null"
],
"description": "Second URL for additional content related to the publication."
},
"governmentResponsesPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for governmentResponses; null/omission preserves source absence."
},
"responseToPublicationId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "If publication is in response to another publication, that publication's ID."
},
"respondingDepartmentPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for respondingDepartment; null/omission preserves source absence."
}
},
"description": "Complete Publication metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "ContactInformation",
"description": "Official source entity type."
},
"email": {
"type": [
"string",
"null"
],
"description": "Current contact email."
},
"phone": {
"type": [
"string",
"null"
],
"description": "Telephone number."
},
"address": {
"type": [
"string",
"null"
],
"description": "Postal address."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactDisclaimer": {
"type": [
"string",
"null"
],
"description": "Disclaimer for contact information."
}
},
"description": "Complete ContactInformation metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ID of the committee."
},
"kind": {
"type": "string",
"const": "CommitteeSummary",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The current name of the committee."
},
"house": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "The end date of the committee."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "The start date of the committee."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for contact; null/omission preserves source absence."
},
"categoryPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for category; null/omission preserves source absence."
},
"leadHousePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for leadHouse; null/omission preserves source absence."
},
"showOnWebsite": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether this committee should be shown on the website."
},
"isLeadCommittee": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether this is the lead committee, if linked to an event with multiple committees."
},
"nameHistoryPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for nameHistory; null/omission preserves source absence."
},
"websiteLegacyUrl": {
"type": [
"string",
"null"
],
"description": "The legacy website URL for the committee, if one exists."
},
"dateLordsAppointed": {
"type": [
"string",
"null"
],
"description": "The date the committee was appointed by the House of Lords."
},
"subCommitteesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for subCommittees; null/omission preserves source absence."
},
"committeeTypesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for committeeTypes; null/omission preserves source absence."
},
"parentCommitteePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for parentCommittee; null/omission preserves source absence."
},
"dateCommonsAppointed": {
"type": [
"string",
"null"
],
"description": "The date the committee was appointed by the House of Commons."
},
"scrutinisingDepartmentsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for scrutinisingDepartments; null/omission preserves source absence."
},
"websiteLegacyRedirectEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether automatic redirect to the legacy website has been enabled for the committee."
}
},
"description": "Complete CommitteeSummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "LeadHouse",
"description": "Official source entity type."
},
"isLords": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the lead house is the House of Lords."
},
"isCommons": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the lead house is the House of Commons."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete LeadHouse metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the committee category."
},
"kind": {
"type": "string",
"const": "CommitteeCategory",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the committee category."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete CommitteeCategory metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the committee type."
},
"kind": {
"type": "string",
"const": "CommitteeType",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the committee type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"committeeCategoryPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for committeeCategory; null/omission preserves source absence."
}
},
"description": "Complete CommitteeType metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "ScrutinisingDepartment",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the department which this committee scrutinises."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"departmentId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "The Id of the department which this committee scrutinises."
}
},
"description": "Complete ScrutinisingDepartment metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the committee name."
},
"kind": {
"type": "string",
"const": "CommitteeName",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the committee."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Gets or sets the end date of the committee, if applicable."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Gets or sets the start date of the committee."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"committeeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the unique identifier for the committee."
}
},
"description": "Complete CommitteeName metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "Banner",
"description": "Official source entity type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"mobileBannerPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for mobileBanner; null/omission preserves source absence."
},
"desktopBannerPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for desktopBanner; null/omission preserves source absence."
}
},
"description": "Complete Banner metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "URL of the content link."
},
"kind": {
"type": "string",
"const": "ContentLink",
"description": "Official source entity type."
},
"title": {
"type": [
"string",
"null"
],
"description": "Title of the content link."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Description of the content link."
},
"displayOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Order to display the content link."
}
},
"description": "Complete ContentLink metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"mnisId"
],
"properties": {
"kind": {
"type": "string",
"const": "MemberInfo",
"description": "Official source entity type."
},
"house": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"party": {
"type": [
"string",
"null"
],
"description": "Gets or sets the political party of the member."
},
"listAs": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the member as listed."
},
"mnisId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the member in the MNIS system."
},
"isChair": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the member is a chairperson."
},
"addressAs": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name to address the member as."
},
"displayAs": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the member for display purposes."
},
"fullTitle": {
"type": [
"string",
"null"
],
"description": "Gets or sets the full title of the member."
},
"isCurrent": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the member is currently active."
},
"memberFrom": {
"type": [
"string",
"null"
],
"description": "Gets or sets the location the member represents."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"partyColour": {
"type": [
"string",
"null"
],
"description": "Gets or sets the color associated with the member's party."
}
},
"description": "Complete MemberInfo metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "CommitteeMemberRole",
"description": "Official source entity type."
},
"coOpted": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the committee member is co-opted."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Gets or sets the end date of the committee member's role. Null if the role is ongoing."
},
"rolePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for role; null/omission preserves source absence."
},
"alternate": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the committee member is an alternate."
},
"exOfficio": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the committee member holds an ex officio position."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Gets or sets the start date of the committee member's role."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete CommitteeMemberRole metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the business type."
},
"kind": {
"type": "string",
"const": "CommitteeBusinessType",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the business type."
},
"isInquiry": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the business is an inquiry."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Gets or sets the description of the business type."
}
},
"description": "Complete CommitteeBusinessType metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ID of the publication."
},
"kind": {
"type": "string",
"const": "PublicationSummary",
"description": "Official source entity type."
},
"typePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for type; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Description of publication."
},
"hlPaperPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for hlPaper; null/omission preserves source absence."
},
"hcNumberPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for hcNumber; null/omission preserves source absence."
},
"documentsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for documents; null/omission preserves source absence."
},
"publicationEndDate": {
"type": [
"string",
"null"
],
"description": "Date when publication can be published until."
},
"additionalContentUrl": {
"type": [
"string",
"null"
],
"description": "URL to additional content related to the publication."
},
"publicationStartDate": {
"type": [
"string",
"null"
],
"description": "Date when publication can be published from."
},
"additionalContentUrl2": {
"type": [
"string",
"null"
],
"description": "Second URL for additional content related to the publication."
},
"governmentResponsesPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for governmentResponses; null/omission preserves source absence."
},
"responseToPublicationId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "If publication is in response to another publication, that publication's ID."
},
"respondingDepartmentPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for respondingDepartment; null/omission preserves source absence."
}
},
"description": "Complete PublicationSummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the submission period."
},
"kind": {
"type": "string",
"const": "SubmissionPeriodSummary",
"description": "Official source entity type."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "Submission period end date."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Submission period start date."
},
"isPromoted": {
"type": [
"boolean",
"null"
],
"description": "Whether the submission period should be promoted or not."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"statusMessage": {
"type": [
"string",
"null"
],
"description": "The status message of the submission period (if applicable)."
},
"submissionType": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"allowSubmissionsPastEndDate": {
"type": [
"boolean",
"null"
],
"description": "Whether submissions are allowed past the deadline if the form is accessed via direct link."
}
},
"description": "Complete SubmissionPeriodSummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The id of the activity."
},
"kind": {
"type": "string",
"const": "ActivitySummary",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the activity."
},
"endDate": {
"type": [
"string",
"null"
],
"description": "The datetime the activity ends."
},
"eventId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "The id of the event this activity is attached to."
},
"isPrivate": {
"type": [
"boolean",
"null"
],
"description": "Whether an activity is private or public."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "The datetime the activity starts."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"activityType": {
"type": [
"string",
"null"
],
"description": "Type of activity."
},
"attendeesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for attendees; null/omission preserves source absence."
}
},
"description": "Complete ActivitySummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Gets or sets the URL of the link."
},
"kind": {
"type": "string",
"const": "Links",
"description": "Official source entity type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Gets or sets the description of the link."
}
},
"description": "Complete Links metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "HouseNumber",
"description": "Official source entity type."
},
"number": {
"type": [
"string",
"null"
],
"description": "Gets or sets the house number."
},
"sessionId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the session ID associated with the house number."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"sessionDescription": {
"type": [
"string",
"null"
],
"description": "Gets or sets the description of the session associated with the house number."
}
},
"description": "Complete HouseNumber metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "GovernmentResponse",
"description": "Official source entity type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"publicationPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for publication; null/omission preserves source absence."
},
"responseDeadline": {
"type": [
"string",
"null"
],
"description": "Gets or sets the deadline for the government response."
},
"responseExcepted": {
"type": [
"boolean",
"null"
],
"description": "Gets or sets a value indicating whether the response is expected."
}
},
"description": "Complete GovernmentResponse metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"documentId"
],
"properties": {
"kind": {
"type": "string",
"const": "Document",
"description": "Official source entity type."
},
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the document."
},
"filesPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for files; null/omission preserves source absence."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete Document metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The id of the publication type."
},
"kind": {
"type": "string",
"const": "PublicationType",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the publication type."
},
"iconKey": {
"type": [
"string",
"null"
],
"description": "Icon type to be rendered on the website for this type of publication."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "The description of the publication type."
},
"canBeResponse": {
"type": [
"boolean",
"null"
],
"description": "Indicates that publications of this type can be responses to other publications."
},
"pluralVersion": {
"type": [
"string",
"null"
],
"description": "Plural form of the publication type name."
},
"governmentCanRespond": {
"type": [
"boolean",
"null"
],
"description": "Indicates that the government can respond to this type of publication."
}
},
"description": "Complete PublicationType metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the department."
},
"url": {
"type": [
"string",
"null"
],
"description": "Gets or sets the website URL of the department."
},
"kind": {
"type": "string",
"const": "Department",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the department."
},
"email": {
"type": [
"string",
"null"
],
"description": "Gets or sets the email address of the department."
},
"phone": {
"type": [
"string",
"null"
],
"description": "Gets or sets the phone number of the department."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"addressPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for address; null/omission preserves source absence."
},
"otherAddress": {
"type": [
"string",
"null"
],
"description": "Gets or sets an alternative address for the department."
}
},
"description": "Complete Department metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of committee business."
},
"kind": {
"type": "string",
"const": "CommitteeBusinessSummary",
"description": "Official source entity type."
},
"title": {
"type": [
"string",
"null"
],
"description": "Title of committee business."
},
"openDate": {
"type": [
"string",
"null"
],
"description": "Date the business started."
},
"typePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for type; null/omission preserves source absence."
},
"closeDate": {
"type": [
"string",
"null"
],
"description": "Date the business ended."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"contactPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for contact; null/omission preserves source absence."
},
"latestReportPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for latestReport; null/omission preserves source absence."
},
"openSubmissionPeriodsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for openSubmissionPeriods; null/omission preserves source absence."
},
"nextOralEvidenceSessionPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for nextOralEvidenceSession; null/omission preserves source absence."
},
"closedSubmissionPeriodsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for closedSubmissionPeriods; null/omission preserves source absence."
}
},
"description": "Complete CommitteeBusinessSummary metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "File",
"description": "Official source entity type."
},
"fileData": {
"type": [
"string",
"null"
],
"description": "Gets or sets the binary data of the file."
},
"fileName": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the file."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete File metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The id of the role."
},
"kind": {
"type": "string",
"const": "Role",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the role."
},
"isChair": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether the role is a chair."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"roleTypePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for roleType; null/omission preserves source absence."
}
},
"description": "Complete Role metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the person."
},
"kind": {
"type": "string",
"const": "ActivityPerson",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the person."
},
"personId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the optional person ID."
},
"photoUrl": {
"type": [
"string",
"null"
],
"description": "Gets or sets the URL of the person's photo."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"displayOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the display order of the person in the activity."
},
"submitterType": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"memberInfoPath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for memberInfo; null/omission preserves source absence."
},
"additionalContext": {
"type": [
"string",
"null"
],
"description": "Gets or sets additional context information about the submitter."
},
"organisationsPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Ordered child source pointer."
}
},
{
"type": "null"
}
],
"description": "Source pointer relationship for organisations; null/omission preserves source absence."
}
},
"description": "Complete ActivityPerson metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Gets or sets the URL where the file can be accessed."
},
"kind": {
"type": "string",
"const": "DocumentFile",
"description": "Official source entity type."
},
"format": {
"type": [
"string",
"null"
],
"description": "Gets or sets the format of the file."
},
"fileName": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the file."
},
"fileSize": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the size of the file in bytes. Nullable if the size is unknown."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"fileDataFormat": {
"type": [
"string",
"null"
],
"description": "Published source value; null or omission preserves absence."
},
"documentPurposePath": {
"type": [
"string",
"null"
],
"description": "Source pointer relationship for documentPurpose; null/omission preserves source absence."
}
},
"description": "Complete DocumentFile metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "Address",
"description": "Official source entity type."
},
"postcode": {
"type": [
"string",
"null"
],
"description": "Gets or sets the postcode of the address."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"addressLine1": {
"type": [
"string",
"null"
],
"description": "Gets or sets the first line of the address."
},
"addressLine2": {
"type": [
"string",
"null"
],
"description": "Gets or sets the second line of the address."
},
"addressLine3": {
"type": [
"string",
"null"
],
"description": "Gets or sets the third line of the address."
},
"addressLine4": {
"type": [
"string",
"null"
],
"description": "Gets or sets the fourth line of the address."
},
"addressLine5": {
"type": [
"string",
"null"
],
"description": "Gets or sets the fifth line of the address."
}
},
"description": "Complete Address metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The id of the role type."
},
"kind": {
"type": "string",
"const": "RoleType",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "The name of the role type."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete RoleType metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath"
],
"properties": {
"kind": {
"type": "string",
"const": "Organisation",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the organization."
},
"role": {
"type": [
"string",
"null"
],
"description": "Gets or sets the role of the organization."
},
"cisId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the CIS identifier for the organization."
},
"idmsId": {
"type": [
"string",
"null"
],
"description": "Gets or sets the IDMS identifier for the organization."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
}
},
"description": "Complete Organisation metadata and source-path relationships.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"sourcePath",
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Gets or sets the unique identifier for the document purpose."
},
"kind": {
"type": "string",
"const": "DocumentPurpose",
"description": "Official source entity type."
},
"name": {
"type": [
"string",
"null"
],
"description": "Gets or sets the name of the document purpose."
},
"label": {
"type": [
"string",
"null"
],
"description": "Gets or sets the label of the document purpose."
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Gets or sets the sort order for the document purpose."
},
"sourcePath": {
"type": "string",
"description": "Exact JSON pointer into this whole selected source record."
},
"description": {
"type": [
"string",
"null"
],
"description": "Gets or sets the description of the document purpose."
}
},
"description": "Complete DocumentPurpose metadata and source-path relationships.",
"additionalProperties": false
}
],
"description": "Complete typed entity with source pointer relationships."
},
"description": "All source entities in preorder; reconstruct references by sourcePath."
},
"memberId": {
"type": "string",
"description": "Members API join ID from memberInfo.mnisId only, never personId."
},
"recordId": {
"type": "string",
"description": "Selected source ID; namespace is identified by recordType."
},
"rootPath": {
"type": "string",
"const": "",
"description": "Root entity source pointer."
},
"recordType": {
"enum": [
"committee",
"membership",
"business",
"publication",
"written_evidence",
"oral_evidence"
],
"type": "string",
"description": "Selected source record namespace."
}
},
"description": "Complete selected source record with typed relationship pointers.",
"additionalProperties": false
},
"source": {
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Actual selected official request provenance.",
"additionalProperties": false
},
"applied": {
"type": "object",
"required": [
"mode",
"source",
"filters",
"showOnWebsiteOnly"
],
"properties": {
"mode": {
"enum": [
"search",
"detail",
"members",
"inquiries",
"inquiry",
"publications",
"publication",
"evidence",
"evidence_detail"
],
"type": "string",
"description": "Selected committee operation."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Effective collection page size; absent on singular selections."
},
"source": {
"type": "string",
"const": "committees",
"description": "Official Committees API namespace."
},
"filters": {
"type": "string",
"const": "/filters",
"description": "Complete normalized selection lives at /filters."
},
"membershipStatus": {
"enum": [
"All",
"Current",
"Former"
],
"type": "string",
"description": "Exact upstream MembershipStatus in members mode."
},
"showOnWebsiteOnly": {
"type": "boolean",
"const": true,
"description": "Explicit website-visible scope on every request."
}
},
"description": "Effective operation, page size and explicit source visibility.",
"additionalProperties": false
},
"filters": {
"type": "object",
"properties": {
"house": {
"enum": [
"commons",
"lords",
"joint"
],
"type": "string",
"description": "Selected search House; Joint remains distinct."
},
"query": {
"type": "string",
"description": "Normalized source search terms."
},
"status": {
"anyOf": [
{
"enum": [
"Current",
"Former",
"All"
],
"type": "string"
},
{
"enum": [
"Open",
"Closed"
],
"type": "string"
}
],
"description": "Search: Current|Former|All. Inquiries: Open|Closed. Omitted uses source default."
},
"openedTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inquiries opened on/before this ISO date."
},
"sortOrder": {
"anyOf": [
{
"enum": [
"DateOpenedNewest",
"DateOpenedOldest",
"PublicationDateAscending",
"PublicationDateDescending"
],
"type": "string"
},
{
"enum": [
"PublicationDateAscending",
"PublicationDateDescending",
"ResponseDateAscending",
"ResponseDateDescending"
],
"type": "string"
}
],
"description": "Inquiries: DateOpenedNewest|DateOpenedOldest|PublicationDateAscending|PublicationDateDescending. Publications: PublicationDateAscending|PublicationDateDescending|ResponseDateAscending|ResponseDateDescending. Omitted preserves source order."
},
"businessId": {
"type": "string",
"description": "Selected committee-business namespace ID."
},
"evidenceId": {
"type": "string",
"description": "Selected evidence namespace ID."
},
"membership": {
"enum": [
"all",
"current",
"former"
],
"type": "string",
"description": "Membership-period selector, default all in members mode."
},
"openedFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inquiries opened on/after this ISO date."
},
"committeeId": {
"type": "string",
"description": "Selected committee namespace ID."
},
"publishedTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Publications starting on/before this ISO date."
},
"evidenceType": {
"enum": [
"written",
"oral"
],
"type": "string",
"description": "Selected evidence namespace."
},
"publicationId": {
"type": "string",
"description": "Selected publication namespace ID."
},
"publishedFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Publications starting on/after this ISO date."
},
"acceptingEvidence": {
"type": "boolean",
"description": "Inquiries only: true selects accepting businesses; false leaves source selection unrestricted."
},
"publicationTypeIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$"
},
"description": "Publications only: positive publication type IDs, serialized as repeated parameters."
}
},
"description": "Complete normalized caller selection.",
"additionalProperties": false
},
"delivery": {
"enum": [
"full",
"outline",
"fragment"
],
"type": "string",
"description": "Full selected payload, child outline, or JSON fragment."
},
"guidance": {
"type": "string",
"description": "Recovery for empty or missing selections."
},
"identity": {
"type": "object",
"description": "Stable selected-record identifiers retained during content retrieval.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"retrieval": {
"type": "string",
"description": "Same-tool retrieval instruction."
},
"truncated": {
"type": "boolean",
"description": "Further whole collection records remain."
},
"provenance": {
"anyOf": [
{
"type": "object",
"required": [
"api",
"url",
"retrievedAt",
"licenceUrl"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"url": {
"type": "string",
"description": "Actual official HTTPS request URL."
},
"notices": {
"type": "array",
"items": {
"type": "string",
"description": "Source notice preserved verbatim."
},
"description": "Source-specific notices."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence HTTPS URL; its exclusions still apply."
},
"retrievedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "Response retrieval time in ISO 8601 UTC."
}
},
"description": "Complete official request provenance.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"api",
"origin",
"retrievedAt",
"licenceUrl",
"contentPath"
],
"properties": {
"api": {
"enum": [
"bills",
"members",
"commons_votes",
"lords_votes",
"hansard",
"questions",
"committees"
],
"type": "string",
"description": "Official API namespace."
},
"origin": {
"type": "string",
"description": "Official origin only; the full request URL is at contentPath."
},
"licenceUrl": {
"type": "string",
"description": "Open Parliament Licence URL."
},
"contentPath": {
"type": "string",
"description": "RFC 6901 pointer to full source provenance in the reconstructable payload."
},
"retrievedAt": {
"type": "string",
"description": "Response retrieval time."
}
},
"description": "Compact provenance with a pointer to the complete request source.",
"additionalProperties": false
}
],
"description": "Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload."
},
"sourcePage": {
"type": "object",
"required": [
"itemsPerPage",
"itemsState"
],
"properties": {
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"rel": {
"type": [
"string",
"null"
],
"description": "Published relationship."
},
"href": {
"type": [
"string",
"null"
],
"description": "Published URL, possibly relative."
},
"method": {
"type": [
"string",
"null"
],
"description": "Published HTTP method."
}
},
"description": "Published source relationship metadata.",
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Complete source page relationship metadata."
},
"itemsState": {
"enum": [
"null",
"present"
],
"type": "string",
"description": "Whether source items was null or an actual array."
},
"itemsPerPage": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source-reported page size."
}
},
"description": "Source collection envelope metadata.",
"additionalProperties": false
},
"contentPage": {
"type": "object",
"required": [
"path",
"kind",
"hasMore"
],
"properties": {
"kind": {
"enum": [
"object",
"array",
"scalar"
],
"type": "string",
"description": "Type of the selected subtree."
},
"path": {
"type": "string",
"description": "RFC 6901 pointer into the fully validated normalized payload."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-16 code-unit offset within JSON text."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"valueType",
"sizeBytes",
"contentCursor"
],
"properties": {
"path": {
"type": "string",
"description": "Child RFC 6901 pointer."
},
"jsonValue": {
"type": "string",
"description": "Complete child JSON text when it fits; decode once or follow contentCursor for the identical value."
},
"sizeBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "UTF-8 bytes of its complete JSON value."
},
"valueType": {
"enum": [
"object",
"array",
"string",
"number",
"boolean",
"null"
],
"type": "string",
"description": "JSON type of this child."
},
"contentCursor": {
"type": "string",
"description": "Opaque same-tool child continuation."
}
},
"description": "One whole child continuation descriptor.",
"additionalProperties": false
},
"description": "Whole child descriptors; follow every descriptor and continuation."
},
"hasMore": {
"type": "boolean",
"description": "More descriptors or scalar chunks remain at this path."
},
"encoding": {
"type": "string",
"const": "json",
"description": "Concatenate chunks, then JSON-decode exactly once."
},
"fragment": {
"type": "string",
"description": "JSON-encoded subtree or consecutive JSON-text chunk."
},
"nextCursor": {
"type": "string",
"description": "Opaque continuation for remaining descriptors or chunks."
},
"totalCodeUnits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete JSON text length in UTF-16 code units."
}
},
"description": "Lossless recursive content continuation.",
"additionalProperties": false
},
"collectionPage": {
"type": "object",
"required": [
"returned",
"hasMore"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Total supplied by the source or fully read local collection."
},
"hasMore": {
"type": "boolean",
"description": "Further collection items remain."
},
"returned": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Whole items emitted on this page."
},
"nextCursor": {
"type": "string",
"description": "Opaque collection continuation; repeat the same filters."
}
},
"description": "Collection continuation; reconstruct the outlined selected payload before following it.",
"additionalProperties": false
},
"requestedLimit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Original page-size request when capped."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}Prompts
0 advertised
Resources
0 advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 797 ms
- 95th percentile latency
- 797 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 797 ms · metadata changed · 9 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http uk-parliament-mcp-server https://uk-parliament.caseyjhand.com/mcpCodex
codex mcp add uk-parliament-mcp-server --url https://uk-parliament.caseyjhand.com/mcpCursor
{
"mcpServers": {
"uk-parliament-mcp-server": {
"url": "https://uk-parliament.caseyjhand.com/mcp"
}
}
}Cline
{
"mcpServers": {
"uk-parliament-mcp-server": {
"type": "streamableHttp",
"url": "https://uk-parliament.caseyjhand.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"uk-parliament-mcp-server": {
"type": "http",
"url": "https://uk-parliament.caseyjhand.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http uk-parliament-mcp-server https://uk-parliament.caseyjhand.com/mcpClaude Desktop
{
"mcpServers": {
"uk-parliament-mcp-server": {
"url": "https://uk-parliament.caseyjhand.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"uk-parliament-mcp-server": {
"serverUrl": "https://uk-parliament.caseyjhand.com/mcp"
}
}
}Let your agent find its tools
Find servers like uk-parliament-mcp-server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.