{
  "openapi": "3.1.0",
  "info": {
    "title": "MapleSpike API",
    "version": "0.2.0",
    "description": "Canadian public-sector data API. Coverage and response fields vary by endpoint and source. Where supplied, Quill record hashes support integrity comparisons but do not establish source authenticity or reuse rights. Publisher terms vary by dataset; consult the original source. Software license declarations vary by repository artifact; see https://github.com/reverb256/quill/blob/main/docs/open-source-audit.md.",
    "contact": {
      "name": "MapleSpike",
      "url": "https://maplespike.ca",
      "email": "dev@maplespike.ca"
    }
  },
  "servers": [
    {
      "url": "https://api.maplespike.ca/v1",
      "description": "Production"
    },
    {
      "url": "http://localhost:8081/v1",
      "description": "Local development"
    }
  ],
  "paths": {
    "/v1/claims/verify/{hash}": {
      "get": {
        "tags": [
          "Claims"
        ],
        "summary": "Look up a claim hash",
        "operationId": "claims-verify-hash",
        "description": "A hash match checks canonical record integrity only. Provenance evidence and source retrieval time are available only when recorded; this lookup does not authenticate the source or establish reuse rights.",
        "parameters": [
          {
            "name": "hash",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^(sha256:|sha256-)?[a-f0-9]{64}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Claim hash lookup and available evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimVerificationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid SHA-256 hash format"
          },
          "500": {
            "description": "Claim verification failed"
          }
        },
        "security": []
      }
    },
    "/v1/claims/latest": {
      "get": {
        "tags": [
          "Claims"
        ],
        "summary": "List recent claim summaries",
        "operationId": "claims-latest",
        "description": "Public discovery index. Source retrieval timestamps may be null when acquisition evidence was not recorded.",
        "responses": {
          "200": {
            "description": "Recent claim summaries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimsLatestResponse"
                }
              }
            }
          },
          "500": {
            "description": "Claims index failed"
          }
        },
        "security": []
      }
    },
    "/v1/claims/verify": {
      "post": {
        "tags": [
          "Claims"
        ],
        "summary": "Recompute a canonical-record hash",
        "operationId": "claims-verify-value",
        "description": "Recomputes SHA-256 of canonical JSON for the supplied value and optionally compares a claimed hash. This checks value integrity, not source authenticity or reuse rights.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "data"
                ],
                "properties": {
                  "data": {},
                  "sha256": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Recomputed canonical-record hash and comparison result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimHashResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body"
          },
          "413": {
            "description": "Request body exceeds 1 MiB"
          },
          "500": {
            "description": "Claim verification failed"
          }
        },
        "security": []
      }
    },
    "/v1/committees/committee-membership": {
      "get": {
        "tags": [
          "committees"
        ],
        "summary": "List members of parliamentary committees and their roles",
        "description": "List members of parliamentary committees and their roles",
        "operationId": "committees-committee-membership",
        "parameters": [
          {
            "name": "committee",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parliament",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chamber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/committees/committee-meetings": {
      "get": {
        "tags": [
          "committees"
        ],
        "summary": "Schedule and records of committee meetings",
        "description": "Schedule and records of committee meetings",
        "operationId": "committees-committee-meetings",
        "parameters": [
          {
            "name": "committee",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parliament",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/committees/committee-reports": {
      "get": {
        "tags": [
          "committees"
        ],
        "summary": "Published committee reports and findings",
        "description": "Published committee reports and findings",
        "operationId": "committees-committee-reports",
        "parameters": [
          {
            "name": "committee",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parliament",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/committees/committee-witnesses": {
      "get": {
        "tags": [
          "committees"
        ],
        "summary": "Witness appearances before committees",
        "description": "Witness appearances before committees",
        "operationId": "committees-committee-witnesses",
        "parameters": [
          {
            "name": "committee",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "witness",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/corporate/corporation-profile": {
      "get": {
        "tags": [
          "corporate"
        ],
        "summary": "Profile information for a Canadian corporation",
        "description": "Profile information for a Canadian corporation",
        "operationId": "corporate-corporation-profile",
        "parameters": [
          {
            "name": "business_number",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include_directors",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/corporate/corporation-filings": {
      "get": {
        "tags": [
          "corporate"
        ],
        "summary": "Corporate filings and annual returns",
        "description": "Corporate filings and annual returns",
        "operationId": "corporate-corporation-filings",
        "parameters": [
          {
            "name": "business_number",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filing_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/corporate/director-registry": {
      "get": {
        "tags": [
          "corporate"
        ],
        "summary": "Corporate director registrations and history",
        "description": "Corporate director registrations and history",
        "operationId": "corporate-director-registry",
        "parameters": [
          {
            "name": "business_number",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "director_name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/corporate/lobbying-activities": {
      "get": {
        "tags": [
          "corporate"
        ],
        "summary": "Registered lobbying activities and communications",
        "description": "Registered lobbying activities and communications",
        "operationId": "corporate-lobbying-activities",
        "parameters": [
          {
            "name": "lobbyist",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subject",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/influence/political-contributions": {
      "get": {
        "tags": [
          "influence"
        ],
        "summary": "Political donation records and trends",
        "description": "Political donation records and trends",
        "operationId": "influence-political-contributions",
        "parameters": [
          {
            "name": "donor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/influence/fundraising-events": {
      "get": {
        "tags": [
          "influence"
        ],
        "summary": "Political fundraising events and ticket prices",
        "description": "Political fundraising events and ticket prices",
        "operationId": "influence-fundraising-events",
        "parameters": [
          {
            "name": "party",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/influence/media-ownership": {
      "get": {
        "tags": [
          "influence"
        ],
        "summary": "Media ownership structures and cross-holdings",
        "description": "Media ownership structures and cross-holdings",
        "operationId": "influence-media-ownership",
        "parameters": [
          {
            "name": "media_group",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "outlet",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/regulations/regulatory-proposals": {
      "get": {
        "tags": [
          "regulations"
        ],
        "summary": "Proposed regulatory changes open for comment",
        "description": "Proposed regulatory changes open for comment",
        "operationId": "regulations-regulatory-proposals",
        "parameters": [
          {
            "name": "agency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "published_after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/regulations/regulatory-decisions": {
      "get": {
        "tags": [
          "regulations"
        ],
        "summary": "Final regulatory decisions and rulings",
        "description": "Final regulatory decisions and rulings",
        "operationId": "regulations-regulatory-decisions",
        "parameters": [
          {
            "name": "agency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "decision_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/regulations/consultation-comments": {
      "get": {
        "tags": [
          "regulations"
        ],
        "summary": "Public comments submitted during regulatory consultations",
        "description": "Public comments submitted during regulatory consultations",
        "operationId": "regulations-consultation-comments",
        "parameters": [
          {
            "name": "proposal_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "commenter",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/courts/court-decisions": {
      "get": {
        "tags": [
          "courts"
        ],
        "summary": "Published court decisions and judgments",
        "description": "Published court decisions and judgments",
        "operationId": "courts-court-decisions",
        "parameters": [
          {
            "name": "court",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "citation",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/courts/case-tracking": {
      "get": {
        "tags": [
          "courts"
        ],
        "summary": "Track ongoing court cases and their status",
        "description": "Track ongoing court cases and their status",
        "operationId": "courts-case-tracking",
        "parameters": [
          {
            "name": "case_number",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "court",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party_name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/courts/tribunal-rulings": {
      "get": {
        "tags": [
          "courts"
        ],
        "summary": "Administrative tribunal rulings and orders",
        "description": "Administrative tribunal rulings and orders",
        "operationId": "courts-tribunal-rulings",
        "parameters": [
          {
            "name": "tribunal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/oversight/auditor-reports": {
      "get": {
        "tags": [
          "oversight"
        ],
        "summary": "Auditor General reports and performance audits",
        "description": "Auditor General reports and performance audits",
        "operationId": "oversight-auditor-reports",
        "parameters": [
          {
            "name": "agency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/oversight/watchdog-reports": {
      "get": {
        "tags": [
          "oversight"
        ],
        "summary": "Ombudsman and watchdog office reports",
        "description": "Ombudsman and watchdog office reports",
        "operationId": "oversight-watchdog-reports",
        "parameters": [
          {
            "name": "office",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/oversight/access-to-information": {
      "get": {
        "tags": [
          "oversight"
        ],
        "summary": "ATIP request summaries and processing metrics",
        "description": "ATIP request summaries and processing metrics",
        "operationId": "oversight-access-to-information",
        "parameters": [
          {
            "name": "institution",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/oversight/conflict-of-interest": {
      "get": {
        "tags": [
          "oversight"
        ],
        "summary": "Conflict of interest disclosures and commissioner findings",
        "description": "Conflict of interest disclosures and commissioner findings",
        "operationId": "oversight-conflict-of-interest",
        "parameters": [
          {
            "name": "public_office_holder",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "finding",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/data/government-spending": {
      "get": {
        "tags": [
          "data"
        ],
        "summary": "Federal and provincial government expenditure data",
        "description": "Federal and provincial government expenditure data",
        "operationId": "data-government-spending",
        "parameters": [
          {
            "name": "department",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          },
          {
            "name": "min_amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/data/election-results": {
      "get": {
        "tags": [
          "data"
        ],
        "summary": "Historical and current election results",
        "description": "Historical and current election results",
        "operationId": "data-election-results",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "riding",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/data/population-statistics": {
      "get": {
        "tags": [
          "data"
        ],
        "summary": "Population and demographic statistics",
        "description": "Population and demographic statistics",
        "operationId": "data-population-statistics",
        "parameters": [
          {
            "name": "region",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "demographic",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/data/public-salary-disclosure": {
      "get": {
        "tags": [
          "data"
        ],
        "summary": "Public sector salary disclosures (sunshine lists)",
        "description": "Public sector salary disclosures (sunshine lists)",
        "operationId": "data-public-salary-disclosure",
        "parameters": [
          {
            "name": "employer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "min_salary",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/immigration/permanent-residents": {
      "get": {
        "tags": [
          "immigration"
        ],
        "summary": "Permanent resident admissions by province, category, country",
        "description": "Permanent resident admissions by province, category, country",
        "operationId": "immigration-permanent-residents",
        "parameters": [
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/immigration/study-permits": {
      "get": {
        "tags": [
          "immigration"
        ],
        "summary": "Study permit holders by country, institution type, gender",
        "description": "Study permit holders by country, institution type, gender",
        "operationId": "immigration-study-permits",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/immigration/work-permits": {
      "get": {
        "tags": [
          "immigration"
        ],
        "summary": "Work permit holders by program (TFWP/IMP), province, skill level",
        "description": "Work permit holders by program (TFWP/IMP), province, skill level",
        "operationId": "immigration-work-permits",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/immigration/refugee-decisions": {
      "get": {
        "tags": [
          "immigration"
        ],
        "summary": "IRB refugee protection division decisions and outcomes",
        "description": "IRB refugee protection division decisions and outcomes",
        "operationId": "immigration-refugee-decisions",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "outcome",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/immigration/cbsa-enforcement": {
      "get": {
        "tags": [
          "immigration"
        ],
        "summary": "CBSA enforcement actions, removals, and port statistics",
        "description": "CBSA enforcement actions, removals, and port statistics",
        "operationId": "immigration-cbsa-enforcement",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/indigenous/land-claims": {
      "get": {
        "tags": [
          "indigenous"
        ],
        "summary": "CIRNAC specific claims and comprehensive land claims",
        "description": "CIRNAC specific claims and comprehensive land claims",
        "operationId": "indigenous-land-claims",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/indigenous/isc-spending": {
      "get": {
        "tags": [
          "indigenous"
        ],
        "summary": "Indigenous Services Canada health, education, infrastructure spending",
        "description": "Indigenous Services Canada health, education, infrastructure spending",
        "operationId": "indigenous-isc-spending",
        "parameters": [
          {
            "name": "program",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/indigenous/fn-transparency": {
      "get": {
        "tags": [
          "indigenous"
        ],
        "summary": "First Nations financial transparency and salary disclosure",
        "description": "First Nations financial transparency and salary disclosure",
        "operationId": "indigenous-fn-transparency",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "first_nation",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/indigenous/trc-progress": {
      "get": {
        "tags": [
          "indigenous"
        ],
        "summary": "Truth and Reconciliation Commission calls to action status",
        "description": "Truth and Reconciliation Commission calls to action status",
        "operationId": "indigenous-trc-progress",
        "parameters": [
          {
            "name": "call_number",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/criminal-justice/corrections-population": {
      "get": {
        "tags": [
          "criminal-justice"
        ],
        "summary": "CSC incarceration rates, demographics, costs per inmate",
        "description": "CSC incarceration rates, demographics, costs per inmate",
        "operationId": "criminal-justice-corrections-population",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/criminal-justice/parole-decisions": {
      "get": {
        "tags": [
          "criminal-justice"
        ],
        "summary": "Parole Board of Canada decisions and registry",
        "description": "Parole Board of Canada decisions and registry",
        "operationId": "criminal-justice-parole-decisions",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "outcome",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/criminal-justice/rcmp-crime-stats": {
      "get": {
        "tags": [
          "criminal-justice"
        ],
        "summary": "RCMP incident-based crime statistics by violation",
        "description": "RCMP incident-based crime statistics by violation",
        "operationId": "criminal-justice-rcmp-crime-stats",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "violation",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/criminal-justice/prosecutions": {
      "get": {
        "tags": [
          "criminal-justice"
        ],
        "summary": "PPSC caseloads, outcomes, stay rates",
        "description": "PPSC caseloads, outcomes, stay rates",
        "operationId": "criminal-justice-prosecutions",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/defence/personnel": {
      "get": {
        "tags": [
          "defence"
        ],
        "summary": "DND Regular Force and Reserve personnel counts by rank, trade",
        "description": "DND Regular Force and Reserve personnel counts by rank, trade",
        "operationId": "defence-personnel",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rank",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trade",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/defence/procurement": {
      "get": {
        "tags": [
          "defence"
        ],
        "summary": "Defence procurement contracts and major projects",
        "description": "Defence procurement contracts and major projects",
        "operationId": "defence-procurement",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vendor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "value_min",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/municipal/meetings": {
      "get": {
        "tags": [
          "municipal"
        ],
        "summary": "Council meeting agendas, minutes, decisions by city",
        "description": "Council meeting agendas, minutes, decisions by city",
        "operationId": "municipal-meetings",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/municipal/budgets": {
      "get": {
        "tags": [
          "municipal"
        ],
        "summary": "Municipal budget data and financial reports",
        "description": "Municipal budget data and financial reports",
        "operationId": "municipal-budgets",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/municipal/open-data": {
      "get": {
        "tags": [
          "municipal"
        ],
        "summary": "Municipal open data portal datasets",
        "description": "Municipal open data portal datasets",
        "operationId": "municipal-open-data",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/transport/tsb-occurrences": {
      "get": {
        "tags": [
          "transport"
        ],
        "summary": "Transportation Safety Board occurrence data (air, rail, marine, pipeline)",
        "description": "Transportation Safety Board occurrence data (air, rail, marine, pipeline)",
        "operationId": "transport-tsb-occurrences",
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/transport/tc-recalls": {
      "get": {
        "tags": [
          "transport"
        ],
        "summary": "Transport Canada vehicle recalls and safety violations",
        "description": "Transport Canada vehicle recalls and safety violations",
        "operationId": "transport-tc-recalls",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "make",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/transport/cta-rulings": {
      "get": {
        "tags": [
          "transport"
        ],
        "summary": "Canadian Transportation Agency rulings and decisions",
        "description": "Canadian Transportation Agency rulings and decisions",
        "operationId": "transport-cta-rulings",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/realtime/weather-alerts": {
      "get": {
        "tags": [
          "realtime"
        ],
        "summary": "Environment Canada weather alerts (CAP-CP format)",
        "description": "Environment Canada weather alerts (CAP-CP format)",
        "operationId": "realtime-weather-alerts",
        "parameters": [
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "severity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/realtime/border-waits": {
      "get": {
        "tags": [
          "realtime"
        ],
        "summary": "CBSA border wait times at Canada-US crossings",
        "description": "CBSA border wait times at Canada-US crossings",
        "operationId": "realtime-border-waits",
        "parameters": [
          {
            "name": "port",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/realtime/parole-registry": {
      "get": {
        "tags": [
          "realtime"
        ],
        "summary": "Parole Board of Canada decision registry",
        "description": "Parole Board of Canada decision registry",
        "operationId": "realtime-parole-registry",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/media/crtc-market-reports": {
      "get": {
        "tags": [
          "media"
        ],
        "summary": "CRTC communications market data: broadcasting, telecom, internet",
        "description": "CRTC communications market data: broadcasting, telecom, internet",
        "operationId": "media-crtc-market-reports",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/media/ownership-charts": {
      "get": {
        "tags": [
          "media"
        ],
        "summary": "CRTC broadcasting ownership charts",
        "description": "CRTC broadcasting ownership charts",
        "operationId": "media-ownership-charts",
        "parameters": [
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/media/cmf-data": {
      "get": {
        "tags": [
          "media"
        ],
        "summary": "Canada Media Fund investment data",
        "description": "Canada Media Fund investment data",
        "operationId": "media-cmf-data",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "program",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/education/tri-council-grants": {
      "get": {
        "tags": [
          "education"
        ],
        "summary": "CIHR, NSERC, SSHRC grant awards by institution and researcher",
        "description": "CIHR, NSERC, SSHRC grant awards by institution and researcher",
        "operationId": "education-tri-council-grants",
        "parameters": [
          {
            "name": "agency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "institution",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/education/research-chairs": {
      "get": {
        "tags": [
          "education"
        ],
        "summary": "Canada Research Chair allocations",
        "description": "Canada Research Chair allocations",
        "operationId": "education-research-chairs",
        "parameters": [
          {
            "name": "institution",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tier",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/education/student-loans": {
      "get": {
        "tags": [
          "education"
        ],
        "summary": "Canada Student Loan program statistics",
        "description": "Canada Student Loan program statistics",
        "operationId": "education-student-loans",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/education/cudo-data": {
      "get": {
        "tags": [
          "education"
        ],
        "summary": "Council of Ontario Universities data: enrolment, funding, faculty",
        "description": "Council of Ontario Universities data: enrolment, funding, faculty",
        "operationId": "education-cudo-data",
        "parameters": [
          {
            "name": "institution",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "metric",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/social-programs/ccb-data": {
      "get": {
        "tags": [
          "social-programs"
        ],
        "summary": "Canada Child Benefit payments by federal riding",
        "description": "Canada Child Benefit payments by federal riding",
        "operationId": "social-programs-ccb-data",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "riding",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/social-programs/cpp-oas": {
      "get": {
        "tags": [
          "social-programs"
        ],
        "summary": "CPP, OAS, GIS beneficiary counts",
        "description": "CPP, OAS, GIS beneficiary counts",
        "operationId": "social-programs-cpp-oas",
        "parameters": [
          {
            "name": "program",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/social-programs/ei-statistics": {
      "get": {
        "tags": [
          "social-programs"
        ],
        "summary": "EI claims and benefits by province and industry",
        "description": "EI claims and benefits by province and industry",
        "operationId": "social-programs-ei-statistics",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/social-programs/poverty-data": {
      "get": {
        "tags": [
          "social-programs"
        ],
        "summary": "Poverty rates: LICO, LIM, MBM thresholds by province",
        "description": "Poverty rates: LICO, LIM, MBM thresholds by province",
        "operationId": "social-programs-poverty-data",
        "parameters": [
          {
            "name": "measure",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/bank-of-canada/rate-decisions": {
      "get": {
        "tags": [
          "bank-of-canada"
        ],
        "summary": "Overnight rate target decisions and history",
        "description": "Overnight rate target decisions and history",
        "operationId": "bank-of-canada-rate-decisions",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/bank-of-canada/monetary-policy": {
      "get": {
        "tags": [
          "bank-of-canada"
        ],
        "summary": "Monetary Policy Reports and summaries",
        "description": "Monetary Policy Reports and summaries",
        "operationId": "bank-of-canada-monetary-policy",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/sedi/insider-transactions": {
      "get": {
        "tags": [
          "sedi"
        ],
        "summary": "Insider trade reports by issuer, insider, and transaction type",
        "description": "Insider trade reports by issuer, insider, and transaction type",
        "operationId": "sedi-insider-transactions",
        "parameters": [
          {
            "name": "issuer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "transaction_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/unions/union-reports": {
      "get": {
        "tags": [
          "unions"
        ],
        "summary": "Union annual report data including membership and financials",
        "description": "Union annual report data including membership and financials",
        "operationId": "unions-union-reports",
        "parameters": [
          {
            "name": "union_name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/universities/university-data": {
      "get": {
        "tags": [
          "universities"
        ],
        "summary": "University financial, enrolment, and research data",
        "description": "University financial, enrolment, and research data",
        "operationId": "universities-university-data",
        "parameters": [
          {
            "name": "institution",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/crtc/decisions": {
      "get": {
        "tags": [
          "crtc"
        ],
        "summary": "CRTC broadcasting and telecom regulatory decisions",
        "description": "CRTC broadcasting and telecom regulatory decisions",
        "operationId": "crtc-decisions",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "applicant",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/crtc/ownership": {
      "get": {
        "tags": [
          "crtc"
        ],
        "summary": "CRTC broadcasting ownership and control information",
        "description": "CRTC broadcasting ownership and control information",
        "operationId": "crtc-ownership",
        "parameters": [
          {
            "name": "owner",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/cra-charity/charity-search": {
      "get": {
        "tags": [
          "cra-charity"
        ],
        "summary": "Search registered charities by name, BN, or category",
        "description": "Search registered charities by name, BN, or category",
        "operationId": "cra-charity-charity-search",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/cra-charity/political-spending": {
      "get": {
        "tags": [
          "cra-charity"
        ],
        "summary": "Charity political activity spending disclosure",
        "description": "Charity political activity spending disclosure",
        "operationId": "cra-charity-political-spending",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/provincial-regulators/regulator-search": {
      "get": {
        "tags": [
          "provincial-regulators"
        ],
        "summary": "Find regulators by province, category, or name",
        "description": "Find regulators by province, category, or name",
        "operationId": "provincial-regulators-regulator-search",
        "parameters": [
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "query",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/provincial-regulators/regulator-coverage": {
      "get": {
        "tags": [
          "provincial-regulators"
        ],
        "summary": "Coverage summary of regulators across provinces",
        "description": "Coverage summary of regulators across provinces",
        "operationId": "provincial-regulators-regulator-coverage",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/a2aj/legal-search": {
      "get": {
        "tags": [
          "a2aj"
        ],
        "summary": "Search case law or legislation by full text with boolean operators",
        "description": "Search case law or legislation by full text with boolean operators",
        "operationId": "a2aj-legal-search",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "doc_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dataset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/a2aj/legal-fetch": {
      "get": {
        "tags": [
          "a2aj"
        ],
        "summary": "Fetch full text of a case or law by citation",
        "description": "Fetch full text of a case or law by citation",
        "operationId": "a2aj-legal-fetch",
        "parameters": [
          {
            "name": "citation",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "doc_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/a2aj/legal-coverage": {
      "get": {
        "tags": [
          "a2aj"
        ],
        "summary": "List all available court/tribunal/legislation datasets with document counts",
        "description": "List all available court/tribunal/legislation datasets with document counts",
        "operationId": "a2aj-legal-coverage",
        "parameters": [
          {
            "name": "doc_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/legislation/federal-acts": {
      "get": {
        "tags": [
          "legislation"
        ],
        "summary": "Federal consolidated Acts from Justice Canada XML repository",
        "description": "Federal consolidated Acts from Justice Canada XML repository",
        "operationId": "legislation-federal-acts",
        "parameters": [
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/legislation/federal-regulations": {
      "get": {
        "tags": [
          "legislation"
        ],
        "summary": "Federal consolidated Regulations from Justice Canada XML repository",
        "description": "Federal consolidated Regulations from Justice Canada XML repository",
        "operationId": "legislation-federal-regulations",
        "parameters": [
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/legislation/provincial-legislation": {
      "get": {
        "tags": [
          "legislation"
        ],
        "summary": "Provincial legislation from Ontario e-Laws, BC Laws, and CKAN portals",
        "description": "Provincial legislation from Ontario e-Laws, BC Laws, and CKAN portals",
        "operationId": "legislation-provincial-legislation",
        "parameters": [
          {
            "name": "province",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/goc-spending/contracts": {
      "get": {
        "tags": [
          "goc-spending"
        ],
        "summary": "Federal contracts data by year, department, and vendor",
        "description": "Federal contracts data by year, department, and vendor",
        "operationId": "goc-spending-contracts",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "department",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vendor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/goc-spending/spending-summary": {
      "get": {
        "tags": [
          "goc-spending"
        ],
        "summary": "Aggregate spending statistics by department",
        "description": "Aggregate spending statistics by department",
        "operationId": "goc-spending-spending-summary",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "department",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response; payload, citations, and provenance vary by endpoint and source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuillResponse"
                }
              }
            }
          },
          "401": {
            "description": "API key missing or invalid"
          },
          "402": {
            "description": "Quota exhausted"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "API key from https://maplespike.ca/workspace"
      }
    },
    "schemas": {
      "QuillResponse": {
        "type": "object",
        "description": "Common API envelope. Payload and citation fields vary by route and source.",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "data": {
            "description": "Route-specific payload; shape varies by endpoint."
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ApiError"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "$ref": "#/components/schemas/ResponseMeta"
          },
          "quality": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QualityMeta"
              },
              {
                "type": "null"
              }
            ]
          },
          "citation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CitationMeta"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ClaimVerificationResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/QuillResponse"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "$ref": "#/components/schemas/ClaimVerificationData"
              }
            }
          }
        ]
      },
      "ClaimsLatestResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/QuillResponse"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "$ref": "#/components/schemas/ClaimsLatestData"
              }
            }
          }
        ]
      },
      "ClaimHashResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/QuillResponse"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "$ref": "#/components/schemas/ClaimHashData"
              }
            }
          }
        ]
      },
      "ClaimVerificationData": {
        "type": "object",
        "description": "Stored or indexed record hash match and evidence when available.",
        "properties": {
          "verified": {
            "type": "boolean"
          },
          "found": {
            "type": "boolean"
          },
          "sha256": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "source_name": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "retrieved_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Source acquisition time; null when not recorded."
          },
          "claim_created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Quill claim registration time, not source retrieval time."
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "Publisher metadata or a notice to consult source terms; not a reuse grant."
          },
          "license_url": {
            "type": "string"
          },
          "license_basis": {
            "type": "string"
          },
          "provenance_evidence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProvenanceEvidence"
              },
              {
                "type": "null"
              }
            ]
          },
          "verification_scope": {
            "type": "string",
            "enum": [
              "claim-store-hash-match",
              "pipeline-index-hash-match"
            ]
          },
          "claim": {
            "type": "string"
          },
          "quality": {
            "type": [
              "object",
              "null"
            ]
          },
          "verify_command": {
            "type": "string"
          }
        }
      },
      "ClaimsLatestData": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer"
          },
          "claims": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimSummary"
            }
          }
        }
      },
      "ClaimSummary": {
        "type": "object",
        "properties": {
          "sha256": {
            "type": "string"
          },
          "claim": {
            "type": "string"
          },
          "source_name": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "retrieved_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Source acquisition time; null when not recorded."
          },
          "license": {
            "type": "string"
          },
          "update_frequency": {
            "type": "string"
          },
          "claim_created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Quill claim registration time, not source retrieval time."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Legacy alias for claim registration time."
          },
          "provenance_status": {
            "const": "inspect-verification-endpoint"
          }
        }
      },
      "ClaimHashData": {
        "type": "object",
        "properties": {
          "verified": {
            "type": "boolean",
            "description": "True only when an optional claimed hash matches the recomputed canonical JSON hash."
          },
          "recomputed_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "matches_claimed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "verify_command": {
            "type": "string"
          }
        }
      },
      "ApiError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "message_fr": {
            "type": "string"
          },
          "details": {
            "type": "array",
            "items": {}
          }
        }
      },
      "ResponseMeta": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "API response timestamp, not source retrieval time."
          },
          "version": {
            "type": "string"
          },
          "usage": {
            "type": "object",
            "properties": {
              "periodCalls": {
                "type": "integer"
              },
              "periodLimit": {
                "type": "integer"
              },
              "tier": {
                "type": "string"
              }
            }
          },
          "agent": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "authMethod": {
            "type": "string"
          },
          "creditsCharged": {
            "type": "number"
          },
          "cacheStatus": {
            "type": "string",
            "enum": [
              "hit",
              "miss",
              "mock"
            ]
          },
          "durationMs": {
            "type": "number"
          }
        }
      },
      "QualityMeta": {
        "type": "object",
        "properties": {
          "freshness_seconds": {
            "type": "number"
          },
          "source_uptime_7d": {
            "type": "number"
          },
          "confidence": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "certainty_score": {
            "type": "number"
          },
          "last_verified": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "data_completeness": {
            "type": "string"
          }
        }
      },
      "CitationMeta": {
        "type": "object",
        "properties": {
          "source_name": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "retrieved_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Source acquisition time only when observed."
          },
          "data_hash": {
            "type": "string",
            "description": "For claim records, SHA-256 of canonical Quill record JSON, not upstream response bytes."
          },
          "license": {
            "type": "string",
            "description": "Publisher metadata or a notice to consult source terms; not a reuse grant."
          },
          "license_url": {
            "type": "string"
          },
          "license_basis": {
            "type": "string",
            "enum": [
              "publisher-metadata",
              "source-configuration",
              "no-publisher-declaration"
            ]
          },
          "attribution_text": {
            "type": "string"
          },
          "update_frequency": {
            "type": "string"
          },
          "original_format": {
            "type": "string"
          },
          "citation_text": {
            "type": "string"
          },
          "citation_footnote": {
            "type": "string"
          },
          "provenance_evidence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProvenanceEvidence"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ProvenanceEvidence": {
        "type": "object",
        "description": "Evidence inventory only; it does not establish source identity, completeness, or reuse rights.",
        "required": [
          "schema_version",
          "record_integrity",
          "acquisition",
          "transformations",
          "publisher_terms"
        ],
        "properties": {
          "schema_version": {
            "const": "quill.provenance.v1"
          },
          "record_integrity": {
            "type": "object",
            "properties": {
              "algorithm": {
                "const": "SHA-256"
              },
              "digest": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "scope": {
                "const": "canonical-json-record"
              },
              "canonicalization": {
                "const": "quill-canonical-json-v1"
              }
            }
          },
          "acquisition": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "captured",
                  "not-captured"
                ]
              },
              "association": {
                "type": "string",
                "enum": [
                  "url-matched-not-content-verified",
                  "not-established",
                  "none"
                ]
              },
              "artifacts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "association": {
                      "type": "string",
                      "enum": [
                        "url-matched-not-content-verified",
                        "not-established"
                      ]
                    },
                    "evidence_source": {
                      "type": "string",
                      "enum": [
                        "explicit-record-evidence",
                        "shared-http-client-capture"
                      ]
                    },
                    "url": {
                      "type": "string"
                    },
                    "retrieved_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "sha256": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{64}$"
                    },
                    "hash_scope": {
                      "const": "http-client-response-body-utf8"
                    },
                    "status_code": {
                      "type": "integer"
                    },
                    "media_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "byte_length": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "etag": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "last_modified": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "url_redacted": {
                      "type": "boolean"
                    },
                    "body_capture": {
                      "type": "string",
                      "enum": [
                        "complete-http-client-body",
                        "empty-body-not-captured"
                      ]
                    }
                  }
                }
              }
            }
          },
          "transformations": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "pipeline-reported",
                  "not-recorded"
                ]
              },
              "coverage": {
                "const": "declared-steps-only"
              },
              "steps": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "stages": {
                "type": "object",
                "properties": {
                  "module_code_revision": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "parser_version": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "transform_code_revision": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              }
            }
          },
          "publisher_terms": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "publisher-metadata-observed",
                  "source-configuration-only",
                  "not-observed"
                ]
              },
              "label": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "observed_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "committees",
      "description": "Parliamentary committee information — membership, meetings, reports, witnesses"
    },
    {
      "name": "corporate",
      "description": "Corporate registry data — profiles, filings, directors, lobbying"
    },
    {
      "name": "influence",
      "description": "Political influence tracking — donations, fundraising, media ownership"
    },
    {
      "name": "regulations",
      "description": "Regulatory activity — proposals, decisions, consultations"
    },
    {
      "name": "courts",
      "description": "Court system — decisions, case tracking, tribunal rulings"
    },
    {
      "name": "oversight",
      "description": "Government oversight — audits, watchdogs, ATIP, conflict of interest"
    },
    {
      "name": "data",
      "description": "Government data — spending, elections, demographics, salaries"
    },
    {
      "name": "immigration",
      "description": "Immigration data — permanent residents, study permits, work permits, refugee decisions, CBSA enforcement"
    },
    {
      "name": "indigenous",
      "description": "Indigenous relations data — land claims, ISC spending, FN transparency, TRC calls to action"
    },
    {
      "name": "criminal-justice",
      "description": "Criminal justice — corrections population, parole decisions, RCMP crime stats, PPSC prosecutions"
    },
    {
      "name": "defence",
      "description": "National Defence — Regular Force personnel by rank, procurement contracts"
    },
    {
      "name": "municipal",
      "description": "Municipal council data — meetings, decisions, budgets across 19 Canadian cities"
    },
    {
      "name": "transport",
      "description": "Transport safety and infrastructure — TSB occurrences, TC recalls, CTA rulings, Infrastructure Canada"
    },
    {
      "name": "realtime",
      "description": "Real-time Canadian data — weather alerts, border wait times, parole decisions"
    },
    {
      "name": "media",
      "description": "Media and broadcasting data — CRTC market reports, ownership charts, Canada Media Fund, Telefilm"
    },
    {
      "name": "education",
      "description": "Education and research data — Tri-Council grants, Canada Research Chairs, CFI, student loans, university financials"
    },
    {
      "name": "social-programs",
      "description": "Social program data — CCB, CPP/OAS, EI, poverty statistics, food security, social assistance"
    },
    {
      "name": "bank-of-canada",
      "description": "Bank of Canada — interest rate decisions, monetary policy, financial system reviews"
    },
    {
      "name": "sedi",
      "description": "Insider trading reports — C-Suite executive stock transactions at Canadian public companies"
    },
    {
      "name": "unions",
      "description": "Union data — membership, revenue, assets for major Canadian unions (CUPE, Unifor, PSAC, etc.)"
    },
    {
      "name": "universities",
      "description": "University data — CUDO enrolment, per-institution CKAN datasets"
    },
    {
      "name": "crtc",
      "description": "CRTC regulatory decisions and broadcasting ownership data"
    },
    {
      "name": "cra-charity",
      "description": "CRA registered charity T3010 data — finances, political spending, programs"
    },
    {
      "name": "provincial-regulators",
      "description": "273 provincial regulators across 21 categories — securities, financial services, law societies, policing, engineering, etc."
    },
    {
      "name": "a2aj",
      "description": "A2AJ Canadian legal data — search 116K+ court/tribunal decisions and 5K+ statutes/regulations via api.a2aj.ca (no API key needed)"
    },
    {
      "name": "legislation",
      "description": "Canadian legislation — Justice Canada consolidated federal laws (XML), Ontario e-Laws, BC Laws, provincial CKAN"
    },
    {
      "name": "goc-spending",
      "description": "Government of Canada spending data from GoC-Spending GitHub repository — federal contracts by department and vendor"
    }
  ]
}