/shorts.v1alpha1.PoliticiansService/GetRegisterActivityAggregate lodgement activity over a window: weekly event counts, the members with the most dated events, companies first declared in the window, and companies whose declarer count moved.
COUNTS AND DATES ONLY. "Most active" is a count ordering, and is the strongest characterisation permitted beside a named member — nothing here may become "unusual", "spike", "watch" or a flag of any kind.
Parameters
Define the version of the Connect protocol
Define the timeout, in ms
Request Body
'house' | 'senate' (proto string)
register form item 1-14; 0 = all (proto int32)
UNSPECIFIED = both (proto shorts.v1alpha1.RegisterChangeKind)
AEC abbreviation (proto string)
The SAME filter set ListRegisterChanges takes, and for one reason: the weekly strip is drawn above a FILTERED feed, so parliament-wide numbers rendered there read as the filtered member's own. All optional and all ADDITIVE — an unfiltered request is byte-identical to the old behaviour. They narrow the WEEKLY BUCKETS, filtered_event_count and filtered_member_count only. The three rails (active_members, newly_declared_companies, declarer_count_changes) are NOT narrowed by the filters: they answer corpus-wide questions inside the window, and a "most active members" rail filtered to one member would be a tautology. canonical slug; consumers never derive one (proto string)
30 | 90 | 180 | 365. Anything else is clamped to the next value up (0 and negatives default to 90), so a cache key can never describe a window other than the one that produced it. (proto int32)
Responses
The three rails below are CORPUS-WIDE and window-scoped: the request's filters do not narrow them. (proto shorts.v1alpha1.ActiveMember)
ActiveMember is a member ordered by their COUNT of dated events in the window. A high count reflects lodgement and extraction activity, not conduct.
(proto google.protobuf.Timestamp)
(proto shorts.v1alpha1.DeclarerCountChange)
DeclarerCountChange is a company whose number of declaring members differs between the window's start and now. BOTH sides are dated-only and use the identical predicate at two dates. About 80% of currently-declared rows carry no start date, so an undated-inclusive "now" against a dated-only baseline would report every company as growing by its undated population, and an abs() ordering would then rank the list by that artefact.
Dated events matching the request's filters inside the window. Equal to the sum of every bucket's added_count + removed_count, so a count line beside the strip states the strip's own total and not the parliament's. (proto int32)
DISTINCT members with at least one such event — PEOPLE, never rows. A surface can state it exactly instead of counting the members it happens to have rendered, which is always a floor. (proto int32)
(proto shorts.v1alpha1.NewlyDeclaredCompany)
NewlyDeclaredCompany is a company whose FIRST dated declaration anywhere in the corpus falls inside the window. WITHHELD RATHER THAN GUESSED: a company is excluded outright if ANY member currently declares it with no known start date. About 80% of currently declared rows are undated, so a dated-only minimum cannot prove first-ness against them — an undated holding of the same company may be decades old. First-ness is a claim about the whole corpus, so an unprovable one is not made at all.
(proto string)
Currently-declared rows with no known start date, and therefore absent from every measure above. Stated rather than dropped silently: a surface must be able to caption what its timeline does not contain. (proto int32)
Contiguous Monday buckets, NARROWED BY THE REQUEST'S FILTERS. The first bucket is the Monday on or before (today - window_days), so no bucket is a partial week drawn as a full one. (proto shorts.v1alpha1.WeeklyEventCount)
WeeklyEventCount is one Monday-anchored week of DATED events. Undated lodgements have no point on a timeline and are excluded — never placed at a parliament's opening, which would fabricate a date. The series is CONTIGUOUS: every Monday from the window's start to the current week is present, weeks with no events included at zero, so a bar chart's gaps are real quiet weeks rather than missing buckets drawn adjacent.
the clamped window actually used (proto int32)
Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation
The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
A list of messages that carry the error details. There is no limit on the number of messages.
Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details.
A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
curl -X POST "https://api.shorted.com.au/shorts.v1alpha1.PoliticiansService/GetRegisterActivity" \
-H "Content-Type: application/json" \
-d '{
"chamber": "string",
"itemNo": 0,
"kind": "string",
"partyAb": "string",
"politicianSlug": "string",
"windowDays": 0
}'curl -X POST "https://api.shorted.com.au/shorts.v1alpha1.PoliticiansService/GetRegisterActivity" \
-H "Content-Type: application/json" \
-d '{
"chamber": "string",
"itemNo": 0,
"kind": "string",
"partyAb": "string",
"politicianSlug": "string",
"windowDays": 0
}'