{"openapi":"3.1.0","info":{"title":"lobbyTO API","version":"v1","description":"Read-only JSON API over City of Toronto lobbying registrations, communications, council votes, inferred links and derived insights. Links come only from the published_link view: each carries its model score, a confidence label ('high' or 'moderate') and its evidence; links are not reviewed by a person. Anonymous use is rate limited per IP; send a free key in x-api-key for higher limits.","license":{"name":"Open Government Licence – Toronto","url":"https://open.toronto.ca/open-data-license/"},"x-attribution":"Contains information licensed under the Open Government Licence – Toronto. Derived data by lobbyTO, published under the same terms."},"servers":[{"url":"https://lobbyto.ca/api/v1"}],"tags":[{"name":"Meta"},{"name":"Entities","description":"Resolved organisations, people, registrations, communications and agenda items."},{"name":"Links","description":"Published inferred links with confidence and evidence."},{"name":"Development","description":"Development and Committee of Adjustment applications, geocoded sites and the 4.6 matched comparison."},{"name":"Procurement","description":"City contracts and solicitations (4.7) and corporate groups (4.10)."},{"name":"Contributions","description":"Campaign contributions linked to lobbying organisations through reviewer-confirmed matches (4.12)."},{"name":"Insights","description":"Derived tables (PRD section 4)."},{"name":"Bulk","description":"Nightly bulk export (CSV and JSON Lines) with a data dictionary."}],"security":[{},{"apiKey":[]}],"paths":{"/":{"get":{"tags":["Meta"],"summary":"API index","description":"Endpoint list, licence and pagination notes.","operationId":"getIndex","parameters":[],"responses":{"200":{"description":"Index","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/openapi.json":{"get":{"tags":["Meta"],"summary":"This OpenAPI document","operationId":"getOpenapiJson","parameters":[],"responses":{"200":{"description":"OpenAPI 3.1 document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/organizations":{"get":{"tags":["Entities"],"summary":"List organisations","operationId":"getOrganizations","parameters":[{"name":"q","in":"query","description":"Substring of the canonical name.","schema":{"type":"string"}},{"name":"type","in":"query","description":"Organisation type.","schema":{"type":"string","enum":["corporation","numbered_company","non_profit","association","government","partnership","other"]}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Organisations ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/organizations/{id}":{"get":{"tags":["Entities"],"summary":"One organisation with its registrations and published L3 merges","operationId":"getOrganizationsId","parameters":[{"name":"id","in":"path","required":true,"description":"Organisation id or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Organisation","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Organization"},"licence":{"type":"string"},"attribution":{"type":"string"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/people":{"get":{"tags":["Entities"],"summary":"List people (members of council, staff, lobbyists, election candidates)","description":"Campaign contributors are private people and are not listed; published contributions carry the contributor's name.","operationId":"getPeople","parameters":[{"name":"q","in":"query","description":"Substring of the canonical name.","schema":{"type":"string"}},{"name":"role","in":"query","description":"Role held.","schema":{"type":"string","enum":["member_of_council","mayor","councillor_staff","city_staff","local_board","lobbyist"]}},{"name":"ward","in":"query","description":"Ward number held in a role.","schema":{"type":"integer","minimum":0}},{"name":"term","in":"query","description":"Council term, e.g. 2022-2026.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"People ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Person"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/people/{id}":{"get":{"tags":["Entities"],"summary":"One person with roles, committees and office contact statistics","operationId":"getPeopleId","parameters":[{"name":"id","in":"path","required":true,"description":"Person id or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Person","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Person"},"licence":{"type":"string"},"attribution":{"type":"string"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/registrations":{"get":{"tags":["Entities"],"summary":"List lobbying registrations","operationId":"getRegistrations","parameters":[{"name":"from","in":"query","description":"Start date on or after.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","description":"Start date on or before.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"topic","in":"query","description":"Tracker topic id (see /topics).","schema":{"type":"string"}},{"name":"status","in":"query","description":"Registration status (active, closed, closed by lro).","schema":{"type":"string"}},{"name":"type","in":"query","description":"consultant, in_house or voluntary.","schema":{"type":"string"}},{"name":"client","in":"query","description":"Client organisation id.","schema":{"type":"integer","minimum":0}},{"name":"ward","in":"query","description":"Ward of the linked site.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Registrations ordered by SM number","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Registration"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/registrations/{id}":{"get":{"tags":["Entities"],"summary":"One registration with lobbyists, parties, communications and published links","operationId":"getRegistrationsId","parameters":[{"name":"id","in":"path","required":true,"description":"Subject-matter registration number, e.g. SM12345.","schema":{"type":"string"}}],"responses":{"200":{"description":"Registration","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Registration"},"licence":{"type":"string"},"attribution":{"type":"string"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/communications":{"get":{"tags":["Entities"],"summary":"List communications","operationId":"getCommunications","parameters":[{"name":"from","in":"query","description":"Communication date on or after.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","description":"Communication date on or before.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"registration","in":"query","description":"SM number.","schema":{"type":"string"}},{"name":"member","in":"query","description":"Person id of the member whose office was contacted.","schema":{"type":"integer","minimum":0}},{"name":"office_holder_type","in":"query","description":"member_of_council, councillor_staff, city_staff, local_board or unknown.","schema":{"type":"string"}},{"name":"method","in":"query","description":"meeting, call, email, written or other.","schema":{"type":"string"}},{"name":"ward","in":"query","description":"Ward of the registration's site.","schema":{"type":"integer","minimum":0}},{"name":"topic","in":"query","description":"Tracker topic id of the registration.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Communications ordered by date, then id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Communication"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/agenda-items":{"get":{"tags":["Entities"],"summary":"List council and committee agenda items","operationId":"getAgendaItems","parameters":[{"name":"from","in":"query","description":"Meeting date on or after.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","description":"Meeting date on or before.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"ward","in":"query","description":"Ward.","schema":{"type":"integer","minimum":0}},{"name":"committee","in":"query","description":"Committee code, e.g. PH.","schema":{"type":"string"}},{"name":"term","in":"query","description":"Council term.","schema":{"type":"string"}},{"name":"recorded","in":"query","description":"1 for items with a recorded vote, 0 for items adopted without one.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Agenda items ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgendaItem"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/agenda-items/{id}":{"get":{"tags":["Entities"],"summary":"One agenda item with motions, votes, links and lobbying summary","operationId":"getAgendaItemsId","parameters":[{"name":"id","in":"path","required":true,"description":"Item id, e.g. 2025.PH20.3.","schema":{"type":"string"}}],"responses":{"200":{"description":"Agenda item","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AgendaItem"},"licence":{"type":"string"},"attribution":{"type":"string"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/links":{"get":{"tags":["Links"],"summary":"Published inferred links","description":"Only published links. Links are published on model score alone, with no human review: 'high' (score 0.9 or higher) or 'moderate' (0.7 to 0.9; wrong more often). L5, L7 and position links need 0.95, L3 merges 0.9.","operationId":"getLinks","parameters":[{"name":"task","in":"query","description":"L1 to L6, topic or position. L7 contributor matches are published only as /contributions.","schema":{"type":"string"}},{"name":"min_confidence","in":"query","description":"'high' restricts to links scoring 0.9 or higher.","schema":{"type":"string","enum":["moderate","high"]}},{"name":"status","in":"query","description":"Confidence label.","schema":{"type":"string","enum":["moderate","high"]}},{"name":"from_type","in":"query","description":"Source entity type.","schema":{"type":"string"}},{"name":"from_id","in":"query","description":"Source entity id.","schema":{"type":"string"}},{"name":"to_type","in":"query","description":"Target entity type.","schema":{"type":"string"}},{"name":"to_id","in":"query","description":"Target entity id.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Links ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Link"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications":{"get":{"tags":["Development"],"summary":"List development applications and Committee of Adjustment files","operationId":"getApplications","parameters":[{"name":"kind","in":"query","description":"development or coa.","schema":{"type":"string","enum":["development","coa"]}},{"name":"type","in":"query","description":"Application type code.","schema":{"type":"string"}},{"name":"ward","in":"query","description":"Ward.","schema":{"type":"integer","minimum":0}},{"name":"status","in":"query","description":"Status as published.","schema":{"type":"string"}},{"name":"outcome","in":"query","description":"approved, refused, withdrawn, pending or closed.","schema":{"type":"string"}},{"name":"from","in":"query","description":"Submitted on or after.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","description":"Submitted on or before.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"site","in":"query","description":"Site id.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Applications ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Application"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{id}":{"get":{"tags":["Development"],"summary":"One application with its sites, published L2 links and the 4.6 comparison for its type","operationId":"getApplicationsId","parameters":[{"name":"id","in":"path","required":true,"description":"Application or file number, or its URL slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Application","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Application"},"licence":{"type":"string"},"attribution":{"type":"string"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/sites":{"get":{"tags":["Development"],"summary":"List geocoded sites (property addresses)","operationId":"getSites","parameters":[{"name":"ward","in":"query","description":"Ward.","schema":{"type":"integer","minimum":0}},{"name":"method","in":"query","description":"Geocode method.","schema":{"type":"string","enum":["exact","nearest_number","source","unresolved"]}},{"name":"q","in":"query","description":"Substring of the address.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Sites ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Site"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/sites/{id}":{"get":{"tags":["Development"],"summary":"One site with the registrations, applications and agenda items that name it","operationId":"getSitesId","parameters":[{"name":"id","in":"path","required":true,"description":"Site id, slug or address key.","schema":{"type":"string"}}],"responses":{"200":{"description":"Site","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Site"},"licence":{"type":"string"},"attribution":{"type":"string"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/application-comparison":{"get":{"tags":["Development"],"summary":"4.6 lobbied applications against matched unlobbied applications","description":"Outcome measures are null where either group has fewer than 20 applications.","operationId":"getInsightsApplicationComparison","parameters":[{"name":"kind","in":"query","description":"development or coa.","schema":{"type":"string"}},{"name":"type","in":"query","description":"Application type code.","schema":{"type":"string"}},{"name":"ward","in":"query","description":"Ward.","schema":{"type":"integer","minimum":0}},{"name":"level","in":"query","description":"type (city-wide) or type_ward.","schema":{"type":"string","enum":["type","type_ward"]}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Comparison rows (lobbied and matched groups)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contracts":{"get":{"tags":["Procurement"],"summary":"List City contracts (competitive awards and non-competitive contracts)","operationId":"getContracts","parameters":[{"name":"supplier","in":"query","description":"Supplier organisation id.","schema":{"type":"integer","minimum":0}},{"name":"kind","in":"query","description":"competitive or non_competitive.","schema":{"type":"string","enum":["competitive","non_competitive"]}},{"name":"division","in":"query","description":"Substring of the division.","schema":{"type":"string"}},{"name":"document","in":"query","description":"Solicitation document number.","schema":{"type":"string"}},{"name":"from","in":"query","description":"Award date on or after.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","description":"Award date on or before.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Contracts ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Contract"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contracts/{id}":{"get":{"tags":["Procurement"],"summary":"One contract with its published L6 links","operationId":"getContractsId","parameters":[{"name":"id","in":"path","required":true,"description":"Contract id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Contract","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Contract"},"licence":{"type":"string"},"attribution":{"type":"string"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/groups":{"get":{"tags":["Procurement"],"summary":"4.10 corporate groups of related organisations","operationId":"getGroups","parameters":[{"name":"basis","in":"query","description":"Connection basis.","schema":{"type":"string","enum":["parent_subsidiary","shared_beneficiary","shared_address","same_group","manual"]}},{"name":"min_members","in":"query","description":"Minimum number of member organisations.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Groups ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/groups/{id}":{"get":{"tags":["Procurement"],"summary":"One corporate group with its members and connecting records","operationId":"getGroupsId","parameters":[{"name":"id","in":"path","required":true,"description":"Group id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Group","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Group"},"licence":{"type":"string"},"attribution":{"type":"string"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/procurement-timeline":{"get":{"tags":["Procurement"],"summary":"4.7 contracts, solicitations and lobbying for one organisation on one timeline","operationId":"getInsightsProcurementTimeline","parameters":[{"name":"organization","in":"query","description":"Organisation id.","schema":{"type":"integer","minimum":0},"required":true},{"name":"inside","in":"query","description":"1 for communications inside an open solicitation window.","schema":{"type":"string"}},{"name":"from","in":"query","description":"Event date on or after.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","description":"Event date on or before.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Timeline events ordered by row","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/noncompetitive-share":{"get":{"tags":["Procurement"],"summary":"4.7 share of contracts awarded non-competitively","operationId":"getInsightsNoncompetitiveShare","parameters":[{"name":"scope","in":"query","description":"all, supplier or division.","schema":{"type":"string","enum":["all","supplier","division"]}},{"name":"scope_id","in":"query","description":"Supplier organisation id or division name.","schema":{"type":"string"}},{"name":"reason","in":"query","description":"Non-competitive reason, or * for all.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Shares by scope and reason","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/firm-clients":{"get":{"tags":["Procurement"],"summary":"4.10 consultant firm clients by year","operationId":"getInsightsFirmClients","parameters":[{"name":"firm","in":"query","description":"Firm organisation id.","schema":{"type":"integer","minimum":0}},{"name":"client","in":"query","description":"Client organisation id.","schema":{"type":"integer","minimum":0}},{"name":"year","in":"query","description":"Calendar year.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Firm x client x year rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/campaigns":{"get":{"tags":["Contributions"],"summary":"4.12 election campaigns with named contribution totals","operationId":"getCampaigns","parameters":[{"name":"election","in":"query","description":"Election, e.g. 2018, 2022 or 2023-mayor-by.","schema":{"type":"string"}},{"name":"candidate","in":"query","description":"Candidate person id.","schema":{"type":"integer","minimum":0}},{"name":"office","in":"query","description":"Mayor or Councillor.","schema":{"type":"string"}},{"name":"ward","in":"query","description":"Ward (councillors).","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Campaigns ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Campaign"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contributions":{"get":{"tags":["Contributions"],"summary":"4.12 published contributions","description":"Only contributions attributed to a lobbying organisation through a reviewer-confirmed match (task L7) at tier 1 (registered lobbyist) or tier 2 (senior officer). Contributor name and city only; addresses are never published. Tier 3 is used in aggregate statistics only.","operationId":"getContributions","parameters":[{"name":"election","in":"query","description":"Election.","schema":{"type":"string"}},{"name":"candidate","in":"query","description":"Candidate person id.","schema":{"type":"integer","minimum":0}},{"name":"organization","in":"query","description":"Organisation id.","schema":{"type":"integer","minimum":0}},{"name":"tier","in":"query","description":"1 or 2.","schema":{"type":"string","enum":["1","2"]}},{"name":"person","in":"query","description":"Matching lobbyist registry person id.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Published contributions ordered by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Contribution"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/donor-overlap":{"get":{"tags":["Contributions"],"summary":"4.12 share of named dollars and contributors from linked contributors, with the council median","operationId":"getInsightsDonorOverlap","parameters":[{"name":"election","in":"query","description":"Election.","schema":{"type":"string"}},{"name":"candidate","in":"query","description":"Candidate person id (0 = council-wide).","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Per-candidate rows (tiers 1-2) and council-wide rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/contribution-overlap":{"get":{"tags":["Contributions"],"summary":"4.12 organisations that lobbied a member's office and whose linked contributors gave to the member","operationId":"getInsightsContributionOverlap","parameters":[{"name":"election","in":"query","description":"Election.","schema":{"type":"string"}},{"name":"organization","in":"query","description":"Organisation id.","schema":{"type":"integer","minimum":0}},{"name":"candidate","in":"query","description":"Candidate person id.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Organisation x candidate x election rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/coordinated-giving":{"get":{"tags":["Contributions"],"summary":"4.12 three or more linked contributors from one organisation giving to one campaign","operationId":"getInsightsCoordinatedGiving","parameters":[{"name":"election","in":"query","description":"Election.","schema":{"type":"string"}},{"name":"organization","in":"query","description":"Organisation id.","schema":{"type":"integer","minimum":0}},{"name":"candidate","in":"query","description":"Candidate person id.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Organisation x campaign rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/alignment":{"get":{"tags":["Contributions"],"summary":"4.12 votes aligned with reviewer-confirmed organisation positions, funded vs not funded","description":"Member-level rates are null below 10 votes on items from funding organisations. Donors tend to give to councillors who already agree with them; a difference does not show that a contribution changed a vote.","operationId":"getInsightsAlignment","parameters":[{"name":"term","in":"query","description":"Council term.","schema":{"type":"string"}},{"name":"comparison","in":"query","description":"within_bloc, within_member or prior_term.","schema":{"type":"string","enum":["within_bloc","within_member","prior_term"]}},{"name":"person","in":"query","description":"Member person id (0 = council-wide).","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Alignment comparisons with bootstrap 95% intervals","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/contribution-stats":{"get":{"tags":["Contributions"],"summary":"4.12 council-wide contribution aggregates","operationId":"getInsightsContributionStats","parameters":[{"name":"election","in":"query","description":"Election.","schema":{"type":"string"}},{"name":"scope","in":"query","description":"12 (tiers 1-2) or 123 (including tier 3).","schema":{"type":"string","enum":["12","123"]}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregate metrics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/topics":{"get":{"tags":["Insights"],"summary":"The tracker's topic taxonomy","description":"Stable topic ids used in registration.topic, the upcoming feed and alerts.","operationId":"getTopics","parameters":[],"responses":{"200":{"description":"Topics","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Topic"}}}}}}}}}},"/insights/item-lobbying":{"get":{"tags":["Insights"],"summary":"4.1 lobbying before each vote","operationId":"getInsightsItemLobbying","parameters":[{"name":"agenda_item","in":"query","description":"Item id.","schema":{"type":"string"}},{"name":"window","in":"query","description":"30, 90 or 180 days.","schema":{"type":"integer","minimum":0}},{"name":"from","in":"query","description":"First vote date on or after.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","description":"First vote date on or before.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"ward","in":"query","description":"Ward.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Item x window rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/office-contacts":{"get":{"tags":["Insights"],"summary":"4.3 contacts per member office per quarter","operationId":"getInsightsOfficeContacts","parameters":[{"name":"term","in":"query","description":"Council term.","schema":{"type":"string"}},{"name":"person","in":"query","description":"Member person id.","schema":{"type":"integer","minimum":0}},{"name":"quarter","in":"query","description":"e.g. 2024Q3, or 'term'.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Office contact statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/meeting-rates":{"get":{"tags":["Insights"],"summary":"4.4 meeting rates by lobbyist, firm, office and pair","operationId":"getInsightsMeetingRates","parameters":[{"name":"subject_type","in":"query","description":"lobbyist, firm, office or pair.","schema":{"type":"string"}},{"name":"subject_id","in":"query","description":"Subject id.","schema":{"type":"string"}},{"name":"office","in":"query","description":"Office (member) person id.","schema":{"type":"integer","minimum":0}},{"name":"category","in":"query","description":"Registry subject category, or * for all.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Meeting rates; rates below the reporting minimum are null","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/deviation":{"get":{"tags":["Insights"],"summary":"4.2 votes different from bloc on lobbied and unlobbied items","operationId":"getInsightsDeviation","parameters":[{"name":"term","in":"query","description":"Council term.","schema":{"type":"string"}},{"name":"person","in":"query","description":"Member person id.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Per-member summaries; suppressed rates are null","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/former-officials":{"get":{"tags":["Insights"],"summary":"4.8 lobbyists confirmed as former members of council, councillor staff or City staff","description":"Reviewer-confirmed matches only (task L5 is manual-only and needs at least two independent confirming records); `evidence` lists the records used.","operationId":"getInsightsFormerOfficials","parameters":[{"name":"role","in":"query","description":"Former role.","schema":{"type":"string","enum":["member_of_council","mayor","councillor_staff","city_staff"]}},{"name":"person","in":"query","description":"Lobbyist person id.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Confirmed matches ordered by lobbyist and former official","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/upcoming":{"get":{"tags":["Insights"],"summary":"4.9 upcoming feed: open registrations with no linked item yet","operationId":"getInsightsUpcoming","parameters":[{"name":"topic","in":"query","description":"Tracker topic id.","schema":{"type":"string"}},{"name":"basis","in":"query","description":"Window basis.","schema":{"type":"string","enum":["topic","pooled","none"]}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Estimated windows ordered by registration id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/lead-times":{"get":{"tags":["Insights"],"summary":"4.9 lead time from initial approval to first published linked item, by topic","operationId":"getInsightsLeadTimes","parameters":[{"name":"topic","in":"query","description":"Tracker topic id, or * for the pooled distribution.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Lead-time quantiles in days","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/topic-volume":{"get":{"tags":["Insights"],"summary":"4.9 new registrations per topic per month, with spike flags","operationId":"getInsightsTopicVolume","parameters":[{"name":"topic","in":"query","description":"Tracker topic id.","schema":{"type":"string"}},{"name":"spike","in":"query","description":"1 for spike months only.","schema":{"type":"string"}},{"name":"month_from","in":"query","description":"First month, YYYY-MM.","schema":{"type":"string"}},{"name":"month_to","in":"query","description":"Last month, YYYY-MM.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Topic x month rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/mayor-share":{"get":{"tags":["Insights"],"summary":"4.5 quarterly share of communications to the Mayor's office","operationId":"getInsightsMayorShare","parameters":[{"name":"category","in":"query","description":"all, planning_development, budget or housing.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Quarterly shares, with the Executive Committee comparison where membership is loaded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/insights/mayor-share/its":{"get":{"tags":["Insights"],"summary":"4.5 interrupted time series estimates","operationId":"getInsightsMayorShareIts","parameters":[],"responses":{"200":{"description":"Coefficients with 95% intervals","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/insights/disclosure-lag":{"get":{"tags":["Insights"],"summary":"4.11 share of communications recorded more than 3 days late","description":"Rows are returned only after 6 months of registry snapshots; until then `measurement` explains the status.","operationId":"getInsightsDisclosureLag","parameters":[{"name":"subject_type","in":"query","description":"firm, lobbyist, subject or all.","schema":{"type":"string"}},{"name":"subject_id","in":"query","description":"Subject id.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size, 1 to 500 (default 100).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","description":"Opaque keyset cursor: the next_cursor value from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"Disclosure lag summaries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Row"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/bulk":{"get":{"tags":["Bulk"],"summary":"Manifest of the latest nightly export","operationId":"getBulk","parameters":[],"responses":{"200":{"description":"Manifest","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"$ref":"#/components/responses/NotFound"}}}},"/bulk/{date}/{file}":{"get":{"tags":["Bulk"],"summary":"Download one exported file","operationId":"getBulkDateFile","parameters":[{"name":"date","in":"path","required":true,"description":"Export date, YYYY-MM-DD.","schema":{"type":"string"}},{"name":"file","in":"path","required":true,"description":"File name from the manifest, e.g. registration.csv.","schema":{"type":"string"}}],"responses":{"200":{"description":"CSV, JSON Lines, Markdown or JSON file","content":{"text/csv":{},"application/x-ndjson":{},"text/markdown":{}}},"404":{"$ref":"#/components/responses/NotFound"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Optional. Free keys raise the rate limit from 60 to 600 requests per minute."}},"responses":{"BadRequest":{"description":"Malformed filter, date or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"No such resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded (retry-after: 60)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","description":"Machine-readable code"},"message":{"type":"string","description":"Explanation"},"licence":{"type":"string"},"attribution":{"type":"string"}}},"ListEnvelope":{"type":"object","required":["data","next_cursor","limit"],"properties":{"data":{"type":"array"},"next_cursor":{"type":["string","null"],"description":"Pass as ?cursor= for the next page; null on the last page."},"limit":{"type":"integer"},"licence":{"type":"string"},"attribution":{"type":"string"}}},"Row":{"type":"object","additionalProperties":true},"Topic":{"type":"object","properties":{"id":{"type":"string","description":"Stable topic id"},"label":{"type":"string"},"description":{"type":"string"},"group":{"type":"string"}}},"Organization":{"type":"object","properties":{"id":{"type":"integer"},"canonical_name":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"type":{"type":["string","null"]},"group_id":{"type":["integer","null"]},"slug":{"type":["string","null"]}}},"Person":{"type":"object","properties":{"id":{"type":"integer"},"canonical_name":{"type":"string"},"first_name":{"type":["string","null"]},"last_name":{"type":["string","null"]},"slug":{"type":["string","null"]}}},"Registration":{"type":"object","properties":{"id":{"type":"string","description":"SM number"},"client_organization_id":{"type":["integer","null"]},"lobbyist_person_id":{"type":["integer","null"]},"firm_organization_id":{"type":["integer","null"]},"type":{"type":["string","null"]},"status":{"type":["string","null"]},"subjects":{"type":"array","items":{"type":"string"}},"topic":{"type":["string","null"],"description":"Tracker topic id assigned by the decision model (null until tagged)"},"particulars":{"type":["string","null"]},"summary":{"type":["string","null"],"description":"Automated summary of the registration text"},"ward":{"type":["integer","null"]},"initial_approval_date":{"type":["string","null"],"format":"date"},"start_date":{"type":["string","null"]},"end_date":{"type":["string","null"]}}},"Communication":{"type":"object","properties":{"id":{"type":"string"},"registration_id":{"type":"string"},"lobbyist_person_id":{"type":["integer","null"]},"office_holder_person_id":{"type":["integer","null"]},"office_holder_raw":{"type":["string","null"]},"office":{"type":["string","null"]},"office_holder_type":{"type":"string"},"member_person_id":{"type":["integer","null"]},"method":{"type":["string","null"]},"method_raw":{"type":["string","null"]},"date":{"type":"string"},"first_seen_date":{"type":"string","description":"First date the communication appeared in our daily snapshot of the registry export"}}},"AgendaItem":{"type":"object","properties":{"id":{"type":"string"},"term":{"type":["string","null"]},"committee_code":{"type":["string","null"]},"committee":{"type":["string","null"]},"meeting_number":{"type":["integer","null"]},"meeting_date":{"type":["string","null"]},"title":{"type":["string","null"]},"ward":{"type":["integer","null"]},"addresses":{"type":"array","items":{"type":"string"}},"first_vote_date":{"type":["string","null"]},"has_recorded_vote":{"type":"integer"}}},"Application":{"type":"object","properties":{"id":{"type":"string","description":"Application or file number"},"kind":{"type":"string","enum":["development","coa"]},"type":{"type":["string","null"]},"slug":{"type":["string","null"]},"site_id":{"type":["integer","null"]},"address":{"type":["string","null"]},"ward":{"type":["integer","null"]},"submitted":{"type":["string","null"]},"status":{"type":["string","null"]},"decision":{"type":["string","null"]},"decision_date":{"type":["string","null"]},"hearing_date":{"type":["string","null"]},"outcome":{"type":["string","null"]},"appealed":{"type":["integer","null"]},"objections":{"type":["integer","null"]},"units":{"type":["integer","null"]},"gfa":{"type":["number","null"]},"size_band":{"type":["string","null"]},"description":{"type":["string","null"]},"parent_id":{"type":["string","null"]},"url":{"type":["string","null"]}}},"Site":{"type":"object","properties":{"id":{"type":"integer"},"address":{"type":"string"},"address_key":{"type":"string"},"slug":{"type":["string","null"]},"ward":{"type":["integer","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"geocode_method":{"type":["string","null"],"enum":["exact","nearest_number","source","unresolved",null]},"matched_key":{"type":["string","null"]},"number_gap":{"type":["integer","null"]},"ward_ambiguous":{"type":"integer"}}},"Contract":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["competitive","non_competitive"]},"supplier_organization_id":{"type":["integer","null"]},"supplier_name":{"type":["string","null"]},"supplier_slug":{"type":["string","null"]},"supplier_raw":{"type":["string","null"]},"amount":{"type":["number","null"]},"date":{"type":["string","null"]},"division":{"type":["string","null"]},"category":{"type":["string","null"]},"description":{"type":["string","null"]},"document_number":{"type":["string","null"]},"solicitation_type":{"type":["string","null"]},"reason":{"type":["string","null"]},"wards":{"type":["string","null"]},"source_dataset":{"type":["string","null"]}}},"Group":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":["string","null"]},"basis":{"type":["string","null"]},"bases":{"type":"array","items":{"type":"string"}},"members":{"type":"integer"},"registrations":{"type":["integer","null"]},"communications":{"type":["integer","null"]},"contracts":{"type":["integer","null"]},"contract_amount":{"type":["number","null"]}}},"Campaign":{"type":"object","properties":{"id":{"type":"integer"},"election":{"type":"string"},"candidate_person_id":{"type":["integer","null"]},"candidate_name":{"type":"string"},"office":{"type":"string"},"ward":{"type":["integer","null"]},"total_contributions":{"type":["number","null"]},"contributions_n":{"type":["integer","null"]},"contributors_n":{"type":["integer","null"]},"elected":{"type":["integer","null"]},"incumbent":{"type":["integer","null"]},"filing_type":{"type":["string","null"]},"source_dataset":{"type":["string","null"]}}},"Contribution":{"type":"object","properties":{"id":{"type":"integer"},"contribution_id":{"type":"integer"},"election":{"type":"string"},"campaign_id":{"type":"integer"},"candidate_person_id":{"type":["integer","null"]},"office":{"type":"string"},"ward":{"type":["integer","null"]},"contributor_name":{"type":"string"},"contributor_city":{"type":["string","null"]},"amount":{"type":"number"},"returned":{"type":["number","null"]},"kind":{"type":"string","enum":["monetary","in_kind"]},"contribution_date":{"type":["string","null"]},"organization_id":{"type":"integer"},"tier":{"type":"integer","enum":[1,2]},"registry_person_id":{"type":["integer","null"]},"registration_ids":{"type":"array","items":{"type":"string"}}}},"Link":{"type":"object","properties":{"id":{"type":"integer"},"task":{"type":"string"},"from_type":{"type":"string"},"from_id":{"type":"string"},"to_type":{"type":"string"},"to_id":{"type":"string"},"probability":{"type":["number","null"]},"model":{"type":["string","null"]},"model_version":{"type":["string","null"]},"question_version":{"type":["string","null"]},"reviewed_at":{"type":["string","null"]},"evidence":{"type":"object"},"confidence":{"type":"string","enum":["high","moderate"]}}}}}}