{
  "components": {
    "schemas": {
      "connect-protocol-version": {
        "const": 1,
        "description": "Define the version of the Connect protocol",
        "enum": [
          1
        ],
        "title": "Connect-Protocol-Version",
        "type": "number"
      },
      "connect-timeout-header": {
        "description": "Define the timeout, in ms",
        "title": "Connect-Timeout-Ms",
        "type": "number"
      },
      "connect.error": {
        "additionalProperties": true,
        "description": "Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation",
        "properties": {
          "code": {
            "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].",
            "enum": [
              "canceled",
              "unknown",
              "invalid_argument",
              "deadline_exceeded",
              "not_found",
              "already_exists",
              "permission_denied",
              "resource_exhausted",
              "failed_precondition",
              "aborted",
              "out_of_range",
              "unimplemented",
              "internal",
              "unavailable",
              "data_loss",
              "unauthenticated"
            ],
            "examples": [
              "not_found"
            ],
            "type": "string"
          },
          "details": {
            "description": "A list of messages that carry the error details. There is no limit on the number of messages.",
            "items": {
              "$ref": "#/components/schemas/connect.error_details.Any"
            },
            "type": "array"
          },
          "message": {
            "description": "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.",
            "type": "string"
          }
        },
        "title": "Connect Error",
        "type": "object"
      },
      "connect.error_details.Any": {
        "additionalProperties": true,
        "description": "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.",
        "properties": {
          "debug": {
            "description": "Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic.",
            "discriminator": {
              "propertyName": "type"
            },
            "oneOf": [
              {
                "additionalProperties": true,
                "description": "Detailed error information.",
                "title": "Any",
                "type": "object"
              }
            ],
            "title": "Debug"
          },
          "type": {
            "description": "A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field.",
            "type": "string"
          },
          "value": {
            "description": "The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field.",
            "format": "binary",
            "type": "string"
          }
        },
        "type": "object"
      },
      "google.protobuf.Timestamp": {
        "description": "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n     Timestamp timestamp;\n     timestamp.set_seconds(time(NULL));\n     timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n     struct timeval tv;\n     gettimeofday(\u0026tv, NULL);\n\n     Timestamp timestamp;\n     timestamp.set_seconds(tv.tv_sec);\n     timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n     FILETIME ft;\n     GetSystemTimeAsFileTime(\u0026ft);\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n     Timestamp timestamp;\n     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n     long millis = System.currentTimeMillis();\n\n     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n         .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n     Instant now = Instant.now();\n\n     Timestamp timestamp =\n         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n             .setNanos(now.getNano()).build();\n\n\n Example 6: Compute Timestamp from current time in Python.\n\n     timestamp = Timestamp()\n     timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D\n ) to obtain a formatter capable of generating timestamps in this format.",
        "examples": [
          "2023-01-15T01:30:15.01Z",
          "2024-12-25T12:00:00Z"
        ],
        "format": "date-time",
        "type": "string"
      },
      "shorts.v1alpha1.ActiveMember": {
        "additionalProperties": false,
        "description": "ActiveMember is a member ordered by their COUNT of dated events in the\n window. A high count reflects lodgement and extraction activity, not conduct.",
        "properties": {
          "chamber": {
            "description": "(proto string)",
            "title": "chamber",
            "type": "string"
          },
          "displayName": {
            "description": "(proto string)",
            "title": "display_name",
            "type": "string"
          },
          "division": {
            "description": "(proto string)",
            "title": "division",
            "type": "string"
          },
          "eventCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "event_count",
            "type": "integer"
          },
          "partyAb": {
            "description": "(proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "slug": {
            "description": "(proto string)",
            "title": "slug",
            "type": "string"
          }
        },
        "title": "ActiveMember",
        "type": "object"
      },
      "shorts.v1alpha1.AddressPriceDrop": {
        "additionalProperties": false,
        "description": "One physical address (deduped by stable address_key) whose for-sale asking\n price fell over the window, deep-linking to its per-address history page.",
        "properties": {
          "addressKey": {
            "description": "(proto string)",
            "title": "address_key",
            "type": "string"
          },
          "agencyName": {
            "description": "marketing agency of the current listing ('' when not captured) (proto string)",
            "title": "agency_name",
            "type": "string"
          },
          "agentNames": {
            "description": "listing agents ('' when not captured) (proto string)",
            "items": {
              "type": "string"
            },
            "title": "agent_names",
            "type": "array"
          },
          "bathrooms": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "bathrooms",
            "type": "integer"
          },
          "bedrooms": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "bedrooms",
            "type": "integer"
          },
          "currentPrice": {
            "description": "current active asking, AUD (proto double)",
            "format": "double",
            "title": "current_price",
            "type": "number"
          },
          "displayAddress": {
            "description": "(proto string)",
            "title": "display_address",
            "type": "string"
          },
          "dropAbs": {
            "description": "first_price - current_price, AUD (proto double)",
            "format": "double",
            "title": "drop_abs",
            "type": "number"
          },
          "dropPct": {
            "description": "fraction (0.062 == a 6.2% drop) (proto double)",
            "format": "double",
            "title": "drop_pct",
            "type": "number"
          },
          "firstPrice": {
            "description": "earliest observed price in the window, AUD (proto double)",
            "format": "double",
            "title": "first_price",
            "type": "number"
          },
          "lastObservedAt": {
            "description": "RFC3339, when the current listing was last seen (proto string)",
            "title": "last_observed_at",
            "type": "string"
          },
          "latestListingUrl": {
            "description": "deep link to the live portal listing (proto string)",
            "title": "latest_listing_url",
            "type": "string"
          },
          "latestSource": {
            "description": "'rea' | 'domain' (proto string)",
            "title": "latest_source",
            "type": "string"
          },
          "numListings": {
            "description": "distinct source+listing_id at this address (proto int32)",
            "format": "int32",
            "title": "num_listings",
            "type": "integer"
          },
          "postcode": {
            "description": "(proto string)",
            "title": "postcode",
            "type": "string"
          },
          "propertyType": {
            "description": "(proto string)",
            "title": "property_type",
            "type": "string"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          },
          "suburb": {
            "description": "(proto string)",
            "title": "suburb",
            "type": "string"
          }
        },
        "title": "AddressPriceDrop",
        "type": "object"
      },
      "shorts.v1alpha1.AgencyPriceStats": {
        "additionalProperties": false,
        "description": "One agency's aggregate footprint across its tracked listings. agency\n identity is per-portal (REA company id / Domain advertiser id) — the same\n real-world agency may appear once per portal.",
        "properties": {
          "activeListings": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "active_listings",
            "type": "integer"
          },
          "agencyId": {
            "description": "portal-scoped id (proto string)",
            "title": "agency_id",
            "type": "string"
          },
          "agencyName": {
            "description": "(proto string)",
            "title": "agency_name",
            "type": "string"
          },
          "agentNames": {
            "description": "small display sample of listing agents (\u003c=6) (proto string)",
            "items": {
              "type": "string"
            },
            "title": "agent_names",
            "type": "array"
          },
          "avgAsking": {
            "description": "AUD (0 if none) (proto double)",
            "format": "double",
            "title": "avg_asking",
            "type": "number"
          },
          "avgDropPct": {
            "description": "0..1 fraction (0 if no drops) (proto double)",
            "format": "double",
            "title": "avg_drop_pct",
            "type": "number"
          },
          "droppedCount": {
            "description": "deduped addresses cut in the 30-day window (proto int32)",
            "format": "int32",
            "title": "dropped_count",
            "type": "integer"
          },
          "medianAsking": {
            "description": "AUD (proto double)",
            "format": "double",
            "title": "median_asking",
            "type": "number"
          },
          "pricedListings": {
            "description": "active listings with a numeric asking price (proto int32)",
            "format": "int32",
            "title": "priced_listings",
            "type": "integer"
          },
          "source": {
            "description": "'rea' | 'domain' (proto string)",
            "title": "source",
            "type": "string"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          },
          "suburbsCovered": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "suburbs_covered",
            "type": "integer"
          },
          "totalDropValue": {
            "description": "summed AUD reductions (proto double)",
            "format": "double",
            "title": "total_drop_value",
            "type": "number"
          }
        },
        "title": "AgencyPriceStats",
        "type": "object"
      },
      "shorts.v1alpha1.BattlegroundStock": {
        "additionalProperties": false,
        "description": "A single stock result from the squeeze radar / battlegrounds ranking",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "daysToCover": {
            "description": "(proto double)",
            "format": "double",
            "title": "days_to_cover",
            "type": "number"
          },
          "divergenceScore": {
            "description": "0-100, 0 unless price up AND shorts building (proto double)",
            "format": "double",
            "title": "divergence_score",
            "type": "number"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "latestPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "latest_price",
            "type": "number"
          },
          "logoUrl": {
            "description": "(proto string)",
            "title": "logo_url",
            "type": "string"
          },
          "marketCap": {
            "description": "(proto double)",
            "format": "double",
            "title": "market_cap",
            "type": "number"
          },
          "priceChange1m": {
            "description": "(proto double)",
            "format": "double",
            "title": "price_change_1m",
            "type": "number"
          },
          "shortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "short_pct",
            "type": "number"
          },
          "shortPctChange4w": {
            "description": "(proto double)",
            "format": "double",
            "title": "short_pct_change_4w",
            "type": "number"
          },
          "squeezeScore": {
            "description": "0-100 (proto double)",
            "format": "double",
            "title": "squeeze_score",
            "type": "number"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "BattlegroundStock",
        "type": "object"
      },
      "shorts.v1alpha1.BattlegroundView": {
        "description": "View mode for GetBattlegroundStocks",
        "enum": [
          "BATTLEGROUND_VIEW_UNSPECIFIED",
          "BATTLEGROUND_VIEW_SQUEEZE",
          "BATTLEGROUND_VIEW_DIVERGENCE"
        ],
        "title": "BattlegroundView",
        "type": "string"
      },
      "shorts.v1alpha1.CandidateDonation": {
        "additionalProperties": false,
        "description": "CandidateDonation is one itemised gift named in a candidate's election return.",
        "properties": {
          "amountCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "amount_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "donationDate": {
            "description": "YYYY-MM-DD; empty when the return omits it (proto string)",
            "title": "donation_date",
            "type": "string"
          },
          "donorName": {
            "description": "verbatim (proto string)",
            "title": "donor_name",
            "type": "string"
          }
        },
        "title": "CandidateDonation",
        "type": "object"
      },
      "shorts.v1alpha1.CandidateElectionReturn": {
        "additionalProperties": false,
        "description": "CandidateElectionReturn is one election return lodged by the member as a\n candidate — the honest member layer, because it names the person.\n\n A NIL RETURN IS A FACT, not missing data: nil_return true means \"lodged a\n return declaring no gifts\", which is publishable exactly as that.",
        "properties": {
          "amendmentNo": {
            "description": "Amendments land continuously; the number is published so a reader knows the\n figure was revised rather than wondering why it moved. (proto int32)",
            "format": "int32",
            "title": "amendment_no",
            "type": "integer"
          },
          "candidateName": {
            "description": "verbatim 'SURNAME, Given Names' (proto string)",
            "title": "candidate_name",
            "type": "string"
          },
          "discretionaryCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "discretionary_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "donations": {
            "description": "Itemised gifts, where the return names them. Empty is NOT \"no gifts\" — see\n the event coverage counts below. (proto shorts.v1alpha1.CandidateDonation)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.CandidateDonation"
            },
            "title": "donations",
            "type": "array"
          },
          "donorCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "donor_count",
            "type": "integer"
          },
          "electorateName": {
            "description": "(proto string)",
            "title": "electorate_name",
            "type": "string"
          },
          "electorateState": {
            "description": "(proto string)",
            "title": "electorate_state",
            "type": "string"
          },
          "event": {
            "description": "verbatim, e.g. '2025 Federal Election' (proto string)",
            "title": "event",
            "type": "string"
          },
          "eventItemisedReturnCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "event_itemised_return_count",
            "type": "integer"
          },
          "eventReturnCount": {
            "description": "CORPUS-WIDE coverage for this event, carried on the row it caveats: of\n event_return_count returns lodged, event_itemised_return_count name their\n donors individually. Without this an empty donations list reads as a claim. (proto int32)",
            "format": "int32",
            "title": "event_return_count",
            "type": "integer"
          },
          "eventYear": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "event_year",
            "type": "integer"
          },
          "expenditureCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "expenditure_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "nilReturn": {
            "description": "(proto bool)",
            "title": "nil_return",
            "type": "boolean"
          },
          "partyName": {
            "description": "(proto string)",
            "title": "party_name",
            "type": "string"
          },
          "returnType": {
            "description": "'Candidate' | 'Senate Group' (proto string)",
            "title": "return_type",
            "type": "string"
          },
          "sourceUrl": {
            "description": "(proto string)",
            "title": "source_url",
            "type": "string"
          },
          "totalGiftCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "total_gift_cents",
            "type": [
              "integer",
              "string"
            ]
          }
        },
        "title": "CandidateElectionReturn",
        "type": "object"
      },
      "shorts.v1alpha1.CompanyTaxYear": {
        "additionalProperties": false,
        "description": "One income year of ATO corporate-tax transparency data for an entity.\n has_taxable_income / has_tax_payable distinguish a genuine zero from\n \"not reported\" (the ATO leaves these blank; blank is meaningful, not zero).",
        "properties": {
          "hasTaxPayable": {
            "description": "(proto bool)",
            "title": "has_tax_payable",
            "type": "boolean"
          },
          "hasTaxableIncome": {
            "description": "(proto bool)",
            "title": "has_taxable_income",
            "type": "boolean"
          },
          "incomeYear": {
            "description": "e.g. 2024 for the 2023-24 report (proto int32)",
            "format": "int32",
            "title": "income_year",
            "type": "integer"
          },
          "taxPayable": {
            "description": "valid only when has_tax_payable (proto double)",
            "format": "double",
            "title": "tax_payable",
            "type": "number"
          },
          "taxableIncome": {
            "description": "valid only when has_taxable_income (proto double)",
            "format": "double",
            "title": "taxable_income",
            "type": "number"
          },
          "totalIncome": {
            "description": "always reported (A$) (proto double)",
            "format": "double",
            "title": "total_income",
            "type": "number"
          }
        },
        "title": "CompanyTaxYear",
        "type": "object"
      },
      "shorts.v1alpha1.ComparePoliticiansRequest": {
        "additionalProperties": false,
        "properties": {
          "slugA": {
            "description": "(proto string)",
            "title": "slug_a",
            "type": "string"
          },
          "slugB": {
            "description": "(proto string)",
            "title": "slug_b",
            "type": "string"
          }
        },
        "title": "ComparePoliticiansRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ComparePoliticiansResponse": {
        "additionalProperties": false,
        "properties": {
          "a": {
            "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianSummary",
            "description": "(proto shorts.v1alpha1.PoliticianSummary)",
            "title": "a"
          },
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "b": {
            "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianSummary",
            "description": "(proto shorts.v1alpha1.PoliticianSummary)",
            "title": "b"
          },
          "extractedParliamentsA": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "extracted_parliaments_a",
            "type": "array"
          },
          "extractedParliamentsB": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "extracted_parliaments_b",
            "type": "array"
          },
          "holderCountsA": {
            "description": "(proto shorts.v1alpha1.RegisterHolderCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolderCount"
            },
            "title": "holder_counts_a",
            "type": "array"
          },
          "holderCountsB": {
            "description": "(proto shorts.v1alpha1.RegisterHolderCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolderCount"
            },
            "title": "holder_counts_b",
            "type": "array"
          },
          "onlyACompanies": {
            "description": "(proto shorts.v1alpha1.PoliticianOnlyCompany)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianOnlyCompany"
            },
            "title": "only_a_companies",
            "type": "array"
          },
          "onlyAMore": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "only_a_more",
            "type": "integer"
          },
          "onlyBCompanies": {
            "description": "(proto shorts.v1alpha1.PoliticianOnlyCompany)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianOnlyCompany"
            },
            "title": "only_b_companies",
            "type": "array"
          },
          "onlyBMore": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "only_b_more",
            "type": "integer"
          },
          "partialParliamentsA": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "partial_parliaments_a",
            "type": "array"
          },
          "partialParliamentsB": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "partial_parliaments_b",
            "type": "array"
          },
          "pendingParliamentsA": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "pending_parliaments_a",
            "type": "array"
          },
          "pendingParliamentsB": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "pending_parliaments_b",
            "type": "array"
          },
          "sharedCompanies": {
            "description": "(proto shorts.v1alpha1.SharedDeclaredCompany)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SharedDeclaredCompany"
            },
            "title": "shared_companies",
            "type": "array"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          }
        },
        "title": "ComparePoliticiansResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ComparisonBaselines": {
        "additionalProperties": false,
        "description": "State + national reference medians for the profile's comparison bars.",
        "properties": {
          "nationalMedianPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "national_median_price",
            "type": "number"
          },
          "nationalMedianWeeklyHhdIncome": {
            "description": "(proto double)",
            "format": "double",
            "title": "national_median_weekly_hhd_income",
            "type": "number"
          },
          "stateMedianPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "state_median_price",
            "type": "number"
          },
          "stateMedianWeeklyHhdIncome": {
            "description": "(proto double)",
            "format": "double",
            "title": "state_median_weekly_hhd_income",
            "type": "number"
          }
        },
        "title": "ComparisonBaselines",
        "type": "object"
      },
      "shorts.v1alpha1.DeclaredInterest": {
        "additionalProperties": false,
        "description": "DeclaredInterest is one holding over one continuous period.\n\n declared_from_known distinguishes \"declared since this date\" from \"declared as\n at a statement whose date the form did not state\". A consumer must render the\n second as an unknown start and never substitute a guess.",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "currentlyDeclared": {
            "description": "(proto bool)",
            "title": "currently_declared",
            "type": "boolean"
          },
          "declaredFrom": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "declared_from"
          },
          "declaredFromKnown": {
            "description": "(proto bool)",
            "title": "declared_from_known",
            "type": "boolean"
          },
          "declaredText": {
            "description": "verbatim, as the member wrote it (proto string)",
            "title": "declared_text",
            "type": "string"
          },
          "declaredTo": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "absent while still declared (proto google.protobuf.Timestamp)",
            "title": "declared_to"
          },
          "entityKind": {
            "description": "What the declared entity IS: listed | private_company | family_trust |\n smsf | managed_fund | foreign | not_an_entity.\n\n A consumer needs this to describe an unmatched row honestly. \"Not matched to\n an ASX listing\" is only true of entity_kind='listed'; saying it about a\n family trust reports a system failure that did not happen, because a trust\n can never have a ticker. (proto string)",
            "title": "entity_kind",
            "type": "string"
          },
          "holder": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolder",
            "description": "(proto shorts.v1alpha1.RegisterHolder)",
            "title": "holder"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "itemLabel": {
            "description": "(proto string)",
            "title": "item_label",
            "type": "string"
          },
          "itemNo": {
            "description": "1 shareholdings, 3 real estate, 4 directorships… (proto int32)",
            "format": "int32",
            "title": "item_no",
            "type": "integer"
          },
          "matchMethod": {
            "description": "curated_alias | ticker_in_text | name_exact (proto string)",
            "title": "match_method",
            "type": "string"
          },
          "propertyState": {
            "description": "(proto string)",
            "title": "property_state",
            "type": "string"
          },
          "salCode": {
            "description": "empty unless resolved to an ABS suburb (proto string)",
            "title": "sal_code",
            "type": "string"
          },
          "secondaryText": {
            "description": "item 3 purpose, item 6 creditor… (proto string)",
            "title": "secondary_text",
            "type": "string"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "sourceUrl": {
            "description": "the aph.gov.au PDF this came from (proto string)",
            "title": "source_url",
            "type": "string"
          },
          "stockCode": {
            "description": "empty unless publishably resolved (proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "suburbName": {
            "description": "(proto string)",
            "title": "suburb_name",
            "type": "string"
          }
        },
        "title": "DeclaredInterest",
        "type": "object"
      },
      "shorts.v1alpha1.DeclarerCountChange": {
        "additionalProperties": false,
        "description": "DeclarerCountChange is a company whose number of declaring members differs\n between the window's start and now.\n\n BOTH sides are dated-only and use the identical predicate at two dates. About\n 80% of currently-declared rows carry no start date, so an undated-inclusive\n \"now\" against a dated-only baseline would report every company as growing by\n its undated population, and an abs() ordering would then rank the list by\n that artefact.",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "declarersAtWindowStart": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "declarers_at_window_start",
            "type": "integer"
          },
          "declarersNow": {
            "description": "Members whose declaration is dated and open today — the SAME predicate\n NewlyDeclaredCompany.declarer_count uses, so one response speaks with one\n measure of \"how many members declare this company\". (proto int32)",
            "format": "int32",
            "title": "declarers_now",
            "type": "integer"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "DeclarerCountChange",
        "type": "object"
      },
      "shorts.v1alpha1.DirectorTrade": {
        "additionalProperties": false,
        "description": "A single director trade record",
        "properties": {
          "announcementUrl": {
            "description": "(proto string)",
            "title": "announcement_url",
            "type": "string"
          },
          "directorName": {
            "description": "(proto string)",
            "title": "director_name",
            "type": "string"
          },
          "id": {
            "description": "(proto string)",
            "title": "id",
            "type": "string"
          },
          "pricePerShare": {
            "description": "(proto double)",
            "format": "double",
            "title": "price_per_share",
            "type": "number"
          },
          "sharesTraded": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "shares_traded",
            "type": [
              "integer",
              "string"
            ]
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "totalValue": {
            "description": "(proto double)",
            "format": "double",
            "title": "total_value",
            "type": "number"
          },
          "tradeDate": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "trade_date",
            "type": "string"
          },
          "tradeType": {
            "description": "'buy', 'sell', 'exercise_options' (proto string)",
            "title": "trade_type",
            "type": "string"
          }
        },
        "title": "DirectorTrade",
        "type": "object"
      },
      "shorts.v1alpha1.DistinctiveHolding": {
        "additionalProperties": false,
        "description": "DistinctiveHolding is one currently-declared listed company of one member.\n\n corpus_declarer_count is the whole fact: 1 means no other member currently\n declares it. The field carries no adjective and consumers must not add one.",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "corpusDeclarerCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "corpus_declarer_count",
            "type": "integer"
          },
          "holder": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolder",
            "description": "(proto shorts.v1alpha1.RegisterHolder)",
            "title": "holder"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "shortPercent": {
            "description": "THE COMPANY's ASIC short interest, market-wide; 0 when the company is not\n in the short-interest set. It says nothing about any member's holding, its\n size, or any gain or loss — disclosure_note carries that in full. (proto double)",
            "format": "double",
            "title": "short_percent",
            "type": "number"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "DistinctiveHolding",
        "type": "object"
      },
      "shorts.v1alpha1.DividendRecord": {
        "additionalProperties": false,
        "description": "A single dividend record",
        "properties": {
          "amountPerShare": {
            "description": "(proto double)",
            "format": "double",
            "title": "amount_per_share",
            "type": "number"
          },
          "dividendType": {
            "description": "'ordinary', 'special', 'interim', 'final' (proto string)",
            "title": "dividend_type",
            "type": "string"
          },
          "exDate": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "ex_date",
            "type": "string"
          },
          "frankingPercentage": {
            "description": "(proto double)",
            "format": "double",
            "title": "franking_percentage",
            "type": "number"
          },
          "id": {
            "description": "(proto string)",
            "title": "id",
            "type": "string"
          },
          "paymentDate": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "payment_date",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "DividendRecord",
        "type": "object"
      },
      "shorts.v1alpha1.DonationsCorpusCounts": {
        "additionalProperties": false,
        "description": "DonationsCorpusCounts is the methodology band's raw material: what the corpus\n actually contains, so a surface can state its own boundaries instead of\n implying completeness.",
        "properties": {
          "candidateDonationCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "candidate_donation_count",
            "type": "integer"
          },
          "candidateReturnCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "candidate_return_count",
            "type": "integer"
          },
          "candidateReturnResolvedCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "candidate_return_resolved_count",
            "type": "integer"
          },
          "donationMadeCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "donation_made_count",
            "type": "integer"
          },
          "firstFinancialYearEnd": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "first_financial_year_end",
            "type": "integer"
          },
          "lastFinancialYearEnd": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "last_financial_year_end",
            "type": "integer"
          },
          "matchableCompanyNameCount": {
            "description": "How many company names the match layer can match against at all. A property\n of the company metadata, kept as the denominator that makes the matched\n figures legible, and never to be rendered as a number of donors. (proto int32)",
            "format": "int32",
            "title": "matchable_company_name_count",
            "type": "integer"
          },
          "matchedPayerCodeCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "matched_payer_code_count",
            "type": "integer"
          },
          "matchedPayerNameCount": {
            "description": "Donor/payer NAMES appearing in this corpus that resolve to an ASX listing,\n and the codes they resolve to (exact normalised name or curated alias,\n never fuzzy). These describe the corpus.\n\n They replace `listed_company_match_count`, which published the size of the\n matching SUBSTRATE — every listed company whose name COULD be matched — as\n though it were a count of companies found in the data. It read an order of\n magnitude high. (proto int32)",
            "format": "int32",
            "title": "matched_payer_name_count",
            "type": "integer"
          },
          "mpReturnCount": {
            "description": "The member layer, and why it is thin. A member with no row here has NOT\n been shown to have received nothing — most members never lodge this return. (proto int32)",
            "format": "int32",
            "title": "mp_return_count",
            "type": "integer"
          },
          "mpReturnResolvedCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "mp_return_resolved_count",
            "type": "integer"
          },
          "nilCandidateReturnCount": {
            "description": "A lodged nil return is a publishable fact, not missing data. (proto int32)",
            "format": "int32",
            "title": "nil_candidate_return_count",
            "type": "integer"
          },
          "partyReturnCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "party_return_count",
            "type": "integer"
          },
          "receiptCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "receipt_count",
            "type": "integer"
          }
        },
        "title": "DonationsCorpusCounts",
        "type": "object"
      },
      "shorts.v1alpha1.DonorRecipientGroup": {
        "additionalProperties": false,
        "description": "DonorRecipientGroup is what one payer paid into one party group. Party groups\n are the source's own rollup key, never inferred from a branch name.",
        "properties": {
          "amountCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "amount_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "partyGroup": {
            "description": "(proto string)",
            "title": "party_group",
            "type": "string"
          }
        },
        "title": "DonorRecipientGroup",
        "type": "object"
      },
      "shorts.v1alpha1.DropIndexPoint": {
        "additionalProperties": false,
        "description": "DropIndexPoint is one day of the discounting index.\n\n panel_suburbs, coverage_ratio and is_gap cross the wire deliberately: the\n client needs them to caption the chart and to draw a crawl outage as a break\n rather than a collapse in discounting. Computing that twice would let the two\n sides disagree.",
        "properties": {
          "activeAddresses": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "active_addresses",
            "type": "integer"
          },
          "coverageRatio": {
            "description": "panel suburbs / full suburb catalog for this snapshot date (proto double)",
            "format": "double",
            "title": "coverage_ratio",
            "type": "number"
          },
          "delistedCount": {
            "description": "withdrawn events in the trailing window (national grain only) (proto int32)",
            "format": "int32",
            "title": "delisted_count",
            "type": "integer"
          },
          "dropRate": {
            "description": "0..1 fraction, equal-weighted mean of per-suburb rates (proto double)",
            "format": "double",
            "title": "drop_rate",
            "type": "number"
          },
          "droppedAddresses": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "dropped_addresses",
            "type": "integer"
          },
          "isGap": {
            "description": "coverage too low to be a fair reading (proto bool)",
            "title": "is_gap",
            "type": "boolean"
          },
          "medianDropPct": {
            "description": "0..1 fraction, depth of the typical cut (proto double)",
            "format": "double",
            "title": "median_drop_pct",
            "type": "number"
          },
          "panelSuburbs": {
            "description": "suburbs contributing to this point (proto int32)",
            "format": "int32",
            "title": "panel_suburbs",
            "type": "integer"
          },
          "snapshotDate": {
            "description": "'YYYY-MM-DD' (proto string)",
            "title": "snapshot_date",
            "type": "string"
          },
          "withdrawnThenRelisted": {
            "description": "Distinct listings withdrawn then relisted with a \u003e7 day gap, in the\n trailing window (national grain only). The gap floor excludes crawl\n sweep noise: measured 2026-08-17, 188 of 450 REA delist-\u003erelist pairs\n land \u003c=2 days apart (a known page-truncation artefact, not a vendor\n withdrawing), while Domain shows 57 of 94 pairs genuinely \u003e7 days apart. (proto int32)",
            "format": "int32",
            "title": "withdrawn_then_relisted",
            "type": "integer"
          }
        },
        "title": "DropIndexPoint",
        "type": "object"
      },
      "shorts.v1alpha1.EconomicObservation": {
        "additionalProperties": false,
        "properties": {
          "period": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "period"
          },
          "value": {
            "description": "(proto double)",
            "format": "double",
            "title": "value",
            "type": "number"
          }
        },
        "title": "EconomicObservation",
        "type": "object"
      },
      "shorts.v1alpha1.EconomicSeriesData": {
        "additionalProperties": false,
        "properties": {
          "info": {
            "$ref": "#/components/schemas/shorts.v1alpha1.EconomicSeriesInfo",
            "description": "(proto shorts.v1alpha1.EconomicSeriesInfo)",
            "title": "info"
          },
          "observations": {
            "description": "capped at 600, oldest first (proto shorts.v1alpha1.EconomicObservation)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.EconomicObservation"
            },
            "title": "observations",
            "type": "array"
          }
        },
        "title": "EconomicSeriesData",
        "type": "object"
      },
      "shorts.v1alpha1.EconomicSeriesInfo": {
        "additionalProperties": false,
        "properties": {
          "adjustment": {
            "description": "'original' | 'seasadj' | 'trend' (proto string)",
            "title": "adjustment",
            "type": "string"
          },
          "frequency": {
            "description": "'monthly' | 'quarterly' | 'annual' (proto string)",
            "title": "frequency",
            "type": "string"
          },
          "latestPeriod": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "latest_period"
          },
          "metric": {
            "description": "(proto string)",
            "title": "metric",
            "type": "string"
          },
          "product": {
            "description": "'' when not applicable (proto string)",
            "title": "product",
            "type": "string"
          },
          "regionCode": {
            "description": "'aus' | 'nsw' | ... (proto string)",
            "title": "region_code",
            "type": "string"
          },
          "regionName": {
            "description": "(proto string)",
            "title": "region_name",
            "type": "string"
          },
          "regionType": {
            "description": "'national' | 'state' | 'refinery' | 'industry' (proto string)",
            "title": "region_type",
            "type": "string"
          },
          "seriesKey": {
            "description": "'topic.metric[.product].region[.adjustment]' (proto string)",
            "title": "series_key",
            "type": "string"
          },
          "sourceKey": {
            "description": "(proto string)",
            "title": "source_key",
            "type": "string"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "topic": {
            "description": "'petroleum' | 'trade' | 'gdp' | 'labour' | 'cpi' | 'rates' (proto string)",
            "title": "topic",
            "type": "string"
          },
          "unit": {
            "description": "'aud' | 'percent' | 'index' | 'megalitres' | ... (proto string)",
            "title": "unit",
            "type": "string"
          }
        },
        "title": "EconomicSeriesInfo",
        "type": "object"
      },
      "shorts.v1alpha1.EditorialTake": {
        "additionalProperties": false,
        "description": "A single Shorted Take editorial article (Gemini-generated commentary\n on a price-sensitive news headline).",
        "properties": {
          "bodyFormat": {
            "description": "'markdown' | 'mdx' (proto string)",
            "title": "body_format",
            "type": "string"
          },
          "bodyMd": {
            "description": "Markdown body (proto string)",
            "title": "body_md",
            "type": "string"
          },
          "byline": {
            "description": "e.g. \"The Shorted Desk — Mining \u0026 Resources\" (proto string)",
            "title": "byline",
            "type": "string"
          },
          "citations": {
            "description": "(proto shorts.v1alpha1.TakeCitation)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.TakeCitation"
            },
            "title": "citations",
            "type": "array"
          },
          "createdAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "created_at"
          },
          "headline": {
            "description": "(proto string)",
            "title": "headline",
            "type": "string"
          },
          "heroCaption": {
            "description": "(proto string)",
            "title": "hero_caption",
            "type": "string"
          },
          "heroCredit": {
            "description": "e.g. \"AI-generated illustration\" (proto string)",
            "title": "hero_credit",
            "type": "string"
          },
          "heroImageUrl": {
            "description": "(proto string)",
            "title": "hero_image_url",
            "type": "string"
          },
          "id": {
            "description": "(proto string)",
            "title": "id",
            "type": "string"
          },
          "inlineImages": {
            "description": "(proto shorts.v1alpha1.InlineImage)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.InlineImage"
            },
            "title": "inline_images",
            "type": "array"
          },
          "layoutImages": {
            "description": "(proto shorts.v1alpha1.LayoutImage)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.LayoutImage"
            },
            "title": "layout_images",
            "type": "array"
          },
          "model": {
            "description": "'gemini-2.0-flash', etc. (proto string)",
            "title": "model",
            "type": "string"
          },
          "ogImageUrl": {
            "description": "(proto string)",
            "title": "og_image_url",
            "type": "string"
          },
          "publishedAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "published_at"
          },
          "sentiment": {
            "description": "(proto string)",
            "title": "sentiment",
            "type": "string"
          },
          "slug": {
            "description": "(proto string)",
            "title": "slug",
            "type": "string"
          },
          "sourceArticleId": {
            "description": "UUID of source news_article, or empty (proto string)",
            "title": "source_article_id",
            "type": "string"
          },
          "sourceName": {
            "description": "'Stockhead', 'Motley Fool', etc. (proto string)",
            "title": "source_name",
            "type": "string"
          },
          "sourceUrl": {
            "description": "External publisher URL (attribution) (proto string)",
            "title": "source_url",
            "type": "string"
          },
          "standfirst": {
            "description": "one-sentence dek under the headline (proto string)",
            "title": "standfirst",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "tweetPublishedAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "tweet_published_at"
          },
          "wordCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "word_count",
            "type": "integer"
          }
        },
        "title": "EditorialTake",
        "type": "object"
      },
      "shorts.v1alpha1.FilterSuburbsRequest": {
        "additionalProperties": false,
        "properties": {
          "predicates": {
            "description": "ANDed; at least one required (proto shorts.v1alpha1.SuburbMetricPredicate)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbMetricPredicate"
            },
            "title": "predicates",
            "type": "array"
          },
          "stateCode": {
            "description": "required (proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "FilterSuburbsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.FilterSuburbsResponse": {
        "additionalProperties": false,
        "properties": {
          "indexVersion": {
            "description": "(proto string)",
            "title": "index_version",
            "type": "string"
          },
          "matchCount": {
            "description": "(proto uint32)",
            "title": "match_count",
            "type": "integer"
          },
          "matchMask": {
            "description": "Packed match bitset aligned to GetSuburbIndex. Least-significant-bit first:\n position i is byte i/8, bit i%8; 1 means the suburb matches every predicate. (proto bytes)",
            "format": "byte",
            "title": "match_mask",
            "type": "string"
          }
        },
        "title": "FilterSuburbsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.FinancialMetric": {
        "additionalProperties": false,
        "description": "A single extracted financial metric",
        "properties": {
          "attributes": {
            "additionalProperties": {
              "description": "(proto string)",
              "title": "value",
              "type": "string"
            },
            "description": "e.g., {\"value_millions\": \"5142\", \"period\": \"H1 FY2025\"} (proto shorts.v1alpha1.FinancialMetric.AttributesEntry)",
            "title": "attributes",
            "type": "object"
          },
          "metricType": {
            "description": "e.g., \"revenue\", \"net_profit\", \"eps\", \"dividend\" (proto string)",
            "title": "metric_type",
            "type": "string"
          },
          "sourceText": {
            "description": "Original text from the report (proto string)",
            "title": "source_text",
            "type": "string"
          }
        },
        "title": "FinancialMetric",
        "type": "object"
      },
      "shorts.v1alpha1.FinancialReportHighlight": {
        "additionalProperties": false,
        "description": "Extracted financial data from a single report",
        "properties": {
          "confidence": {
            "description": "digest confidence 0.0-1.0 (proto double)",
            "format": "double",
            "title": "confidence",
            "type": "number"
          },
          "digest": {
            "description": "compressed Flash-distilled summary of the report (proto string)",
            "title": "digest",
            "type": "string"
          },
          "metrics": {
            "description": "(proto shorts.v1alpha1.FinancialMetric)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.FinancialMetric"
            },
            "title": "metrics",
            "type": "array"
          },
          "reportDate": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "report_date",
            "type": "string"
          },
          "reportTitle": {
            "description": "(proto string)",
            "title": "report_title",
            "type": "string"
          },
          "reportType": {
            "description": "e.g., \"annual_results\", \"half_year_results\" (proto string)",
            "title": "report_type",
            "type": "string"
          }
        },
        "title": "FinancialReportHighlight",
        "type": "object"
      },
      "shorts.v1alpha1.FinancialYearOption": {
        "additionalProperties": false,
        "description": "FinancialYearOption is one selectable year, with how much is in it.",
        "properties": {
          "financialYear": {
            "description": "(proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "financialYearEnd": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "financial_year_end",
            "type": "integer"
          },
          "listedGroupCount": {
            "description": "Party groups in this year with at least one payer matched to an ASX\n listing, over EVERY group in the year — not over the page of groups a\n response happened to carry. A surface counting groups it did not show needs\n the population, or its \"and N more\" is a function of the page size. (proto int32)",
            "format": "int32",
            "title": "listed_group_count",
            "type": "integer"
          },
          "partyGroupCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "party_group_count",
            "type": "integer"
          }
        },
        "title": "FinancialYearOption",
        "type": "object"
      },
      "shorts.v1alpha1.GetAvailableDatesRequest": {
        "additionalProperties": false,
        "description": "Request for GetAvailableDates RPC",
        "properties": {
          "before": {
            "description": "Return dates before this date (YYYY-MM-DD) (proto string)",
            "title": "before",
            "type": "string"
          },
          "limit": {
            "description": "How many dates to return (default 90) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          }
        },
        "title": "GetAvailableDatesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetAvailableDatesResponse": {
        "additionalProperties": false,
        "description": "Response for GetAvailableDates RPC",
        "properties": {
          "dates": {
            "description": "Available trading dates in YYYY-MM-DD (proto string)",
            "items": {
              "type": "string"
            },
            "title": "dates",
            "type": "array"
          },
          "earliestDate": {
            "description": "(proto string)",
            "title": "earliest_date",
            "type": "string"
          },
          "latestDate": {
            "description": "(proto string)",
            "title": "latest_date",
            "type": "string"
          },
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          }
        },
        "title": "GetAvailableDatesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetBattlegroundStocksRequest": {
        "additionalProperties": false,
        "description": "Request for GetBattlegroundStocks RPC",
        "properties": {
          "limit": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "view": {
            "$ref": "#/components/schemas/shorts.v1alpha1.BattlegroundView",
            "description": "(proto shorts.v1alpha1.BattlegroundView)",
            "title": "view"
          }
        },
        "title": "GetBattlegroundStocksRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetBattlegroundStocksResponse": {
        "additionalProperties": false,
        "description": "Response for GetBattlegroundStocks RPC",
        "properties": {
          "stocks": {
            "description": "(proto shorts.v1alpha1.BattlegroundStock)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.BattlegroundStock"
            },
            "title": "stocks",
            "type": "array"
          },
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          }
        },
        "title": "GetBattlegroundStocksResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetCompanyTaxProfileRequest": {
        "additionalProperties": false,
        "description": "Request for GetCompanyTaxProfile RPC",
        "properties": {
          "productCode": {
            "description": "(proto string)",
            "title": "product_code",
            "type": "string"
          }
        },
        "title": "GetCompanyTaxProfileRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetCompanyTaxProfileResponse": {
        "additionalProperties": false,
        "description": "Response for GetCompanyTaxProfile RPC",
        "properties": {
          "abn": {
            "description": "(proto string)",
            "title": "abn",
            "type": "string"
          },
          "entityName": {
            "description": "(proto string)",
            "title": "entity_name",
            "type": "string"
          },
          "sourceAttribution": {
            "description": "(proto string)",
            "title": "source_attribution",
            "type": "string"
          },
          "years": {
            "description": "(proto shorts.v1alpha1.CompanyTaxYear)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.CompanyTaxYear"
            },
            "title": "years",
            "type": "array"
          }
        },
        "title": "GetCompanyTaxProfileResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetDirectorTradesRequest": {
        "additionalProperties": false,
        "description": "Request for GetDirectorTrades RPC",
        "properties": {
          "limit": {
            "description": "Max trades to return (default 20) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "stockCode": {
            "description": "ASX stock code (proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GetDirectorTradesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetDirectorTradesResponse": {
        "additionalProperties": false,
        "description": "Response for GetDirectorTrades RPC",
        "properties": {
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          },
          "trades": {
            "description": "(proto shorts.v1alpha1.DirectorTrade)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.DirectorTrade"
            },
            "title": "trades",
            "type": "array"
          }
        },
        "title": "GetDirectorTradesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetDividendHistoryRequest": {
        "additionalProperties": false,
        "description": "Request for GetDividendHistory RPC",
        "properties": {
          "stockCode": {
            "description": "ASX stock code (proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "years": {
            "description": "How many years of history (default 5) (proto int32)",
            "format": "int32",
            "title": "years",
            "type": "integer"
          }
        },
        "title": "GetDividendHistoryRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetDividendHistoryResponse": {
        "additionalProperties": false,
        "description": "Response for GetDividendHistory RPC",
        "properties": {
          "dividends": {
            "description": "(proto shorts.v1alpha1.DividendRecord)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.DividendRecord"
            },
            "title": "dividends",
            "type": "array"
          },
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          },
          "trailingYield": {
            "description": "Calculated trailing 12-month dividend yield (proto double)",
            "format": "double",
            "title": "trailing_yield",
            "type": "number"
          }
        },
        "title": "GetDividendHistoryResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetDonationsOverviewRequest": {
        "additionalProperties": false,
        "properties": {
          "financialYear": {
            "description": "Verbatim FY label ('2024-25'). Empty selects the latest year held. (proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "limit": {
            "description": "Party groups returned, ordered by total_receipts_cents desc. Default 25,\n max 100. (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          }
        },
        "title": "GetDonationsOverviewRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetDonationsOverviewResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "ingest snapshot (proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "attribution": {
            "description": "Crown copyright credit; required by the licence (proto string)",
            "title": "attribution",
            "type": "string"
          },
          "availableFinancialYears": {
            "description": "(proto shorts.v1alpha1.FinancialYearOption)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.FinancialYearOption"
            },
            "title": "available_financial_years",
            "type": "array"
          },
          "censoringNote": {
            "description": "The mandatory notes, single-sourced HERE so every surface renders the same\n words and none can paraphrase them into a claim the data cannot support. right-censoring at the disclosure threshold (proto string)",
            "title": "censoring_note",
            "type": "string"
          },
          "corpus": {
            "$ref": "#/components/schemas/shorts.v1alpha1.DonationsCorpusCounts",
            "description": "(proto shorts.v1alpha1.DonationsCorpusCounts)",
            "title": "corpus"
          },
          "coverageNote": {
            "description": "what the member layer does and does not cover (proto string)",
            "title": "coverage_note",
            "type": "string"
          },
          "financialYear": {
            "description": "the year actually served (proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "parties": {
            "description": "(proto shorts.v1alpha1.PartyFundingSummary)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PartyFundingSummary"
            },
            "title": "parties",
            "type": "array"
          },
          "reformNote": {
            "description": "the 1 Jan 2027 scheme change / break annotation (proto string)",
            "title": "reform_note",
            "type": "string"
          },
          "sourceLicence": {
            "description": "'CC-BY-4.0' (proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "verbatimNote": {
            "description": "figures are as lodged, amendments land continuously (proto string)",
            "title": "verbatim_note",
            "type": "string"
          }
        },
        "title": "GetDonationsOverviewResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetDropIndexSeriesRequest": {
        "additionalProperties": false,
        "properties": {
          "from": {
            "description": "'YYYY-MM-DD', inclusive; clamped to 2026-08-13 (proto string)",
            "title": "from",
            "type": "string"
          },
          "grain": {
            "description": "'national' | 'state' | 'suburb' (proto string)",
            "title": "grain",
            "type": "string"
          },
          "grainKey": {
            "description": "'AU' | state code | sal_code (proto string)",
            "title": "grain_key",
            "type": "string"
          },
          "to": {
            "description": "'YYYY-MM-DD', inclusive; defaults to today (proto string)",
            "title": "to",
            "type": "string"
          }
        },
        "title": "GetDropIndexSeriesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetDropIndexSeriesResponse": {
        "additionalProperties": false,
        "properties": {
          "points": {
            "description": "(proto shorts.v1alpha1.DropIndexPoint)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.DropIndexPoint"
            },
            "title": "points",
            "type": "array"
          },
          "trackingSince": {
            "description": "'YYYY-MM-DD' — earliest date the index exists for (proto string)",
            "title": "tracking_since",
            "type": "string"
          }
        },
        "title": "GetDropIndexSeriesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetEconomicSeriesRequest": {
        "additionalProperties": false,
        "properties": {
          "maxObservations": {
            "description": "default 600, clamped to 1..600 (proto int32)",
            "format": "int32",
            "title": "max_observations",
            "type": "integer"
          },
          "seriesKeys": {
            "description": "max 50 (proto string)",
            "items": {
              "type": "string"
            },
            "title": "series_keys",
            "type": "array"
          },
          "startPeriod": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "optional (proto google.protobuf.Timestamp)",
            "title": "start_period"
          }
        },
        "title": "GetEconomicSeriesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetEconomicSeriesResponse": {
        "additionalProperties": false,
        "properties": {
          "series": {
            "description": "(proto shorts.v1alpha1.EconomicSeriesData)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.EconomicSeriesData"
            },
            "title": "series",
            "type": "array"
          }
        },
        "title": "GetEconomicSeriesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetEditorialTakeRequest": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "description": "(proto string)",
            "title": "slug",
            "type": "string"
          }
        },
        "title": "GetEditorialTakeRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetEditorialTakeResponse": {
        "additionalProperties": false,
        "properties": {
          "take": {
            "$ref": "#/components/schemas/shorts.v1alpha1.EditorialTake",
            "description": "(proto shorts.v1alpha1.EditorialTake)",
            "title": "take"
          }
        },
        "title": "GetEditorialTakeResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetEventTimelineRequest": {
        "additionalProperties": false,
        "description": "Request for GetEventTimeline RPC",
        "properties": {
          "daysBack": {
            "description": "number of days to look back (default 90) (proto int32)",
            "format": "int32",
            "title": "days_back",
            "type": "integer"
          },
          "limit": {
            "description": "max events to return (default 50) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GetEventTimelineRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetEventTimelineResponse": {
        "additionalProperties": false,
        "description": "Response for GetEventTimeline RPC",
        "properties": {
          "events": {
            "description": "(proto shorts.v1alpha1.TimelineEvent)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.TimelineEvent"
            },
            "title": "events",
            "type": "array"
          }
        },
        "title": "GetEventTimelineResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetHousePriceSeriesRequest": {
        "additionalProperties": false,
        "properties": {
          "dwellingType": {
            "description": "optional; default 'all' (proto string)",
            "title": "dwelling_type",
            "type": "string"
          },
          "measure": {
            "description": "'mean_price' | 'median_price' | 'price_index' | 'debt_to_income' (proto string)",
            "title": "measure",
            "type": "string"
          },
          "regionCode": {
            "description": "'AUS' | 'NSW' | '1GSYD' (proto string)",
            "title": "region_code",
            "type": "string"
          }
        },
        "title": "GetHousePriceSeriesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetHousePriceSeriesResponse": {
        "additionalProperties": false,
        "properties": {
          "dwellingType": {
            "description": "(proto string)",
            "title": "dwelling_type",
            "type": "string"
          },
          "measure": {
            "description": "(proto string)",
            "title": "measure",
            "type": "string"
          },
          "points": {
            "description": "(proto shorts.v1alpha1.HousePricePoint)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.HousePricePoint"
            },
            "title": "points",
            "type": "array"
          },
          "regionCode": {
            "description": "(proto string)",
            "title": "region_code",
            "type": "string"
          },
          "regionName": {
            "description": "(proto string)",
            "title": "region_name",
            "type": "string"
          },
          "source": {
            "description": "(proto string)",
            "title": "source",
            "type": "string"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "unit": {
            "description": "(proto string)",
            "title": "unit",
            "type": "string"
          }
        },
        "title": "GetHousePriceSeriesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetHousingOverviewRequest": {
        "additionalProperties": false,
        "properties": {
          "regionType": {
            "description": "Filter to one region_type ('national'|'state'|'gccsa'); empty = all key regions. (proto string)",
            "title": "region_type",
            "type": "string"
          }
        },
        "title": "GetHousingOverviewRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetHousingOverviewResponse": {
        "additionalProperties": false,
        "properties": {
          "asOf": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_of"
          },
          "metrics": {
            "description": "(proto shorts.v1alpha1.HousingMetric)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.HousingMetric"
            },
            "title": "metrics",
            "type": "array"
          }
        },
        "title": "GetHousingOverviewResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetIndustryIntelligenceRequest": {
        "additionalProperties": false,
        "properties": {
          "industry": {
            "description": "optional exact industry filter (proto string)",
            "title": "industry",
            "type": "string"
          },
          "recordLimit": {
            "description": "default 50, maximum 200 (proto int32)",
            "format": "int32",
            "title": "record_limit",
            "type": "integer"
          },
          "stockCode": {
            "description": "optional exact stock filter (per-stock evidence dossier) (proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GetIndustryIntelligenceRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetIndustryIntelligenceResponse": {
        "additionalProperties": false,
        "properties": {
          "entityTotals": {
            "description": "(proto shorts.v1alpha1.IndustryIntelligenceEntityTotal)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.IndustryIntelligenceEntityTotal"
            },
            "title": "entity_totals",
            "type": "array"
          },
          "generatedAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "generated_at"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "records": {
            "description": "(proto shorts.v1alpha1.IndustryIntelligenceRecord)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.IndustryIntelligenceRecord"
            },
            "title": "records",
            "type": "array"
          },
          "sourceAttribution": {
            "description": "(proto string)",
            "title": "source_attribution",
            "type": "string"
          },
          "sources": {
            "description": "(proto shorts.v1alpha1.IndustryIntelligenceSource)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.IndustryIntelligenceSource"
            },
            "title": "sources",
            "type": "array"
          },
          "timeBuckets": {
            "description": "(proto shorts.v1alpha1.IndustryIntelligenceTimeBucket)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.IndustryIntelligenceTimeBucket"
            },
            "title": "time_buckets",
            "type": "array"
          }
        },
        "title": "GetIndustryIntelligenceResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetIndustryTreeMapRequest": {
        "additionalProperties": false,
        "description": "Request for Top10 RPC, specifying the period of time.",
        "properties": {
          "limit": {
            "description": "number of stocks to return for each parent (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "period": {
            "description": "time over which to look at the max value (proto string)",
            "title": "period",
            "type": "string"
          },
          "viewMode": {
            "$ref": "#/components/schemas/shorts.v1alpha1.ViewMode",
            "description": "(proto shorts.v1alpha1.ViewMode)",
            "title": "view_mode"
          }
        },
        "title": "GetIndustryTreeMapRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetMarketByDateRequest": {
        "additionalProperties": false,
        "description": "Request for GetMarketByDate RPC",
        "properties": {
          "date": {
            "description": "YYYY-MM-DD format (proto string)",
            "title": "date",
            "type": "string"
          },
          "limit": {
            "description": "Max stocks to return (default 50) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "Pagination offset (proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          }
        },
        "title": "GetMarketByDateRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetMarketByDateResponse": {
        "additionalProperties": false,
        "description": "Response for GetMarketByDate RPC",
        "properties": {
          "date": {
            "description": "(proto string)",
            "title": "date",
            "type": "string"
          },
          "nextDate": {
            "description": "Next trading date for navigation (proto string)",
            "title": "next_date",
            "type": "string"
          },
          "previousDate": {
            "description": "Previous trading date for navigation (proto string)",
            "title": "previous_date",
            "type": "string"
          },
          "stocks": {
            "description": "(proto stocks.v1alpha1.Stock)",
            "items": {
              "$ref": "#/components/schemas/stocks.v1alpha1.Stock"
            },
            "title": "stocks",
            "type": "array"
          },
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          }
        },
        "title": "GetMarketByDateResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetMarketNewsRequest": {
        "additionalProperties": false,
        "description": "Request for GetMarketNews RPC",
        "properties": {
          "limit": {
            "description": "Max articles to return (default 50) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "priceSensitiveOnly": {
            "description": "Only return price-sensitive news (proto bool)",
            "title": "price_sensitive_only",
            "type": "boolean"
          },
          "source": {
            "description": "Optional filter by source (proto string)",
            "title": "source",
            "type": "string"
          }
        },
        "title": "GetMarketNewsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetMarketNewsResponse": {
        "additionalProperties": false,
        "description": "Response for GetMarketNews RPC",
        "properties": {
          "articles": {
            "description": "(proto shorts.v1alpha1.NewsArticle)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.NewsArticle"
            },
            "title": "articles",
            "type": "array"
          },
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          }
        },
        "title": "GetMarketNewsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetParliamentOverviewRequest": {
        "additionalProperties": false,
        "title": "GetParliamentOverviewRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetParliamentOverviewResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "newest lodgement we hold (proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "declaredRowCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "declared_row_count",
            "type": "integer"
          },
          "firstParliament": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "first_parliament",
            "type": "integer"
          },
          "lastParliament": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "last_parliament",
            "type": "integer"
          },
          "politicianCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "politician_count",
            "type": "integer"
          },
          "refreshedAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "when our snapshot was built (proto google.protobuf.Timestamp)",
            "title": "refreshed_at"
          },
          "resolvedListedCount": {
            "description": "distinct companies publishably resolved (proto int32)",
            "format": "int32",
            "title": "resolved_listed_count",
            "type": "integer"
          },
          "resolvedSuburbCount": {
            "description": "distinct suburbs publishably resolved (proto int32)",
            "format": "int32",
            "title": "resolved_suburb_count",
            "type": "integer"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "statementCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "statement_count",
            "type": "integer"
          }
        },
        "title": "GetParliamentOverviewResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetPeerComparisonRequest": {
        "additionalProperties": false,
        "description": "Request for GetPeerComparison RPC",
        "properties": {
          "limit": {
            "description": "Number of peers (default 5) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "stockCode": {
            "description": "ASX stock code to compare (proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GetPeerComparisonRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetPeerComparisonResponse": {
        "additionalProperties": false,
        "description": "Response for GetPeerComparison RPC",
        "properties": {
          "industry": {
            "description": "Common industry (proto string)",
            "title": "industry",
            "type": "string"
          },
          "peers": {
            "description": "Industry peers (proto shorts.v1alpha1.PeerStock)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PeerStock"
            },
            "title": "peers",
            "type": "array"
          },
          "subject": {
            "$ref": "#/components/schemas/shorts.v1alpha1.PeerStock",
            "description": "The stock being compared (proto shorts.v1alpha1.PeerStock)",
            "title": "subject"
          }
        },
        "title": "GetPeerComparisonResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetPoliticianAnalyticsRequest": {
        "additionalProperties": false,
        "properties": {
          "currentOnly": {
            "description": "Restrict to interests declared as current, rather than every interest ever\n declared across parliaments 44-48. (proto bool)",
            "title": "current_only",
            "type": "boolean"
          },
          "topIndustries": {
            "description": "Cap the industry axis to the N most-declared, so the heatmap stays readable.\n The remainder is NOT silently dropped — the response reports what was cut. (proto int32)",
            "format": "int32",
            "title": "top_industries",
            "type": "integer"
          }
        },
        "title": "GetPoliticianAnalyticsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetPoliticianAnalyticsResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "cells": {
            "description": "(proto shorts.v1alpha1.PartyIndustryCell)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PartyIndustryCell"
            },
            "title": "cells",
            "type": "array"
          },
          "industries": {
            "description": "The axes, pre-ordered, so the client does not re-derive an ordering and\n silently disagree with the server about which industries were included. (proto shorts.v1alpha1.IndustryTotal)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.IndustryTotal"
            },
            "title": "industries",
            "type": "array"
          },
          "industriesOmitted": {
            "description": "Industries excluded by top_industries, stated rather than dropped silently. (proto int32)",
            "format": "int32",
            "title": "industries_omitted",
            "type": "integer"
          },
          "parties": {
            "description": "(proto shorts.v1alpha1.PartyTotal)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PartyTotal"
            },
            "title": "parties",
            "type": "array"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "states": {
            "description": "(proto shorts.v1alpha1.StateTotal)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.StateTotal"
            },
            "title": "states",
            "type": "array"
          }
        },
        "title": "GetPoliticianAnalyticsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetPoliticianExplorerProfileRequest": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "description": "(proto string)",
            "title": "slug",
            "type": "string"
          },
          "topIndustries": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "top_industries",
            "type": "integer"
          }
        },
        "title": "GetPoliticianExplorerProfileRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetPoliticianExplorerProfileResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "canonicalSlug": {
            "description": "(proto string)",
            "title": "canonical_slug",
            "type": "string"
          },
          "extractedParliaments": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "extracted_parliaments",
            "type": "array"
          },
          "holderCounts": {
            "description": "(proto shorts.v1alpha1.RegisterHolderCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolderCount"
            },
            "title": "holder_counts",
            "type": "array"
          },
          "industryCounts": {
            "description": "(proto shorts.v1alpha1.RegisterIndustryCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterIndustryCount"
            },
            "title": "industry_counts",
            "type": "array"
          },
          "itemCounts": {
            "description": "(proto shorts.v1alpha1.RegisterItemCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterItemCount"
            },
            "title": "item_counts",
            "type": "array"
          },
          "partialParliaments": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "partial_parliaments",
            "type": "array"
          },
          "pendingParliaments": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "pending_parliaments",
            "type": "array"
          },
          "politician": {
            "$ref": "#/components/schemas/shorts.v1alpha1.Politician",
            "description": "(proto shorts.v1alpha1.Politician)",
            "title": "politician"
          },
          "recentChanges": {
            "description": "(proto shorts.v1alpha1.RegisterChangeEvent)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterChangeEvent"
            },
            "title": "recent_changes",
            "type": "array"
          },
          "sourceDocuments": {
            "description": "(proto shorts.v1alpha1.RegisterSourceDocument)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterSourceDocument"
            },
            "title": "source_documents",
            "type": "array"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "terms": {
            "description": "(proto shorts.v1alpha1.PoliticianTerm)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianTerm"
            },
            "title": "terms",
            "type": "array"
          },
          "timeline": {
            "description": "(proto shorts.v1alpha1.RegisterMonthlyCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterMonthlyCount"
            },
            "title": "timeline",
            "type": "array"
          },
          "undatedCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "undated_count",
            "type": "integer"
          }
        },
        "title": "GetPoliticianExplorerProfileResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetPoliticianFundingRequest": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "description": "(proto string)",
            "title": "slug",
            "type": "string"
          }
        },
        "title": "GetPoliticianFundingRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetPoliticianFundingResponse": {
        "additionalProperties": false,
        "properties": {
          "annualReturns": {
            "description": "ONLY returns that name this member. Party money is never attributed here. (proto shorts.v1alpha1.MemberAnnualReturn)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.MemberAnnualReturn"
            },
            "title": "annual_returns",
            "type": "array"
          },
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "attribution": {
            "description": "(proto string)",
            "title": "attribution",
            "type": "string"
          },
          "attributionNote": {
            "description": "Money given to a party is not money given to a member. (proto string)",
            "title": "attribution_note",
            "type": "string"
          },
          "candidateReturns": {
            "description": "(proto shorts.v1alpha1.CandidateElectionReturn)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.CandidateElectionReturn"
            },
            "title": "candidate_returns",
            "type": "array"
          },
          "canonicalSlug": {
            "description": "Echoed from the store like GetPolitician's, so a consumer redirects on a\n retired slug rather than deriving one. (proto string)",
            "title": "canonical_slug",
            "type": "string"
          },
          "censoringNote": {
            "description": "(proto string)",
            "title": "censoring_note",
            "type": "string"
          },
          "coverageNote": {
            "description": "Always served, empty response or not: this layer is thin and a surface that\n does not state its coverage lies by construction. (proto string)",
            "title": "coverage_note",
            "type": "string"
          },
          "reformNote": {
            "description": "(proto string)",
            "title": "reform_note",
            "type": "string"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "verbatimNote": {
            "description": "(proto string)",
            "title": "verbatim_note",
            "type": "string"
          }
        },
        "title": "GetPoliticianFundingResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetPoliticianRequest": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "description": "(proto string)",
            "title": "slug",
            "type": "string"
          }
        },
        "title": "GetPoliticianRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetPoliticianResponse": {
        "additionalProperties": false,
        "properties": {
          "canonicalSlug": {
            "description": "consumers redirect when it differs from the request (proto string)",
            "title": "canonical_slug",
            "type": "string"
          },
          "extractedParliaments": {
            "description": "Extraction coverage FOR THIS PERSON, so a consumer can never present\n \"declared nothing\" when the truth is \"not yet read\".\n\n A member's register documents are discovered long before they are parsed\n (the 44th and 45th Parliaments are scans awaiting the vision tier). Without\n these two lists an empty `interests` is indistinguishable from a member who\n genuinely declared nothing — an absence claim about a named individual,\n which influence-editorial-standards forbids.\n Three buckets, not two, and the threshold is a SHARE not \"any\".\n\n A parliament where one document out of 155 parsed is not a parliament we\n have read. Claiming it would make every member whose own document failed to\n parse render an empty list under a heading that says we looked — a false\n absence claim about a named individual. read in full (\u003e= 95% of documents) (proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "extracted_parliaments",
            "type": "array"
          },
          "interests": {
            "description": "(proto shorts.v1alpha1.DeclaredInterest)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.DeclaredInterest"
            },
            "title": "interests",
            "type": "array"
          },
          "partialParliaments": {
            "description": "read in part — an empty list here proves nothing (proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "partial_parliaments",
            "type": "array"
          },
          "pendingParliaments": {
            "description": "documents exist, none read (proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "pending_parliaments",
            "type": "array"
          },
          "politician": {
            "$ref": "#/components/schemas/shorts.v1alpha1.Politician",
            "description": "(proto shorts.v1alpha1.Politician)",
            "title": "politician"
          },
          "representedSuburbs": {
            "description": "Suburbs in the member's division, from the ABS boundary join. These are\n suburbs REPRESENTED, which has nothing to do with anything owned. (proto string)",
            "items": {
              "type": "string"
            },
            "title": "represented_suburbs",
            "type": "array"
          },
          "terms": {
            "description": "(proto shorts.v1alpha1.PoliticianTerm)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianTerm"
            },
            "title": "terms",
            "type": "array"
          }
        },
        "title": "GetPoliticianResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetPriceDropsOverviewRequest": {
        "additionalProperties": false,
        "title": "GetPriceDropsOverviewRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetPriceDropsOverviewResponse": {
        "additionalProperties": false,
        "properties": {
          "national": {
            "$ref": "#/components/schemas/shorts.v1alpha1.StatePriceDropSummary",
            "description": "the 'AU' row (proto shorts.v1alpha1.StatePriceDropSummary)",
            "title": "national"
          },
          "states": {
            "description": "ordered by dropped_count desc (proto shorts.v1alpha1.StatePriceDropSummary)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.StatePriceDropSummary"
            },
            "title": "states",
            "type": "array"
          }
        },
        "title": "GetPriceDropsOverviewResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetPropertyHistoryRequest": {
        "additionalProperties": false,
        "properties": {
          "addressKey": {
            "description": "(proto string)",
            "title": "address_key",
            "type": "string"
          }
        },
        "title": "GetPropertyHistoryRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetPropertyHistoryResponse": {
        "additionalProperties": false,
        "description": "Full price timeline for a single physical address (stable address_key),\n across all its listings and relists. Derived from ToS-restricted listing\n rows — deep-links OUT to the live portal page rather than reproducing the\n listing; flag-gated the same way as ListSuburbDropListings.",
        "properties": {
          "addressKey": {
            "description": "(proto string)",
            "title": "address_key",
            "type": "string"
          },
          "current": {
            "$ref": "#/components/schemas/shorts.v1alpha1.PropertyListingSnapshot",
            "description": "most-recent active listing (or most-recent if none active) (proto shorts.v1alpha1.PropertyListingSnapshot)",
            "title": "current"
          },
          "currentPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "current_price",
            "type": "number"
          },
          "displayAddress": {
            "description": "(proto string)",
            "title": "display_address",
            "type": "string"
          },
          "distinctDwellings": {
            "description": "Distinct KNOWN bedroom counts seen under this address_key (NULL/0 excluded).\n \u003e1 means the portal likely listed multiple differently-sized units of one\n building WITHOUT a unit number, so this timeline may blend more than one\n physical dwelling. Counting bedrooms (not raw bed/bath/type tuples) keeps\n cross-portal label noise from falsely flagging a single dwelling. A search-\n results crawl cannot recover the missing unit number, so the view warns\n instead of silently merging. See docs/feature/housing/architecture.md. (proto int32)",
            "format": "int32",
            "title": "distinct_dwellings",
            "type": "integer"
          },
          "events": {
            "description": "full timeline across ALL its listings, ordered observed_at asc (proto shorts.v1alpha1.PropertyPriceEvent)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PropertyPriceEvent"
            },
            "title": "events",
            "type": "array"
          },
          "firstPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "first_price",
            "type": "number"
          },
          "numListings": {
            "description": "distinct source+listing_id at this address (proto int32)",
            "format": "int32",
            "title": "num_listings",
            "type": "integer"
          },
          "postcode": {
            "description": "(proto string)",
            "title": "postcode",
            "type": "string"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          },
          "suburb": {
            "description": "(proto string)",
            "title": "suburb",
            "type": "string"
          },
          "valuation": {
            "$ref": "#/components/schemas/shorts.v1alpha1.PropertyValuation",
            "description": "AVM valuation for this address (property.com.au). Unset when none exists,\n fetch_status != 'ok', or HOUSING_VALUATIONS_ENABLED is off. (proto shorts.v1alpha1.PropertyValuation)",
            "title": "valuation"
          }
        },
        "title": "GetPropertyHistoryResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetRegisterActivityRequest": {
        "additionalProperties": false,
        "properties": {
          "chamber": {
            "description": "'house' | 'senate' (proto string)",
            "title": "chamber",
            "type": "string"
          },
          "itemNo": {
            "description": "register form item 1-14; 0 = all (proto int32)",
            "format": "int32",
            "title": "item_no",
            "type": "integer"
          },
          "kind": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RegisterChangeKind",
            "description": "UNSPECIFIED = both (proto shorts.v1alpha1.RegisterChangeKind)",
            "title": "kind"
          },
          "partyAb": {
            "description": "AEC abbreviation (proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "politicianSlug": {
            "description": "The SAME filter set ListRegisterChanges takes, and for one reason: the\n weekly strip is drawn above a FILTERED feed, so parliament-wide numbers\n rendered there read as the filtered member's own. All optional and all\n ADDITIVE — an unfiltered request is byte-identical to the old behaviour.\n\n They narrow the WEEKLY BUCKETS, filtered_event_count and\n filtered_member_count only. The three rails (active_members,\n newly_declared_companies, declarer_count_changes) are NOT narrowed by the\n filters: they answer corpus-wide questions inside the window, and a\n \"most active members\" rail filtered to one member would be a tautology. canonical slug; consumers never derive one (proto string)",
            "title": "politician_slug",
            "type": "string"
          },
          "windowDays": {
            "description": "30 | 90 | 180 | 365. Anything else is clamped to the next value up (0 and\n negatives default to 90), so a cache key can never describe a window other\n than the one that produced it. (proto int32)",
            "format": "int32",
            "title": "window_days",
            "type": "integer"
          }
        },
        "title": "GetRegisterActivityRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetRegisterActivityResponse": {
        "additionalProperties": false,
        "properties": {
          "activeMembers": {
            "description": "The three rails below are CORPUS-WIDE and window-scoped: the request's\n filters do not narrow them. (proto shorts.v1alpha1.ActiveMember)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.ActiveMember"
            },
            "title": "active_members",
            "type": "array"
          },
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "declarerCountChanges": {
            "description": "(proto shorts.v1alpha1.DeclarerCountChange)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.DeclarerCountChange"
            },
            "title": "declarer_count_changes",
            "type": "array"
          },
          "filteredEventCount": {
            "description": "Dated events matching the request's filters inside the window. Equal to the\n sum of every bucket's added_count + removed_count, so a count line beside\n the strip states the strip's own total and not the parliament's. (proto int32)",
            "format": "int32",
            "title": "filtered_event_count",
            "type": "integer"
          },
          "filteredMemberCount": {
            "description": "DISTINCT members with at least one such event — PEOPLE, never rows. A\n surface can state it exactly instead of counting the members it happens to\n have rendered, which is always a floor. (proto int32)",
            "format": "int32",
            "title": "filtered_member_count",
            "type": "integer"
          },
          "newlyDeclaredCompanies": {
            "description": "(proto shorts.v1alpha1.NewlyDeclaredCompany)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.NewlyDeclaredCompany"
            },
            "title": "newly_declared_companies",
            "type": "array"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "undatedCurrentCount": {
            "description": "Currently-declared rows with no known start date, and therefore absent from\n every measure above. Stated rather than dropped silently: a surface must be\n able to caption what its timeline does not contain. (proto int32)",
            "format": "int32",
            "title": "undated_current_count",
            "type": "integer"
          },
          "weeks": {
            "description": "Contiguous Monday buckets, NARROWED BY THE REQUEST'S FILTERS. The first\n bucket is the Monday on or before (today - window_days), so no bucket is a\n partial week drawn as a full one. (proto shorts.v1alpha1.WeeklyEventCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyEventCount"
            },
            "title": "weeks",
            "type": "array"
          },
          "windowDays": {
            "description": "the clamped window actually used (proto int32)",
            "format": "int32",
            "title": "window_days",
            "type": "integer"
          }
        },
        "title": "GetRegisterActivityResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetRegisterExplorerRequest": {
        "additionalProperties": false,
        "title": "GetRegisterExplorerRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetRegisterExplorerResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "changes30d": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "changes_30d",
            "type": "integer"
          },
          "changes7d": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "changes_7d",
            "type": "integer"
          },
          "currentDeclaredCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "current_declared_count",
            "type": "integer"
          },
          "declaredRowCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "declared_row_count",
            "type": "integer"
          },
          "distinctCompanyCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "distinct_company_count",
            "type": "integer"
          },
          "extractedParliaments": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "extracted_parliaments",
            "type": "array"
          },
          "firstParliament": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "first_parliament",
            "type": "integer"
          },
          "giftsTravelCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "gifts_travel_count",
            "type": "integer"
          },
          "holderCounts": {
            "description": "(proto shorts.v1alpha1.RegisterHolderCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolderCount"
            },
            "title": "holder_counts",
            "type": "array"
          },
          "industryTrends": {
            "description": "(proto shorts.v1alpha1.RegisterIndustryTrend)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterIndustryTrend"
            },
            "title": "industry_trends",
            "type": "array"
          },
          "itemCounts": {
            "description": "(proto shorts.v1alpha1.RegisterItemCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterItemCount"
            },
            "title": "item_counts",
            "type": "array"
          },
          "lastParliament": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "last_parliament",
            "type": "integer"
          },
          "liabilityCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "liability_count",
            "type": "integer"
          },
          "membersChanged30d": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "members_changed_30d",
            "type": "integer"
          },
          "membersChanged7d": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "members_changed_7d",
            "type": "integer"
          },
          "partialParliaments": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "partial_parliaments",
            "type": "array"
          },
          "pendingParliaments": {
            "description": "(proto int32)",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "title": "pending_parliaments",
            "type": "array"
          },
          "politicianCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "politician_count",
            "type": "integer"
          },
          "propertyCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "property_count",
            "type": "integer"
          },
          "resolvedListedCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "resolved_listed_count",
            "type": "integer"
          },
          "resolvedSuburbCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "resolved_suburb_count",
            "type": "integer"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "statementCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "statement_count",
            "type": "integer"
          }
        },
        "title": "GetRegisterExplorerResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetRelatedNewsRequest": {
        "additionalProperties": false,
        "description": "Request for GetRelatedNews RPC",
        "properties": {
          "articleId": {
            "description": "Optional anchor article id; if empty, uses the stock's latest article (proto string)",
            "title": "article_id",
            "type": "string"
          },
          "limit": {
            "description": "Max related articles to return (default 6) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "stockCode": {
            "description": "ASX stock code (e.g., \"BHP\") (proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GetRelatedNewsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetRelatedNewsResponse": {
        "additionalProperties": false,
        "description": "Response for GetRelatedNews RPC",
        "properties": {
          "articles": {
            "description": "ordered nearest-first by semantic similarity (proto shorts.v1alpha1.NewsArticle)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.NewsArticle"
            },
            "title": "articles",
            "type": "array"
          }
        },
        "title": "GetRelatedNewsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetShortCampaignScoreboardRequest": {
        "additionalProperties": false,
        "description": "Request for GetShortCampaignScoreboard RPC",
        "properties": {
          "industry": {
            "description": "optional exact industry filter (proto string)",
            "title": "industry",
            "type": "string"
          },
          "limit": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          }
        },
        "title": "GetShortCampaignScoreboardRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetShortCampaignScoreboardResponse": {
        "additionalProperties": false,
        "description": "Response for GetShortCampaignScoreboard RPC",
        "properties": {
          "campaigns": {
            "description": "(proto shorts.v1alpha1.ShortCampaign)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.ShortCampaign"
            },
            "title": "campaigns",
            "type": "array"
          },
          "campaignsTotal": {
            "description": "campaigns considered for the win-rate stats (proto int32)",
            "format": "int32",
            "title": "campaigns_total",
            "type": "integer"
          },
          "shortsWinRate3m": {
            "description": "percent (0-100) of scored campaigns where the price fell after 3 months (proto double)",
            "format": "double",
            "title": "shorts_win_rate_3m",
            "type": "number"
          },
          "shortsWinRate6m": {
            "description": "percent (0-100) of scored campaigns where the price fell after 6 months (proto double)",
            "format": "double",
            "title": "shorts_win_rate_6m",
            "type": "number"
          },
          "totalCount": {
            "description": "campaigns matching the filter (proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          }
        },
        "title": "GetShortCampaignScoreboardResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetStateCompanyAggregatesRequest": {
        "additionalProperties": false,
        "title": "GetStateCompanyAggregatesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStateCompanyAggregatesResponse": {
        "additionalProperties": false,
        "properties": {
          "aggregates": {
            "description": "(proto shorts.v1alpha1.StateCompanyAggregate)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.StateCompanyAggregate"
            },
            "title": "aggregates",
            "type": "array"
          }
        },
        "title": "GetStateCompanyAggregatesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockDataRequest": {
        "additionalProperties": false,
        "description": "Request for GetStockDataRequest RPC, specifying the product code.",
        "properties": {
          "period": {
            "description": "(proto string)",
            "title": "period",
            "type": "string"
          },
          "productCode": {
            "description": "(proto string)",
            "title": "product_code",
            "type": "string"
          }
        },
        "title": "GetStockDataRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockDetailsRequest": {
        "additionalProperties": false,
        "description": "Request for GetStockDetails RPC, specifying the product code.",
        "properties": {
          "productCode": {
            "description": "(proto string)",
            "title": "product_code",
            "type": "string"
          }
        },
        "title": "GetStockDetailsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockFinancialHighlightsRequest": {
        "additionalProperties": false,
        "description": "Request for GetStockFinancialHighlights RPC",
        "properties": {
          "maxReportsPerStock": {
            "description": "Max reports to return per stock (default 2) (proto int32)",
            "format": "int32",
            "title": "max_reports_per_stock",
            "type": "integer"
          },
          "stockCodes": {
            "description": "ASX stock codes (e.g., [\"DMP\", \"BHP\"]) (proto string)",
            "items": {
              "type": "string"
            },
            "title": "stock_codes",
            "type": "array"
          }
        },
        "title": "GetStockFinancialHighlightsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockFinancialHighlightsResponse": {
        "additionalProperties": false,
        "description": "Response for GetStockFinancialHighlights RPC",
        "properties": {
          "highlights": {
            "additionalProperties": {
              "$ref": "#/components/schemas/shorts.v1alpha1.StockFinancialHighlights",
              "description": "(proto shorts.v1alpha1.StockFinancialHighlights)",
              "title": "value"
            },
            "description": "stock_code → highlights (proto shorts.v1alpha1.GetStockFinancialHighlightsResponse.HighlightsEntry)",
            "title": "highlights",
            "type": "object"
          }
        },
        "title": "GetStockFinancialHighlightsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockGraphRequest": {
        "additionalProperties": false,
        "description": "Request for GetStockGraph RPC",
        "properties": {
          "limit": {
            "description": "max people / similar companies to return (default 12) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GetStockGraphRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockGraphResponse": {
        "additionalProperties": false,
        "description": "Response for GetStockGraph RPC",
        "properties": {
          "people": {
            "description": "(proto shorts.v1alpha1.GraphPerson)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.GraphPerson"
            },
            "title": "people",
            "type": "array"
          },
          "similarCompanies": {
            "description": "(proto shorts.v1alpha1.GraphPeer)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.GraphPeer"
            },
            "title": "similar_companies",
            "type": "array"
          }
        },
        "title": "GetStockGraphResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockNewsRequest": {
        "additionalProperties": false,
        "description": "Request for GetStockNews RPC",
        "properties": {
          "limit": {
            "description": "Max articles to return (default 20) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "sentiment": {
            "description": "Optional filter by sentiment (proto string)",
            "title": "sentiment",
            "type": "string"
          },
          "source": {
            "description": "Optional filter by source (proto string)",
            "title": "source",
            "type": "string"
          },
          "stockCode": {
            "description": "ASX stock code (e.g., \"BHP\") (proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GetStockNewsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockNewsResponse": {
        "additionalProperties": false,
        "description": "Response for GetStockNews RPC",
        "properties": {
          "articles": {
            "description": "(proto shorts.v1alpha1.NewsArticle)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.NewsArticle"
            },
            "title": "articles",
            "type": "array"
          },
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          }
        },
        "title": "GetStockNewsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockRequest": {
        "additionalProperties": false,
        "description": "Request for GetStockSummary RPC, specifying the product code.",
        "properties": {
          "productCode": {
            "description": "(proto string)",
            "title": "product_code",
            "type": "string"
          }
        },
        "title": "GetStockRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockSignalsRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "max signals per polarity (default 10) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GetStockSignalsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockSignalsResponse": {
        "additionalProperties": false,
        "properties": {
          "adverse": {
            "description": "(proto shorts.v1alpha1.StockSignal)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.StockSignal"
            },
            "title": "adverse",
            "type": "array"
          },
          "positive": {
            "description": "(proto shorts.v1alpha1.StockSignal)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.StockSignal"
            },
            "title": "positive",
            "type": "array"
          }
        },
        "title": "GetStockSignalsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockVerdictRequest": {
        "additionalProperties": false,
        "description": "Request for GetStockVerdict RPC",
        "properties": {
          "productCode": {
            "description": "(proto string)",
            "title": "product_code",
            "type": "string"
          }
        },
        "title": "GetStockVerdictRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetStockVerdictResponse": {
        "additionalProperties": false,
        "description": "Response for GetStockVerdict RPC",
        "properties": {
          "components": {
            "description": "(proto shorts.v1alpha1.VerdictComponent)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.VerdictComponent"
            },
            "title": "components",
            "type": "array"
          },
          "composite": {
            "description": "-100..100, bullish positive (proto double)",
            "format": "double",
            "title": "composite",
            "type": "number"
          },
          "label": {
            "$ref": "#/components/schemas/shorts.v1alpha1.VerdictLabel",
            "description": "(proto shorts.v1alpha1.VerdictLabel)",
            "title": "label"
          },
          "productCode": {
            "description": "(proto string)",
            "title": "product_code",
            "type": "string"
          }
        },
        "title": "GetStockVerdictResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetSuburbIndexRequest": {
        "additionalProperties": false,
        "description": "The stable identity/label spine for one state's columnar suburb data. Entries\n are always ordered lexically by sal_code, never by display name.",
        "properties": {
          "stateCode": {
            "description": "'NSW' | 'VIC' | ... (required) (proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "GetSuburbIndexRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetSuburbIndexResponse": {
        "additionalProperties": false,
        "properties": {
          "indexVersion": {
            "description": "Short v1 SHA-256 prefix derived only from the sorted sal_code set. (proto string)",
            "title": "index_version",
            "type": "string"
          },
          "suburbs": {
            "description": "(proto shorts.v1alpha1.SuburbIndexEntry)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbIndexEntry"
            },
            "title": "suburbs",
            "type": "array"
          }
        },
        "title": "GetSuburbIndexResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetSuburbMetricColumnsRequest": {
        "additionalProperties": false,
        "properties": {
          "metricKeys": {
            "description": "exact keys from the closed server registry (proto string)",
            "items": {
              "type": "string"
            },
            "title": "metric_keys",
            "type": "array"
          },
          "stateCode": {
            "description": "required (proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "GetSuburbMetricColumnsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetSuburbMetricColumnsResponse": {
        "additionalProperties": false,
        "properties": {
          "columns": {
            "description": "(proto shorts.v1alpha1.SuburbMetricColumn)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbMetricColumn"
            },
            "title": "columns",
            "type": "array"
          },
          "indexVersion": {
            "description": "Must equal the current GetSuburbIndex version before values are aligned. (proto string)",
            "title": "index_version",
            "type": "string"
          }
        },
        "title": "GetSuburbMetricColumnsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetSuburbProfileRequest": {
        "additionalProperties": false,
        "properties": {
          "salCode": {
            "description": "required (proto string)",
            "title": "sal_code",
            "type": "string"
          }
        },
        "title": "GetSuburbProfileRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetSuburbProfileResponse": {
        "additionalProperties": false,
        "properties": {
          "banner": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbBanner",
            "description": "editorial banner header (archetype, blurb, landmarks) (proto shorts.v1alpha1.SuburbBanner)",
            "title": "banner"
          },
          "baselines": {
            "$ref": "#/components/schemas/shorts.v1alpha1.ComparisonBaselines",
            "description": "(proto shorts.v1alpha1.ComparisonBaselines)",
            "title": "baselines"
          },
          "council": {
            "$ref": "#/components/schemas/shorts.v1alpha1.LgaInfo",
            "description": "council this suburb sits in ('' if unmatched) (proto shorts.v1alpha1.LgaInfo)",
            "title": "council"
          },
          "crime": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbCrime",
            "description": "null when the suburb has no gated crime data (proto shorts.v1alpha1.SuburbCrime)",
            "title": "crime"
          },
          "demographics": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbDemographics",
            "description": "(proto shorts.v1alpha1.SuburbDemographics)",
            "title": "demographics"
          },
          "elevation": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbElevation",
            "description": "Profile-only measured terrain block; absent when the DEM sample is missing\n or below the collector's published cell-count quality floor. (proto shorts.v1alpha1.SuburbElevation)",
            "title": "elevation"
          },
          "listingStats": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbListingStats",
            "description": "Crawl-derived listing aggregates; null when the suburb is outside the crawl\n catalog or the HOUSING_DROP_LISTINGS_ENABLED kill switch is off. (proto shorts.v1alpha1.SuburbListingStats)",
            "title": "listing_stats"
          },
          "similar": {
            "description": "most-similar suburbs nationally (knowledge graph) (proto shorts.v1alpha1.SimilarSuburb)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SimilarSuburb"
            },
            "title": "similar",
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbSummary",
            "description": "(proto shorts.v1alpha1.SuburbSummary)",
            "title": "summary"
          }
        },
        "title": "GetSuburbProfileResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetTopShortsRequest": {
        "additionalProperties": false,
        "description": "Request for Top10 RPC, specifying the period of time.",
        "properties": {
          "limit": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "period": {
            "description": "(proto string)",
            "title": "period",
            "type": "string"
          },
          "productCodes": {
            "description": "Optional explicit set of product codes to return time series for, INSTEAD\n of the top-`limit` ranking. Lets callers that already know which stocks\n they need (e.g. industry-crowding constituents) fetch just those series\n rather than every top-N stock's points. Ignored when empty. When set with\n summary_only=false, `limit`/`offset` are not applied to the code set. (proto string)",
            "items": {
              "type": "string"
            },
            "title": "product_codes",
            "type": "array"
          },
          "summaryOnly": {
            "description": "When true, returns only product code, name, and latest short position\n without time series points. Much faster and smaller response. (proto bool)",
            "title": "summary_only",
            "type": "boolean"
          }
        },
        "title": "GetTopShortsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetTopShortsResponse": {
        "additionalProperties": false,
        "description": "Response for Top10 RPC, including time series data for each of the top 10 short positions.",
        "properties": {
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "timeSeries": {
            "description": "(proto stocks.v1alpha1.TimeSeriesData)",
            "items": {
              "$ref": "#/components/schemas/stocks.v1alpha1.TimeSeriesData"
            },
            "title": "time_series",
            "type": "array"
          }
        },
        "title": "GetTopShortsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GetWeeklyReportRequest": {
        "additionalProperties": false,
        "description": "Request for GetWeeklyReport RPC",
        "properties": {
          "weekSlug": {
            "description": "ISO week format: \"2026-W06\" (proto string)",
            "title": "week_slug",
            "type": "string"
          }
        },
        "title": "GetWeeklyReportRequest",
        "type": "object"
      },
      "shorts.v1alpha1.GetWeeklyReportResponse": {
        "additionalProperties": false,
        "description": "Response for GetWeeklyReport RPC",
        "properties": {
          "citations": {
            "description": "(proto shorts.v1alpha1.WeeklyReportCitation)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyReportCitation"
            },
            "title": "citations",
            "type": "array"
          },
          "fallers": {
            "description": "(proto shorts.v1alpha1.WeeklyReportMover)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyReportMover"
            },
            "title": "fallers",
            "type": "array"
          },
          "faqs": {
            "description": "(proto shorts.v1alpha1.WeeklyReportFAQ)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyReportFAQ"
            },
            "title": "faqs",
            "type": "array"
          },
          "headline": {
            "description": "(proto string)",
            "title": "headline",
            "type": "string"
          },
          "industryBreakdown": {
            "description": "(proto shorts.v1alpha1.WeeklyIndustryStat)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyIndustryStat"
            },
            "title": "industry_breakdown",
            "type": "array"
          },
          "marketStats": {
            "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyMarketStats",
            "description": "(proto shorts.v1alpha1.WeeklyMarketStats)",
            "title": "market_stats"
          },
          "narrative": {
            "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyNarrative",
            "description": "(proto shorts.v1alpha1.WeeklyNarrative)",
            "title": "narrative"
          },
          "previousDate": {
            "description": "YYYY-MM-DD of previous week's latest trading day (proto string)",
            "title": "previous_date",
            "type": "string"
          },
          "qualityScore": {
            "description": "(proto double)",
            "format": "double",
            "title": "quality_score",
            "type": "number"
          },
          "reportDate": {
            "description": "YYYY-MM-DD of latest trading day in the week (proto string)",
            "title": "report_date",
            "type": "string"
          },
          "risers": {
            "description": "(proto shorts.v1alpha1.WeeklyReportMover)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyReportMover"
            },
            "title": "risers",
            "type": "array"
          },
          "summary": {
            "description": "(proto string)",
            "title": "summary",
            "type": "string"
          },
          "topShorted": {
            "description": "(proto shorts.v1alpha1.WeeklyReportStock)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyReportStock"
            },
            "title": "top_shorted",
            "type": "array"
          },
          "trendInsights": {
            "description": "(proto shorts.v1alpha1.WeeklyReportTrendInsight)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.WeeklyReportTrendInsight"
            },
            "title": "trend_insights",
            "type": "array"
          },
          "weekSlug": {
            "description": "(proto string)",
            "title": "week_slug",
            "type": "string"
          }
        },
        "title": "GetWeeklyReportResponse",
        "type": "object"
      },
      "shorts.v1alpha1.GraphPeer": {
        "additionalProperties": false,
        "description": "A narratively/semantically similar company",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "similarity": {
            "description": "(proto double)",
            "format": "double",
            "title": "similarity",
            "type": "number"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "GraphPeer",
        "type": "object"
      },
      "shorts.v1alpha1.GraphPerson": {
        "additionalProperties": false,
        "description": "A person connected to the stock (director/officer) with their other ASX roles",
        "properties": {
          "alsoAt": {
            "description": "OTHER stock codes this person is connected to (proto string)",
            "items": {
              "type": "string"
            },
            "title": "also_at",
            "type": "array"
          },
          "imageUrl": {
            "description": "(proto string)",
            "title": "image_url",
            "type": "string"
          },
          "linkedinUrl": {
            "description": "(proto string)",
            "title": "linkedin_url",
            "type": "string"
          },
          "name": {
            "description": "(proto string)",
            "title": "name",
            "type": "string"
          },
          "role": {
            "description": "(proto string)",
            "title": "role",
            "type": "string"
          }
        },
        "title": "GraphPerson",
        "type": "object"
      },
      "shorts.v1alpha1.HousePricePoint": {
        "additionalProperties": false,
        "properties": {
          "isPreliminary": {
            "description": "(proto bool)",
            "title": "is_preliminary",
            "type": "boolean"
          },
          "period": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "period"
          },
          "value": {
            "description": "(proto double)",
            "format": "double",
            "title": "value",
            "type": "number"
          }
        },
        "title": "HousePricePoint",
        "type": "object"
      },
      "shorts.v1alpha1.HousingMetric": {
        "additionalProperties": false,
        "description": "Latest observation for a region × measure with QoQ/YoY change (from mv_housing_headline).",
        "properties": {
          "dwellingType": {
            "description": "'all' | 'established_house' | 'attached' (proto string)",
            "title": "dwelling_type",
            "type": "string"
          },
          "isPreliminary": {
            "description": "(proto bool)",
            "title": "is_preliminary",
            "type": "boolean"
          },
          "measure": {
            "description": "'mean_price' | 'median_price' | 'price_index' | 'debt_to_income' (proto string)",
            "title": "measure",
            "type": "string"
          },
          "period": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "period"
          },
          "qoqPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "qoq_pct",
            "type": "number"
          },
          "regionCode": {
            "description": "'AUS' | 'NSW' | '1GSYD' (proto string)",
            "title": "region_code",
            "type": "string"
          },
          "regionName": {
            "description": "(proto string)",
            "title": "region_name",
            "type": "string"
          },
          "regionType": {
            "description": "'national' | 'state' | 'gccsa' (proto string)",
            "title": "region_type",
            "type": "string"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          },
          "unit": {
            "description": "'AUD' | 'index' | 'ratio' (proto string)",
            "title": "unit",
            "type": "string"
          },
          "value": {
            "description": "(proto double)",
            "format": "double",
            "title": "value",
            "type": "number"
          },
          "yoyPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "yoy_pct",
            "type": "number"
          }
        },
        "title": "HousingMetric",
        "type": "object"
      },
      "shorts.v1alpha1.HousingRegion": {
        "additionalProperties": false,
        "description": "A selectable house-price region (for the suburb explorer).",
        "properties": {
          "latestPeriod": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "latest_period"
          },
          "latestValue": {
            "description": "latest median_price (0 if none) (proto double)",
            "format": "double",
            "title": "latest_value",
            "type": "number"
          },
          "postcode": {
            "description": "(proto string)",
            "title": "postcode",
            "type": "string"
          },
          "regionCode": {
            "description": "'SUBURB:VIC-RICHMOND' | 'AUS' | '1GSYD' (proto string)",
            "title": "region_code",
            "type": "string"
          },
          "regionName": {
            "description": "(proto string)",
            "title": "region_name",
            "type": "string"
          },
          "regionType": {
            "description": "'national' | 'state' | 'gccsa' | 'suburb' | 'lga' (proto string)",
            "title": "region_type",
            "type": "string"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "HousingRegion",
        "type": "object"
      },
      "shorts.v1alpha1.IndustryIntelligenceEntityTotal": {
        "additionalProperties": false,
        "description": "Total per matched entity for one metric of one public-enabled source,\n ranked by total value (top entities only).",
        "properties": {
          "entityLabel": {
            "description": "(proto string)",
            "title": "entity_label",
            "type": "string"
          },
          "latestAsOf": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "latest_as_of",
            "type": "string"
          },
          "metricKey": {
            "description": "(proto string)",
            "title": "metric_key",
            "type": "string"
          },
          "recordCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "record_count",
            "type": "integer"
          },
          "signalKind": {
            "description": "(proto string)",
            "title": "signal_kind",
            "type": "string"
          },
          "sourceKey": {
            "description": "(proto string)",
            "title": "source_key",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "totalValue": {
            "description": "(proto double)",
            "format": "double",
            "title": "total_value",
            "type": "number"
          },
          "unit": {
            "description": "(proto string)",
            "title": "unit",
            "type": "string"
          }
        },
        "title": "IndustryIntelligenceEntityTotal",
        "type": "object"
      },
      "shorts.v1alpha1.IndustryIntelligenceRecord": {
        "additionalProperties": false,
        "properties": {
          "asOf": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "as_of",
            "type": "string"
          },
          "confidence": {
            "description": "(proto double)",
            "format": "double",
            "title": "confidence",
            "type": "number"
          },
          "entityAbn": {
            "description": "(proto string)",
            "title": "entity_abn",
            "type": "string"
          },
          "hasMetricValue": {
            "description": "(proto bool)",
            "title": "has_metric_value",
            "type": "boolean"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "metricKey": {
            "description": "(proto string)",
            "title": "metric_key",
            "type": "string"
          },
          "metricLabel": {
            "description": "(proto string)",
            "title": "metric_label",
            "type": "string"
          },
          "metricValue": {
            "description": "(proto double)",
            "format": "double",
            "title": "metric_value",
            "type": "number"
          },
          "periodEnd": {
            "description": "YYYY-MM-DD when present (proto string)",
            "title": "period_end",
            "type": "string"
          },
          "periodStart": {
            "description": "YYYY-MM-DD when present (proto string)",
            "title": "period_start",
            "type": "string"
          },
          "signalKind": {
            "description": "(proto string)",
            "title": "signal_kind",
            "type": "string"
          },
          "sourceKey": {
            "description": "(proto string)",
            "title": "source_key",
            "type": "string"
          },
          "sourceRecordId": {
            "description": "(proto string)",
            "title": "source_record_id",
            "type": "string"
          },
          "sourceUrl": {
            "description": "(proto string)",
            "title": "source_url",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "summary": {
            "description": "(proto string)",
            "title": "summary",
            "type": "string"
          },
          "title": {
            "description": "(proto string)",
            "title": "title",
            "type": "string"
          },
          "unit": {
            "description": "(proto string)",
            "title": "unit",
            "type": "string"
          }
        },
        "title": "IndustryIntelligenceRecord",
        "type": "object"
      },
      "shorts.v1alpha1.IndustryIntelligenceSource": {
        "additionalProperties": false,
        "properties": {
          "cadence": {
            "description": "(proto string)",
            "title": "cadence",
            "type": "string"
          },
          "displayName": {
            "description": "(proto string)",
            "title": "display_name",
            "type": "string"
          },
          "licence": {
            "description": "(proto string)",
            "title": "licence",
            "type": "string"
          },
          "publisher": {
            "description": "(proto string)",
            "title": "publisher",
            "type": "string"
          },
          "signalKind": {
            "description": "(proto string)",
            "title": "signal_kind",
            "type": "string"
          },
          "sourceKey": {
            "description": "(proto string)",
            "title": "source_key",
            "type": "string"
          },
          "sourceUrl": {
            "description": "(proto string)",
            "title": "source_url",
            "type": "string"
          }
        },
        "title": "IndustryIntelligenceSource",
        "type": "object"
      },
      "shorts.v1alpha1.IndustryIntelligenceTimeBucket": {
        "additionalProperties": false,
        "description": "Aggregated evidence per Australian financial year for one metric of one\n public-enabled source. Powers the industry intelligence dashboard charts\n without shipping every underlying record.",
        "properties": {
          "bucketLabel": {
            "description": "e.g. \"2023-24\" (Australian financial year) (proto string)",
            "title": "bucket_label",
            "type": "string"
          },
          "bucketStart": {
            "description": "YYYY-MM-DD (1 July opening the financial year) (proto string)",
            "title": "bucket_start",
            "type": "string"
          },
          "entityCount": {
            "description": "distinct matched stock codes in the bucket (proto int32)",
            "format": "int32",
            "title": "entity_count",
            "type": "integer"
          },
          "metricKey": {
            "description": "(proto string)",
            "title": "metric_key",
            "type": "string"
          },
          "metricLabel": {
            "description": "(proto string)",
            "title": "metric_label",
            "type": "string"
          },
          "recordCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "record_count",
            "type": "integer"
          },
          "signalKind": {
            "description": "(proto string)",
            "title": "signal_kind",
            "type": "string"
          },
          "sourceKey": {
            "description": "(proto string)",
            "title": "source_key",
            "type": "string"
          },
          "totalValue": {
            "description": "(proto double)",
            "format": "double",
            "title": "total_value",
            "type": "number"
          },
          "unit": {
            "description": "(proto string)",
            "title": "unit",
            "type": "string"
          },
          "zeroValueCount": {
            "description": "records reporting a genuine zero value (proto int32)",
            "format": "int32",
            "title": "zero_value_count",
            "type": "integer"
          }
        },
        "title": "IndustryIntelligenceTimeBucket",
        "type": "object"
      },
      "shorts.v1alpha1.IndustryTotal": {
        "additionalProperties": false,
        "properties": {
          "companies": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "companies",
            "type": "integer"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "people": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "people",
            "type": "integer"
          }
        },
        "title": "IndustryTotal",
        "type": "object"
      },
      "shorts.v1alpha1.InlineImage": {
        "additionalProperties": false,
        "description": "Inline image embedded in a Take body.",
        "properties": {
          "alt": {
            "description": "accessible alt text (proto string)",
            "title": "alt",
            "type": "string"
          },
          "topic": {
            "description": "editorial brief the image was generated from (proto string)",
            "title": "topic",
            "type": "string"
          },
          "url": {
            "description": "(proto string)",
            "title": "url",
            "type": "string"
          }
        },
        "title": "InlineImage",
        "type": "object"
      },
      "shorts.v1alpha1.LayoutImage": {
        "additionalProperties": false,
        "description": "An art-directed layout image with style/ratio/placement for bespoke\n editorial rendering. Stored in editorial_takes.layout_images.",
        "properties": {
          "anchorAfterBlock": {
            "description": "render after this 0-based body block (proto int32)",
            "format": "int32",
            "title": "anchor_after_block",
            "type": "integer"
          },
          "brief": {
            "description": "subject the image was generated from (proto string)",
            "title": "brief",
            "type": "string"
          },
          "caption": {
            "description": "editorial caption (proto string)",
            "title": "caption",
            "type": "string"
          },
          "placement": {
            "description": "full | left | right | inset (proto string)",
            "title": "placement",
            "type": "string"
          },
          "ratio": {
            "description": "landscape | portrait | square (proto string)",
            "title": "ratio",
            "type": "string"
          },
          "style": {
            "description": "documentary | aerial | still_life | isometric | archival | abstract | environmental (proto string)",
            "title": "style",
            "type": "string"
          },
          "url": {
            "description": "(proto string)",
            "title": "url",
            "type": "string"
          }
        },
        "title": "LayoutImage",
        "type": "object"
      },
      "shorts.v1alpha1.LgaInfo": {
        "additionalProperties": false,
        "description": "Local Government Area (council) a suburb belongs to (Local Insights, W2).",
        "properties": {
          "areaSqkm": {
            "description": "(proto double)",
            "format": "double",
            "title": "area_sqkm",
            "type": "number"
          },
          "assetRenewalRatio": {
            "description": "asset renewal + upgrade vs depreciation, % (proto double)",
            "format": "double",
            "title": "asset_renewal_ratio",
            "type": "number"
          },
          "avgRates": {
            "description": "Per-council financials (VIC LGPRF, CC-BY; 0/'' for states not yet sourced). average rate per property assessment, AUD (proto double)",
            "format": "double",
            "title": "avg_rates",
            "type": "number"
          },
          "fedFagAud": {
            "description": "federal Financial Assistance Grant (latest yr), AUD; 0 if unmatched (proto double)",
            "format": "double",
            "title": "fed_fag_aud",
            "type": "number"
          },
          "fedFagYear": {
            "description": "e.g. '2025-26' (proto string)",
            "title": "fed_fag_year",
            "type": "string"
          },
          "finSource": {
            "description": "financials provenance ('vic_lgprf'), '' if none (proto string)",
            "title": "fin_source",
            "type": "string"
          },
          "finYear": {
            "description": "financials reporting year, e.g. '2024-25' (proto string)",
            "title": "fin_year",
            "type": "string"
          },
          "lgaCode": {
            "description": "(proto string)",
            "title": "lga_code",
            "type": "string"
          },
          "lgaName": {
            "description": "(proto string)",
            "title": "lga_name",
            "type": "string"
          },
          "opSurplusRatio": {
            "description": "adjusted underlying (operating) result, % (negative = deficit) (proto double)",
            "format": "double",
            "title": "op_surplus_ratio",
            "type": "number"
          },
          "population": {
            "description": "summed from member-suburb Census populations (proto int32)",
            "format": "int32",
            "title": "population",
            "type": "integer"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "LgaInfo",
        "type": "object"
      },
      "shorts.v1alpha1.ListAddressPriceDropsRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "optional; default 50 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "sort": {
            "description": "'pct' (default) | 'abs' (biggest $ cut) | 'recent' (proto string)",
            "title": "sort",
            "type": "string"
          },
          "stateCode": {
            "description": "optional filter, e.g. 'VIC' (empty = all states) (proto string)",
            "title": "state_code",
            "type": "string"
          },
          "windowDays": {
            "description": "optional; default 90 (proto int32)",
            "format": "int32",
            "title": "window_days",
            "type": "integer"
          }
        },
        "title": "ListAddressPriceDropsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListAddressPriceDropsResponse": {
        "additionalProperties": false,
        "properties": {
          "addresses": {
            "description": "(proto shorts.v1alpha1.AddressPriceDrop)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.AddressPriceDrop"
            },
            "title": "addresses",
            "type": "array"
          }
        },
        "title": "ListAddressPriceDropsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListAgencyPriceStatsRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "optional; default 20, cap 100 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "sort": {
            "description": "'drops' (default) | 'listings' | 'avg_cut' | 'value' (proto string)",
            "title": "sort",
            "type": "string"
          },
          "stateCode": {
            "description": "optional filter, e.g. 'NSW'; '' = national (proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "ListAgencyPriceStatsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListAgencyPriceStatsResponse": {
        "additionalProperties": false,
        "properties": {
          "agencies": {
            "description": "(proto shorts.v1alpha1.AgencyPriceStats)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.AgencyPriceStats"
            },
            "title": "agencies",
            "type": "array"
          }
        },
        "title": "ListAgencyPriceStatsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListDistinctiveHoldingsRequest": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "description": "(proto string)",
            "title": "slug",
            "type": "string"
          }
        },
        "title": "ListDistinctiveHoldingsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListDistinctiveHoldingsResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "canonicalSlug": {
            "description": "consumers redirect when it differs from the request (proto string)",
            "title": "canonical_slug",
            "type": "string"
          },
          "disclosureNote": {
            "description": "The mandatory short-interest caveat, served WITH the data. Empty when no\n row carries a short percentage. (proto string)",
            "title": "disclosure_note",
            "type": "string"
          },
          "holdings": {
            "description": "(proto shorts.v1alpha1.DistinctiveHolding)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.DistinctiveHolding"
            },
            "title": "holdings",
            "type": "array"
          },
          "moreCount": {
            "description": "Holdings beyond the cap, stated rather than dropped silently. (proto int32)",
            "format": "int32",
            "title": "more_count",
            "type": "integer"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          }
        },
        "title": "ListDistinctiveHoldingsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListEconomicSeriesRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "default 200, max 500 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "metric": {
            "description": "(proto string)",
            "title": "metric",
            "type": "string"
          },
          "product": {
            "description": "(proto string)",
            "title": "product",
            "type": "string"
          },
          "regionCode": {
            "description": "(proto string)",
            "title": "region_code",
            "type": "string"
          },
          "regionType": {
            "description": "(proto string)",
            "title": "region_type",
            "type": "string"
          },
          "topic": {
            "description": "optional filters; empty = all (proto string)",
            "title": "topic",
            "type": "string"
          }
        },
        "title": "ListEconomicSeriesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListEconomicSeriesResponse": {
        "additionalProperties": false,
        "properties": {
          "series": {
            "description": "(proto shorts.v1alpha1.EconomicSeriesInfo)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.EconomicSeriesInfo"
            },
            "title": "series",
            "type": "array"
          }
        },
        "title": "ListEconomicSeriesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListEditorialTakesRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "default 20 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "stockCode": {
            "description": "optional filter (proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "ListEditorialTakesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListEditorialTakesResponse": {
        "additionalProperties": false,
        "properties": {
          "takes": {
            "description": "(proto shorts.v1alpha1.EditorialTake)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.EditorialTake"
            },
            "title": "takes",
            "type": "array"
          },
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          }
        },
        "title": "ListEditorialTakesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListHousingRegionsRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "optional; default 2000 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "query": {
            "description": "optional case-insensitive name substring (proto string)",
            "title": "query",
            "type": "string"
          },
          "regionType": {
            "description": "optional filter, e.g. 'suburb' | 'gccsa' | 'state' (proto string)",
            "title": "region_type",
            "type": "string"
          },
          "stateCode": {
            "description": "optional filter, e.g. 'SA' | 'VIC' (proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "ListHousingRegionsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListHousingRegionsResponse": {
        "additionalProperties": false,
        "properties": {
          "regions": {
            "description": "(proto shorts.v1alpha1.HousingRegion)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.HousingRegion"
            },
            "title": "regions",
            "type": "array"
          }
        },
        "title": "ListHousingRegionsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListPartyFundingRequest": {
        "additionalProperties": false,
        "properties": {
          "financialYear": {
            "description": "the focus year for the donor lists; empty = latest held (proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "limit": {
            "description": "donors per list; default 25, max 200 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "partyGroup": {
            "description": "required; the source's own rollup key (proto string)",
            "title": "party_group",
            "type": "string"
          }
        },
        "title": "ListPartyFundingRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListPartyFundingResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "attribution": {
            "description": "(proto string)",
            "title": "attribution",
            "type": "string"
          },
          "branchNames": {
            "description": "The branch names that lodged under this group, verbatim. Published so the\n rollup is inspectable rather than asserted. (proto string)",
            "items": {
              "type": "string"
            },
            "title": "branch_names",
            "type": "array"
          },
          "censoringNote": {
            "description": "(proto string)",
            "title": "censoring_note",
            "type": "string"
          },
          "financialYear": {
            "description": "the focus year served (proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "listedCompanyPayers": {
            "description": "Focus-year payers matched to an ASX listing, with their receipt-type split. (proto shorts.v1alpha1.TopDonor)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.TopDonor"
            },
            "title": "listed_company_payers",
            "type": "array"
          },
          "partyGroup": {
            "description": "(proto string)",
            "title": "party_group",
            "type": "string"
          },
          "reformNote": {
            "description": "(proto string)",
            "title": "reform_note",
            "type": "string"
          },
          "series": {
            "description": "Every financial year this group lodged in, ASCENDING. post_reform_scheme\n marks where the chart must break. (proto shorts.v1alpha1.PartyFundingSummary)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PartyFundingSummary"
            },
            "title": "series",
            "type": "array"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "topDonors": {
            "description": "focus-year payers, amount desc (proto shorts.v1alpha1.TopDonor)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.TopDonor"
            },
            "title": "top_donors",
            "type": "array"
          },
          "verbatimNote": {
            "description": "(proto string)",
            "title": "verbatim_note",
            "type": "string"
          }
        },
        "title": "ListPartyFundingResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListPoliticianStocksRequest": {
        "additionalProperties": false,
        "properties": {
          "currentOnly": {
            "description": "(proto bool)",
            "title": "current_only",
            "type": "boolean"
          },
          "limit": {
            "description": "default 50, max 200 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          }
        },
        "title": "ListPoliticianStocksRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListPoliticianStocksResponse": {
        "additionalProperties": false,
        "properties": {
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "stocks": {
            "description": "(proto shorts.v1alpha1.PoliticianStockRollup)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianStockRollup"
            },
            "title": "stocks",
            "type": "array"
          }
        },
        "title": "ListPoliticianStocksResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListPoliticianSummariesRequest": {
        "additionalProperties": false,
        "properties": {
          "chamber": {
            "description": "(proto string)",
            "title": "chamber",
            "type": "string"
          },
          "itemNo": {
            "description": "0 = all (proto int32)",
            "format": "int32",
            "title": "item_no",
            "type": "integer"
          },
          "limit": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "partyAb": {
            "description": "(proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "query": {
            "description": "(proto string)",
            "title": "query",
            "type": "string"
          },
          "sort": {
            "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianSummarySort",
            "description": "(proto shorts.v1alpha1.PoliticianSummarySort)",
            "title": "sort"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "ListPoliticianSummariesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListPoliticianSummariesResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "summaries": {
            "description": "(proto shorts.v1alpha1.PoliticianSummary)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianSummary"
            },
            "title": "summaries",
            "type": "array"
          },
          "total": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total",
            "type": "integer"
          }
        },
        "title": "ListPoliticianSummariesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListPoliticiansRequest": {
        "additionalProperties": false,
        "properties": {
          "chamber": {
            "description": "optional (proto string)",
            "title": "chamber",
            "type": "string"
          },
          "limit": {
            "description": "default 100, max 500 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "partyAb": {
            "description": "optional (proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "query": {
            "description": "optional name substring (proto string)",
            "title": "query",
            "type": "string"
          },
          "stateCode": {
            "description": "optional (proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "ListPoliticiansRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListPoliticiansResponse": {
        "additionalProperties": false,
        "properties": {
          "politicians": {
            "description": "(proto shorts.v1alpha1.Politician)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.Politician"
            },
            "title": "politicians",
            "type": "array"
          },
          "total": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total",
            "type": "integer"
          }
        },
        "title": "ListPoliticiansResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListRegisterChangesRequest": {
        "additionalProperties": false,
        "properties": {
          "chamber": {
            "description": "'house' | 'senate' (proto string)",
            "title": "chamber",
            "type": "string"
          },
          "itemNo": {
            "description": "register form item 1-14; 0 = all (proto int32)",
            "format": "int32",
            "title": "item_no",
            "type": "integer"
          },
          "kind": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RegisterChangeKind",
            "description": "UNSPECIFIED = both (proto shorts.v1alpha1.RegisterChangeKind)",
            "title": "kind"
          },
          "limit": {
            "description": "default 100, max 500 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "partyAb": {
            "description": "AEC abbreviation (proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "politicianSlug": {
            "description": "Discovery-layer filters. All optional and all ADDITIVE — the unfiltered\n feed is unchanged when they are left empty. canonical slug; consumers never derive one (proto string)",
            "title": "politician_slug",
            "type": "string"
          },
          "since": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "Interpreted at UTC DAY granularity: the handler truncates it to UTC\n midnight before it reaches either the cache key or the query, so two\n timestamps on the same day are one request and cannot be served each\n other's results. (proto google.protobuf.Timestamp)",
            "title": "since"
          },
          "stockCode": {
            "description": "optional (proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "ListRegisterChangesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListRegisterChangesResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "The register's own clock: the newest lodgement we hold, never the moment we\n rebuilt our snapshot. (proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "events": {
            "description": "(proto shorts.v1alpha1.RegisterChangeEvent)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterChangeEvent"
            },
            "title": "events",
            "type": "array"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "total": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total",
            "type": "integer"
          }
        },
        "title": "ListRegisterChangesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListReportsRequest": {
        "additionalProperties": false,
        "description": "Request for ListReports RPC",
        "properties": {
          "limit": {
            "description": "Max reports to return (default 24, max 100) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "reportType": {
            "description": "\"weekly\", \"monthly\", \"yearly\", or \"\" / \"all\" for all types (proto string)",
            "title": "report_type",
            "type": "string"
          }
        },
        "title": "ListReportsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListReportsResponse": {
        "additionalProperties": false,
        "description": "Response for ListReports RPC",
        "properties": {
          "reports": {
            "description": "(proto shorts.v1alpha1.ReportListItem)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.ReportListItem"
            },
            "title": "reports",
            "type": "array"
          }
        },
        "title": "ListReportsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListSeriesCorrelationsRequest": {
        "additionalProperties": false,
        "properties": {
          "baseSeriesKey": {
            "description": "required (proto string)",
            "title": "base_series_key",
            "type": "string"
          },
          "limit": {
            "description": "default 100, max 250 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "minAbsR": {
            "description": "(proto double)",
            "format": "double",
            "title": "min_abs_r",
            "type": "number"
          },
          "windowMonths": {
            "description": "default 24 (proto int32)",
            "format": "int32",
            "title": "window_months",
            "type": "integer"
          }
        },
        "title": "ListSeriesCorrelationsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListSeriesCorrelationsResponse": {
        "additionalProperties": false,
        "properties": {
          "correlations": {
            "description": "(proto shorts.v1alpha1.SeriesCorrelation)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SeriesCorrelation"
            },
            "title": "correlations",
            "type": "array"
          }
        },
        "title": "ListSeriesCorrelationsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListShortInterestOverlapRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "default 50, max 200 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "minShortPercent": {
            "description": "default 2.0 (proto double)",
            "format": "double",
            "title": "min_short_percent",
            "type": "number"
          }
        },
        "title": "ListShortInterestOverlapRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListShortInterestOverlapResponse": {
        "additionalProperties": false,
        "properties": {
          "disclosureNote": {
            "description": "the mandatory caveat, served with the data (proto string)",
            "title": "disclosure_note",
            "type": "string"
          },
          "overlaps": {
            "description": "(proto shorts.v1alpha1.ShortInterestOverlap)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.ShortInterestOverlap"
            },
            "title": "overlaps",
            "type": "array"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          }
        },
        "title": "ListShortInterestOverlapResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListStateCompaniesRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "default 10, max 50 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "state": {
            "description": "nsw|vic|qld|sa|wa|tas|nt|act (lowercase) (proto string)",
            "title": "state",
            "type": "string"
          }
        },
        "title": "ListStateCompaniesRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListStateCompaniesResponse": {
        "additionalProperties": false,
        "properties": {
          "companies": {
            "description": "(proto shorts.v1alpha1.StateCompany)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.StateCompany"
            },
            "title": "companies",
            "type": "array"
          }
        },
        "title": "ListStateCompaniesResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListStatePoliticianHoldingsRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "default 20, max 100 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "stateCode": {
            "description": "accepts a slug or a code (proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "ListStatePoliticianHoldingsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListStatePoliticianHoldingsResponse": {
        "additionalProperties": false,
        "properties": {
          "politicianCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "politician_count",
            "type": "integer"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          },
          "stocks": {
            "description": "(proto shorts.v1alpha1.PoliticianStockRollup)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PoliticianStockRollup"
            },
            "title": "stocks",
            "type": "array"
          }
        },
        "title": "ListStatePoliticianHoldingsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListStateSuburbsRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "optional; default 5000 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "query": {
            "description": "optional case-insensitive name substring (proto string)",
            "title": "query",
            "type": "string"
          },
          "stateCode": {
            "description": "'NSW' | 'VIC' | ... (required) (proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "ListStateSuburbsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListStateSuburbsResponse": {
        "additionalProperties": false,
        "properties": {
          "suburbs": {
            "description": "(proto shorts.v1alpha1.SuburbSummary)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbSummary"
            },
            "title": "suburbs",
            "type": "array"
          }
        },
        "title": "ListStateSuburbsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListStockPoliticiansRequest": {
        "additionalProperties": false,
        "properties": {
          "currentOnly": {
            "description": "default false: history included (proto bool)",
            "title": "current_only",
            "type": "boolean"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "ListStockPoliticiansRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListStockPoliticiansResponse": {
        "additionalProperties": false,
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "interests": {
            "description": "(proto shorts.v1alpha1.StockPoliticianInterest)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.StockPoliticianInterest"
            },
            "title": "interests",
            "type": "array"
          },
          "partyCounts": {
            "description": "(proto shorts.v1alpha1.PartyCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PartyCount"
            },
            "title": "party_counts",
            "type": "array"
          },
          "politicianCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "politician_count",
            "type": "integer"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "ListStockPoliticiansResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListSuburbDropListingsRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "optional; default 30 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "regionCode": {
            "description": "(proto string)",
            "title": "region_code",
            "type": "string"
          },
          "salCode": {
            "description": "one of sal_code or region_code is required (proto string)",
            "title": "sal_code",
            "type": "string"
          },
          "windowDays": {
            "description": "optional; default 30 (proto int32)",
            "format": "int32",
            "title": "window_days",
            "type": "integer"
          }
        },
        "title": "ListSuburbDropListingsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListSuburbDropListingsResponse": {
        "additionalProperties": false,
        "properties": {
          "listings": {
            "description": "(proto shorts.v1alpha1.SuburbDropListing)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbDropListing"
            },
            "title": "listings",
            "type": "array"
          }
        },
        "title": "ListSuburbDropListingsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListSuburbPoliticiansRequest": {
        "additionalProperties": false,
        "properties": {
          "salCode": {
            "description": "(proto string)",
            "title": "sal_code",
            "type": "string"
          }
        },
        "title": "ListSuburbPoliticiansRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListSuburbPoliticiansResponse": {
        "additionalProperties": false,
        "properties": {
          "declaringMemberCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "declaring_member_count",
            "type": "integer"
          },
          "properties": {
            "description": "(proto shorts.v1alpha1.SuburbPoliticianProperty)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbPoliticianProperty"
            },
            "title": "properties",
            "type": "array"
          },
          "salCode": {
            "description": "(proto string)",
            "title": "sal_code",
            "type": "string"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          },
          "suburbName": {
            "description": "(proto string)",
            "title": "suburb_name",
            "type": "string"
          }
        },
        "title": "ListSuburbPoliticiansResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListSuburbPriceDropsRequest": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "optional; default 50 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "sort": {
            "description": "optional: 'count' (default) | 'avg' | 'max' (proto string)",
            "title": "sort",
            "type": "string"
          },
          "stateCode": {
            "description": "optional filter, e.g. 'NSW'; '' = national (proto string)",
            "title": "state_code",
            "type": "string"
          },
          "windowDays": {
            "description": "reserved; the aggregate uses a fixed rolling window (proto int32)",
            "format": "int32",
            "title": "window_days",
            "type": "integer"
          }
        },
        "title": "ListSuburbPriceDropsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListSuburbPriceDropsResponse": {
        "additionalProperties": false,
        "properties": {
          "suburbs": {
            "description": "(proto shorts.v1alpha1.SuburbPriceDrop)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbPriceDrop"
            },
            "title": "suburbs",
            "type": "array"
          }
        },
        "title": "ListSuburbPriceDropsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ListTopDonorsRequest": {
        "additionalProperties": false,
        "properties": {
          "financialYear": {
            "description": "empty = latest year held (proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "limit": {
            "description": "default 50, max 200 (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "partyGroup": {
            "description": "empty = every party group (proto string)",
            "title": "party_group",
            "type": "string"
          }
        },
        "title": "ListTopDonorsRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ListTopDonorsResponse": {
        "additionalProperties": false,
        "properties": {
          "asAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "as_at"
          },
          "attribution": {
            "description": "(proto string)",
            "title": "attribution",
            "type": "string"
          },
          "censoringNote": {
            "description": "(proto string)",
            "title": "censoring_note",
            "type": "string"
          },
          "donors": {
            "description": "(proto shorts.v1alpha1.TopDonor)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.TopDonor"
            },
            "title": "donors",
            "type": "array"
          },
          "financialYear": {
            "description": "(proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "partyGroup": {
            "description": "(proto string)",
            "title": "party_group",
            "type": "string"
          },
          "reformNote": {
            "description": "(proto string)",
            "title": "reform_note",
            "type": "string"
          },
          "scopeNote": {
            "description": "What this list is over, stated rather than assumed: itemised receipts whose\n recipient is a party branch that rolls up to a party group. Receipts into\n associated entities and third parties that never lodged a party return\n belong to no group and are not counted here. (proto string)",
            "title": "scope_note",
            "type": "string"
          },
          "sourceLicence": {
            "description": "(proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "total": {
            "description": "Distinct payers matching the filters, NOT the page size — a surface states\n the real population rather than the rows it happens to have rendered. (proto int32)",
            "format": "int32",
            "title": "total",
            "type": "integer"
          },
          "verbatimNote": {
            "description": "(proto string)",
            "title": "verbatim_note",
            "type": "string"
          }
        },
        "title": "ListTopDonorsResponse",
        "type": "object"
      },
      "shorts.v1alpha1.MemberAnnualReturn": {
        "additionalProperties": false,
        "description": "MemberAnnualReturn is one lodged Member of the House of Representatives /\n Senator annual return. 52 exist in the whole corpus.",
        "properties": {
          "chamber": {
            "description": "'house' | 'senate' (proto string)",
            "title": "chamber",
            "type": "string"
          },
          "donorCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "donor_count",
            "type": "integer"
          },
          "financialYear": {
            "description": "(proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "financialYearEnd": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "financial_year_end",
            "type": "integer"
          },
          "memberName": {
            "description": "verbatim as lodged, honorifics intact (proto string)",
            "title": "member_name",
            "type": "string"
          },
          "returnType": {
            "description": "verbatim, e.g. 'Member of House of Representatives Return' (proto string)",
            "title": "return_type",
            "type": "string"
          },
          "sourceUrl": {
            "description": "(proto string)",
            "title": "source_url",
            "type": "string"
          },
          "totalDonationsCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "total_donations_cents",
            "type": [
              "integer",
              "string"
            ]
          }
        },
        "title": "MemberAnnualReturn",
        "type": "object"
      },
      "shorts.v1alpha1.NewlyDeclaredCompany": {
        "additionalProperties": false,
        "description": "NewlyDeclaredCompany is a company whose FIRST dated declaration anywhere in\n the corpus falls inside the window.\n\n WITHHELD RATHER THAN GUESSED: a company is excluded outright if ANY member\n currently declares it with no known start date. About 80% of currently\n declared rows are undated, so a dated-only minimum cannot prove first-ness\n against them — an undated holding of the same company may be decades old.\n First-ness is a claim about the whole corpus, so an unprovable one is not\n made at all.",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "declarerCount": {
            "description": "Members currently declaring the company, corpus-wide. People, never rows.\n\n The SAME dated predicate as DeclarerCountChange.declarers_now, so the two\n rails of one response cannot disagree about how many members declare a\n company. (After the exclusion above these companies have no undated current\n rows at all, so the dated count is the whole count.) (proto int32)",
            "format": "int32",
            "title": "declarer_count",
            "type": "integer"
          },
          "firstDeclaredOn": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "first_declared_on",
            "type": "string"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "NewlyDeclaredCompany",
        "type": "object"
      },
      "shorts.v1alpha1.NewsArticle": {
        "additionalProperties": false,
        "description": "A single news article",
        "properties": {
          "headline": {
            "description": "(proto string)",
            "title": "headline",
            "type": "string"
          },
          "id": {
            "description": "(proto string)",
            "title": "id",
            "type": "string"
          },
          "imageUrl": {
            "description": "Hero image from RSS or scraped og:image (proto string)",
            "title": "image_url",
            "type": "string"
          },
          "isPriceSensitive": {
            "description": "(proto bool)",
            "title": "is_price_sensitive",
            "type": "boolean"
          },
          "publishedAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "published_at"
          },
          "relevanceScore": {
            "description": "(proto double)",
            "format": "double",
            "title": "relevance_score",
            "type": "number"
          },
          "sentiment": {
            "description": "'positive', 'negative', 'neutral' (proto string)",
            "title": "sentiment",
            "type": "string"
          },
          "source": {
            "description": "'asx', 'stockhead', 'livewire', 'afr' (proto string)",
            "title": "source",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "summary": {
            "description": "(proto string)",
            "title": "summary",
            "type": "string"
          },
          "syndicatedSources": {
            "description": "OTHER mastheads carrying this story (self excluded) (proto string)",
            "items": {
              "type": "string"
            },
            "title": "syndicated_sources",
            "type": "array"
          },
          "syndicationCount": {
            "description": "total cluster size INCLUDING this article (1 = unsyndicated); syndicated_sources excludes self, so len(sources) == count-1 (proto int32)",
            "format": "int32",
            "title": "syndication_count",
            "type": "integer"
          },
          "tags": {
            "description": "(proto string)",
            "items": {
              "type": "string"
            },
            "title": "tags",
            "type": "array"
          },
          "url": {
            "description": "(proto string)",
            "title": "url",
            "type": "string"
          }
        },
        "title": "NewsArticle",
        "type": "object"
      },
      "shorts.v1alpha1.PartyCount": {
        "additionalProperties": false,
        "description": "PartyCount is a count of PEOPLE, never of money.",
        "properties": {
          "party": {
            "description": "(proto string)",
            "title": "party",
            "type": "string"
          },
          "partyAb": {
            "description": "(proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "politicianCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "politician_count",
            "type": "integer"
          }
        },
        "title": "PartyCount",
        "type": "object"
      },
      "shorts.v1alpha1.PartyFundingSummary": {
        "additionalProperties": false,
        "description": "PartyFundingSummary is one party group in one financial year, straight from\n mv_aec_party_funding. Nothing here is derived: each figure is a sum or a\n distinct count over lodged returns.\n\n The two sides of the ledger are kept apart on purpose. total_receipts_cents\n is what the party's OWN annual return declares it received; the itemised and\n declared_donations figures are the transaction-level rows from the recipient\n side and the donor side respectively. They do not reconcile to each other and\n must never be presented as if they should.",
        "properties": {
          "declaredDonationsCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "declared_donations_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "distinctDonorCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "distinct_donor_count",
            "type": "integer"
          },
          "distinctPayerCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "distinct_payer_count",
            "type": "integer"
          },
          "donationCount": {
            "description": "From donations made — the DONOR-declared side. (proto int32)",
            "format": "int32",
            "title": "donation_count",
            "type": "integer"
          },
          "financialYear": {
            "description": "verbatim label, e.g. '2024-25' (proto string)",
            "title": "financial_year",
            "type": "string"
          },
          "financialYearEnd": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "financial_year_end",
            "type": "integer"
          },
          "itemisedReceiptCount": {
            "description": "From itemised receipts — the RECIPIENT-declared side. (proto int32)",
            "format": "int32",
            "title": "itemised_receipt_count",
            "type": "integer"
          },
          "itemisedReceiptsCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "itemised_receipts_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "listedDonorCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "listed_donor_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "listedDonorCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "listed_donor_count",
            "type": "integer"
          },
          "listedPayerCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "listed_payer_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "listedPayerCount": {
            "description": "payers matched to an ASX code, exact/curated only (proto int32)",
            "format": "int32",
            "title": "listed_payer_count",
            "type": "integer"
          },
          "partyGroup": {
            "description": "party_group_key: the source Party Group, or the party's own name (proto string)",
            "title": "party_group",
            "type": "string"
          },
          "partyReturnCount": {
            "description": "returns lodged under this group (branches lodge separately) (proto int32)",
            "format": "int32",
            "title": "party_return_count",
            "type": "integer"
          },
          "postReformScheme": {
            "description": "TRUE from FY2027, the first year of the reformed scheme. A series crossing\n this boundary is two regimes and must carry a break annotation. (proto bool)",
            "title": "post_reform_scheme",
            "type": "boolean"
          },
          "thresholdCensored": {
            "description": "TRUE for every row under the old scheme: figures below the year's\n disclosure threshold are absent from the source entirely. (proto bool)",
            "title": "threshold_censored",
            "type": "boolean"
          },
          "totalDebtsCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "total_debts_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "totalPaymentsCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "total_payments_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "totalReceiptsCents": {
            "description": "From the party's own annual return. (proto int64)",
            "format": "int64",
            "title": "total_receipts_cents",
            "type": [
              "integer",
              "string"
            ]
          }
        },
        "title": "PartyFundingSummary",
        "type": "object"
      },
      "shorts.v1alpha1.PartyIndustryCell": {
        "additionalProperties": false,
        "description": "PartyIndustryCell is one cell of the party x industry matrix.",
        "properties": {
          "companies": {
            "description": "Distinct declared companies behind those people, so a reader can tell\n \"everyone holds the same one stock\" from \"everyone holds a different one\". (proto int32)",
            "format": "int32",
            "title": "companies",
            "type": "integer"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "partyAb": {
            "description": "AEC abbreviation. EMPTY means the party is NOT RECORDED for those members —\n party reaches the register through an electorate join, not the APH listing,\n so it is genuinely absent for some. Never render an empty value as a party. (proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "people": {
            "description": "Distinct parliamentarians. This is the honest headline: a member declaring\n four banks is one person, not four. (proto int32)",
            "format": "int32",
            "title": "people",
            "type": "integer"
          }
        },
        "title": "PartyIndustryCell",
        "type": "object"
      },
      "shorts.v1alpha1.PartyTotal": {
        "additionalProperties": false,
        "properties": {
          "partyAb": {
            "description": "(proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "people": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "people",
            "type": "integer"
          }
        },
        "title": "PartyTotal",
        "type": "object"
      },
      "shorts.v1alpha1.PeerStock": {
        "additionalProperties": false,
        "description": "A peer stock for comparison",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "dividendYield": {
            "description": "(proto double)",
            "format": "double",
            "title": "dividend_yield",
            "type": "number"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "logoUrl": {
            "description": "Company logo URL (GCS-hosted, may be empty) (proto string)",
            "title": "logo_url",
            "type": "string"
          },
          "marketCap": {
            "description": "(proto double)",
            "format": "double",
            "title": "market_cap",
            "type": "number"
          },
          "peRatio": {
            "description": "(proto double)",
            "format": "double",
            "title": "pe_ratio",
            "type": "number"
          },
          "priceChange1m": {
            "description": "1-month price change % (proto double)",
            "format": "double",
            "title": "price_change_1m",
            "type": "number"
          },
          "shortPositionPercent": {
            "description": "(proto double)",
            "format": "double",
            "title": "short_position_percent",
            "type": "number"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "PeerStock",
        "type": "object"
      },
      "shorts.v1alpha1.Politician": {
        "additionalProperties": false,
        "properties": {
          "aphMpid": {
            "description": "opaque; absent for some members (proto string)",
            "title": "aph_mpid",
            "type": "string"
          },
          "chamber": {
            "description": "'house' | 'senate' (most recent term) (proto string)",
            "title": "chamber",
            "type": "string"
          },
          "declaredListedCount": {
            "description": "Counts only. Never a value. (proto int32)",
            "format": "int32",
            "title": "declared_listed_count",
            "type": "integer"
          },
          "declaredPropertyCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "declared_property_count",
            "type": "integer"
          },
          "displayName": {
            "description": "(proto string)",
            "title": "display_name",
            "type": "string"
          },
          "division": {
            "description": "House seat (proto string)",
            "title": "division",
            "type": "string"
          },
          "firstParliament": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "first_parliament",
            "type": "integer"
          },
          "givenNames": {
            "description": "(proto string)",
            "title": "given_names",
            "type": "string"
          },
          "honorific": {
            "description": "(proto string)",
            "title": "honorific",
            "type": "string"
          },
          "lastParliament": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "last_parliament",
            "type": "integer"
          },
          "party": {
            "description": "(proto string)",
            "title": "party",
            "type": "string"
          },
          "partyAb": {
            "description": "(proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "photoAuthor": {
            "description": "the credit line the licence requires (proto string)",
            "title": "photo_author",
            "type": "string"
          },
          "photoLicence": {
            "description": "as Commons states it: \"CC BY-SA 4.0\", \"Public domain\" (proto string)",
            "title": "photo_licence",
            "type": "string"
          },
          "photoSourceUrl": {
            "description": "the Commons file page carrying the full terms (proto string)",
            "title": "photo_source_url",
            "type": "string"
          },
          "photoUrl": {
            "description": "Portrait photograph, from Wikimedia Commons via Wikidata — NEVER from\n aph.gov.au, whose images are Commonwealth artefacts that §3.1's posture\n forbids mirroring and which may carry a separate photographer copyright.\n\n THE ATTRIBUTION FIELDS TRAVEL WITH THE URL AND ARE NOT OPTIONAL. CC BY and\n CC BY-SA permit publication only WITH the credit and a link to the terms, so\n a consumer that renders photo_url while dropping photo_licence /\n photo_source_url is breaching the licence, not just being untidy. A database\n CHECK makes the unattributed state unstorable; carrying the fields together\n here makes it unrenderable by accident too.\n\n Empty for ~26% of members: no Wikidata portrait, or the surname+division\n match was ambiguous and was withheld rather than guessed. Consumers render a\n monogram, never a placeholder face and never another person's photograph. (proto string)",
            "title": "photo_url",
            "type": "string"
          },
          "slug": {
            "description": "canonical; consumers must never derive this (proto string)",
            "title": "slug",
            "type": "string"
          },
          "stateCode": {
            "description": "UPPERCASE (proto string)",
            "title": "state_code",
            "type": "string"
          },
          "surname": {
            "description": "(proto string)",
            "title": "surname",
            "type": "string"
          }
        },
        "title": "Politician",
        "type": "object"
      },
      "shorts.v1alpha1.PoliticianOnlyCompany": {
        "additionalProperties": false,
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "currentlyDeclared": {
            "description": "(proto bool)",
            "title": "currently_declared",
            "type": "boolean"
          },
          "holders": {
            "description": "(proto shorts.v1alpha1.RegisterHolder)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolder"
            },
            "title": "holders",
            "type": "array"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "PoliticianOnlyCompany",
        "type": "object"
      },
      "shorts.v1alpha1.PoliticianStockRollup": {
        "additionalProperties": false,
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "partyCounts": {
            "description": "(proto shorts.v1alpha1.PartyCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PartyCount"
            },
            "title": "party_counts",
            "type": "array"
          },
          "politicianCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "politician_count",
            "type": "integer"
          },
          "shortPercent": {
            "description": "THE COMPANY's ASIC short interest, not a holding (proto double)",
            "format": "double",
            "title": "short_percent",
            "type": "number"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "PoliticianStockRollup",
        "type": "object"
      },
      "shorts.v1alpha1.PoliticianSummary": {
        "additionalProperties": false,
        "properties": {
          "changes90d": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "changes_90d",
            "type": "integer"
          },
          "distinctCompanyCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "distinct_company_count",
            "type": "integer"
          },
          "giftsTravelCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "gifts_travel_count",
            "type": "integer"
          },
          "itemCounts": {
            "description": "(proto shorts.v1alpha1.RegisterItemCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterItemCount"
            },
            "title": "item_counts",
            "type": "array"
          },
          "liabilityCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "liability_count",
            "type": "integer"
          },
          "politician": {
            "$ref": "#/components/schemas/shorts.v1alpha1.Politician",
            "description": "(proto shorts.v1alpha1.Politician)",
            "title": "politician"
          },
          "propertyCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "property_count",
            "type": "integer"
          },
          "trend": {
            "description": "(proto shorts.v1alpha1.RegisterMonthlyCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterMonthlyCount"
            },
            "title": "trend",
            "type": "array"
          },
          "undatedCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "undated_count",
            "type": "integer"
          }
        },
        "title": "PoliticianSummary",
        "type": "object"
      },
      "shorts.v1alpha1.PoliticianSummarySort": {
        "enum": [
          "POLITICIAN_SUMMARY_SORT_DECLARED_ITEMS",
          "POLITICIAN_SUMMARY_SORT_COMPANIES",
          "POLITICIAN_SUMMARY_SORT_PROPERTIES",
          "POLITICIAN_SUMMARY_SORT_RECENT_CHANGES",
          "POLITICIAN_SUMMARY_SORT_NAME"
        ],
        "title": "PoliticianSummarySort",
        "type": "string"
      },
      "shorts.v1alpha1.PoliticianTerm": {
        "additionalProperties": false,
        "properties": {
          "chamber": {
            "description": "(proto string)",
            "title": "chamber",
            "type": "string"
          },
          "division": {
            "description": "(proto string)",
            "title": "division",
            "type": "string"
          },
          "parliament": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "parliament",
            "type": "integer"
          },
          "party": {
            "description": "(proto string)",
            "title": "party",
            "type": "string"
          },
          "partyAb": {
            "description": "(proto string)",
            "title": "party_ab",
            "type": "string"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "PoliticianTerm",
        "type": "object"
      },
      "shorts.v1alpha1.PropertyListingSnapshot": {
        "additionalProperties": false,
        "description": "The current listing at an address — the most-recent active one, or the\n most-recent overall if none are active.",
        "properties": {
          "agencyName": {
            "description": "marketing agency ('' when not captured) (proto string)",
            "title": "agency_name",
            "type": "string"
          },
          "agentNames": {
            "description": "listing agents ('' when not captured) (proto string)",
            "items": {
              "type": "string"
            },
            "title": "agent_names",
            "type": "array"
          },
          "bathrooms": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "bathrooms",
            "type": "integer"
          },
          "bedrooms": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "bedrooms",
            "type": "integer"
          },
          "carSpaces": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "car_spaces",
            "type": "integer"
          },
          "firstSeenAt": {
            "description": "RFC3339 (proto string)",
            "title": "first_seen_at",
            "type": "string"
          },
          "isActive": {
            "description": "(proto bool)",
            "title": "is_active",
            "type": "boolean"
          },
          "landSizeSqm": {
            "description": "(proto double)",
            "format": "double",
            "title": "land_size_sqm",
            "type": "number"
          },
          "lastSeenAt": {
            "description": "RFC3339 (proto string)",
            "title": "last_seen_at",
            "type": "string"
          },
          "listingId": {
            "description": "portal advert id (proto string)",
            "title": "listing_id",
            "type": "string"
          },
          "listingStatus": {
            "description": "for_sale|under_offer|sold|withdrawn|unknown (proto string)",
            "title": "listing_status",
            "type": "string"
          },
          "listingUrl": {
            "description": "deep link to the live portal listing (proto string)",
            "title": "listing_url",
            "type": "string"
          },
          "price": {
            "description": "canonical numeric ask (0 if unknown) (proto double)",
            "format": "double",
            "title": "price",
            "type": "number"
          },
          "priceDisplay": {
            "description": "raw string as shown on the portal (proto string)",
            "title": "price_display",
            "type": "string"
          },
          "priceKind": {
            "description": "fixed|range_low|range_high|offers_over|auction|poa|unknown (proto string)",
            "title": "price_kind",
            "type": "string"
          },
          "propertyType": {
            "description": "(proto string)",
            "title": "property_type",
            "type": "string"
          },
          "source": {
            "description": "'rea' | 'domain' (proto string)",
            "title": "source",
            "type": "string"
          }
        },
        "title": "PropertyListingSnapshot",
        "type": "object"
      },
      "shorts.v1alpha1.PropertyPriceEvent": {
        "additionalProperties": false,
        "description": "One event in an address's price timeline (spans every listing/relist at\n that address).",
        "properties": {
          "dropAbs": {
            "description": "prev_price - price (positive == a drop) (proto double)",
            "format": "double",
            "title": "drop_abs",
            "type": "number"
          },
          "dropPct": {
            "description": "fraction (0.062 == a 6.2% drop) (proto double)",
            "format": "double",
            "title": "drop_pct",
            "type": "number"
          },
          "eventType": {
            "description": "first_seen|price_drop|price_rise|relisted|status_change|delisted (proto string)",
            "title": "event_type",
            "type": "string"
          },
          "listingId": {
            "description": "(proto string)",
            "title": "listing_id",
            "type": "string"
          },
          "listingStatus": {
            "description": "(proto string)",
            "title": "listing_status",
            "type": "string"
          },
          "observedAt": {
            "description": "RFC3339, the run timestamp (proto string)",
            "title": "observed_at",
            "type": "string"
          },
          "prevPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "prev_price",
            "type": "number"
          },
          "prevStatus": {
            "description": "(proto string)",
            "title": "prev_status",
            "type": "string"
          },
          "price": {
            "description": "(proto double)",
            "format": "double",
            "title": "price",
            "type": "number"
          },
          "source": {
            "description": "'rea' | 'domain' (proto string)",
            "title": "source",
            "type": "string"
          }
        },
        "title": "PropertyPriceEvent",
        "type": "object"
      },
      "shorts.v1alpha1.PropertyValuation": {
        "additionalProperties": false,
        "description": "AVM valuation snapshot for a physical address (property.com.au / PropTrack\n AVM). DERIVED figures from a proprietary-tos-restricted source: the raw\n harvested profile is never exposed; this surface deep-links OUT to the\n source profile. Absent entirely when the address has no successful\n valuation, or when the valuations kill switch is off.",
        "properties": {
          "bathrooms": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "bathrooms",
            "type": "integer"
          },
          "bedrooms": {
            "description": "0 = unknown (proto int32)",
            "format": "int32",
            "title": "bedrooms",
            "type": "integer"
          },
          "buildingSizeSqm": {
            "description": "floor area; 0 = unknown (proto double)",
            "format": "double",
            "title": "building_size_sqm",
            "type": "number"
          },
          "carSpaces": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "car_spaces",
            "type": "integer"
          },
          "estimateConfidence": {
            "description": "source confidence string ('' when not exposed); free-form (proto string)",
            "title": "estimate_confidence",
            "type": "string"
          },
          "estimateHigh": {
            "description": "AVM range high, AUD (0 = not provided) (proto double)",
            "format": "double",
            "title": "estimate_high",
            "type": "number"
          },
          "estimateLow": {
            "description": "AVM range low, AUD (0 = not provided) (proto double)",
            "format": "double",
            "title": "estimate_low",
            "type": "number"
          },
          "estimateMid": {
            "description": "AVM point estimate, AUD (0 = not provided) (proto double)",
            "format": "double",
            "title": "estimate_mid",
            "type": "number"
          },
          "fetchedAt": {
            "description": "RFC3339 — AVMs are point-in-time; UI must show this (proto string)",
            "title": "fetched_at",
            "type": "string"
          },
          "landSizeSqm": {
            "description": "0 = unknown (proto double)",
            "format": "double",
            "title": "land_size_sqm",
            "type": "number"
          },
          "profileUrl": {
            "description": "deep link OUT to the source profile page (proto string)",
            "title": "profile_url",
            "type": "string"
          },
          "propertyType": {
            "description": "'' = unknown (proto string)",
            "title": "property_type",
            "type": "string"
          },
          "rentEstimateMid": {
            "description": "weekly rent estimate, AUD (0 when not exposed) (proto double)",
            "format": "double",
            "title": "rent_estimate_mid",
            "type": "number"
          },
          "salesHistory": {
            "description": "newest first (proto shorts.v1alpha1.PropertyValuationSale)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PropertyValuationSale"
            },
            "title": "sales_history",
            "type": "array"
          },
          "source": {
            "description": "'property.com.au' (proto string)",
            "title": "source",
            "type": "string"
          },
          "valuationGranularity": {
            "description": "'exact'    — the profile is the exact dwelling this address names\n 'building' — a unit whose own profile isn't indexed; this is the whole\n              BUILDING's AVM used as a fallback. Consumers MUST label it\n              \"building estimate\" and MUST NOT present it as unit-precise. (proto string)",
            "title": "valuation_granularity",
            "type": "string"
          },
          "yearBuilt": {
            "description": "0 = unknown (proto int32)",
            "format": "int32",
            "title": "year_built",
            "type": "integer"
          }
        },
        "title": "PropertyValuation",
        "type": "object"
      },
      "shorts.v1alpha1.PropertyValuationSale": {
        "additionalProperties": false,
        "description": "One historical sales/timeline event from the valuation source's property\n profile (property.com.au timeline). Distinct from PropertyPriceEvent: these\n are the portal's own transaction history (sold/listed/rented, potentially\n decades back), not our crawl-observed asking-price events.",
        "properties": {
          "agency": {
            "description": "'' when not captured (proto string)",
            "title": "agency",
            "type": "string"
          },
          "date": {
            "description": "ISO date 'YYYY-MM-DD' ('' when unparsed) (proto string)",
            "title": "date",
            "type": "string"
          },
          "eventType": {
            "description": "source badge text, e.g. 'Sold' | 'Listed for sale' | 'Rented' (proto string)",
            "title": "event_type",
            "type": "string"
          },
          "price": {
            "description": "AUD; 0 = undisclosed (source omitted the figure) (proto double)",
            "format": "double",
            "title": "price",
            "type": "number"
          }
        },
        "title": "PropertyValuationSale",
        "type": "object"
      },
      "shorts.v1alpha1.RangeFilter": {
        "additionalProperties": false,
        "description": "A numeric range filter with optional min/max bounds",
        "properties": {
          "hasMax": {
            "description": "(proto bool)",
            "title": "has_max",
            "type": "boolean"
          },
          "hasMin": {
            "description": "(proto bool)",
            "title": "has_min",
            "type": "boolean"
          },
          "max": {
            "description": "(proto double)",
            "format": "double",
            "title": "max",
            "type": "number"
          },
          "min": {
            "description": "(proto double)",
            "format": "double",
            "title": "min",
            "type": "number"
          }
        },
        "title": "RangeFilter",
        "type": "object"
      },
      "shorts.v1alpha1.ReceiptTypeSplit": {
        "additionalProperties": false,
        "description": "ReceiptTypeSplit is the source's own distinction between kinds of money, and\n it MUST be rendered rather than summed away: a conference fee is not a\n donation. The five buckets are exhaustive over the source vocabulary\n ('Donation Received', 'Other Receipt', 'Subscription', 'Public Funding',\n 'Unspecified' and blank, the last two folded into unspecified_cents), so\n their sum is exactly total_cents and a consumer can prove it.",
        "properties": {
          "donationCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "donation_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "otherReceiptCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "other_receipt_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "publicFundingCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "public_funding_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "subscriptionCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "subscription_cents",
            "type": [
              "integer",
              "string"
            ]
          },
          "unspecifiedCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "unspecified_cents",
            "type": [
              "integer",
              "string"
            ]
          }
        },
        "title": "ReceiptTypeSplit",
        "type": "object"
      },
      "shorts.v1alpha1.RegisterChangeEvent": {
        "additionalProperties": false,
        "properties": {
          "changedOn": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "changed_on"
          },
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "declaredText": {
            "description": "(proto string)",
            "title": "declared_text",
            "type": "string"
          },
          "entityKind": {
            "description": "Same vocabulary as DeclaredInterest.entity_kind, for the same reason: the\n changes feed renders the identical entity component. (proto string)",
            "title": "entity_kind",
            "type": "string"
          },
          "holder": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolder",
            "description": "(proto shorts.v1alpha1.RegisterHolder)",
            "title": "holder"
          },
          "itemLabel": {
            "description": "(proto string)",
            "title": "item_label",
            "type": "string"
          },
          "itemNo": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "item_no",
            "type": "integer"
          },
          "kind": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RegisterChangeKind",
            "description": "(proto shorts.v1alpha1.RegisterChangeKind)",
            "title": "kind"
          },
          "politician": {
            "$ref": "#/components/schemas/shorts.v1alpha1.Politician",
            "description": "(proto shorts.v1alpha1.Politician)",
            "title": "politician"
          },
          "sourceUrl": {
            "description": "(proto string)",
            "title": "source_url",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "RegisterChangeEvent",
        "type": "object"
      },
      "shorts.v1alpha1.RegisterChangeKind": {
        "description": "RegisterChangeKind is why a row entered or left the register. A removal can\n mean a disposal, a correction, or the member leaving parliament — consumers\n must not present it as a transaction.",
        "enum": [
          "REGISTER_CHANGE_KIND_UNSPECIFIED",
          "REGISTER_CHANGE_KIND_ADDED",
          "REGISTER_CHANGE_KIND_REMOVED"
        ],
        "title": "RegisterChangeKind",
        "type": "string"
      },
      "shorts.v1alpha1.RegisterHolder": {
        "description": "RegisterHolder is whose interest a row records. The register itself attributes\n every row to one of these, and surfaces must label which.",
        "enum": [
          "REGISTER_HOLDER_UNSPECIFIED",
          "REGISTER_HOLDER_SELF",
          "REGISTER_HOLDER_SPOUSE_PARTNER",
          "REGISTER_HOLDER_DEPENDENT_CHILDREN"
        ],
        "title": "RegisterHolder",
        "type": "string"
      },
      "shorts.v1alpha1.RegisterHolderCount": {
        "additionalProperties": false,
        "properties": {
          "currentCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "current_count",
            "type": "integer"
          },
          "holder": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolder",
            "description": "(proto shorts.v1alpha1.RegisterHolder)",
            "title": "holder"
          }
        },
        "title": "RegisterHolderCount",
        "type": "object"
      },
      "shorts.v1alpha1.RegisterIndustryCount": {
        "additionalProperties": false,
        "properties": {
          "companyCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "company_count",
            "type": "integer"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          }
        },
        "title": "RegisterIndustryCount",
        "type": "object"
      },
      "shorts.v1alpha1.RegisterIndustryTrend": {
        "additionalProperties": false,
        "properties": {
          "count90dAgo": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "count_90d_ago",
            "type": "integer"
          },
          "currentCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "current_count",
            "type": "integer"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          }
        },
        "title": "RegisterIndustryTrend",
        "type": "object"
      },
      "shorts.v1alpha1.RegisterItemCount": {
        "additionalProperties": false,
        "properties": {
          "allTimeCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "all_time_count",
            "type": "integer"
          },
          "currentCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "current_count",
            "type": "integer"
          },
          "itemLabel": {
            "description": "(proto string)",
            "title": "item_label",
            "type": "string"
          },
          "itemNo": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "item_no",
            "type": "integer"
          },
          "politicianCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "politician_count",
            "type": "integer"
          }
        },
        "title": "RegisterItemCount",
        "type": "object"
      },
      "shorts.v1alpha1.RegisterMonthlyCount": {
        "additionalProperties": false,
        "properties": {
          "declaredCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "declared_count",
            "type": "integer"
          },
          "month": {
            "description": "YYYY-MM (proto string)",
            "title": "month",
            "type": "string"
          }
        },
        "title": "RegisterMonthlyCount",
        "type": "object"
      },
      "shorts.v1alpha1.RegisterSourceDocument": {
        "additionalProperties": false,
        "properties": {
          "chamber": {
            "description": "(proto string)",
            "title": "chamber",
            "type": "string"
          },
          "label": {
            "description": "(proto string)",
            "title": "label",
            "type": "string"
          },
          "parliament": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "parliament",
            "type": "integer"
          },
          "sourceUrl": {
            "description": "(proto string)",
            "title": "source_url",
            "type": "string"
          }
        },
        "title": "RegisterSourceDocument",
        "type": "object"
      },
      "shorts.v1alpha1.ReportListItem": {
        "additionalProperties": false,
        "description": "Summary of a published report for archive/index pages",
        "properties": {
          "headline": {
            "description": "(proto string)",
            "title": "headline",
            "type": "string"
          },
          "maxShortCode": {
            "description": "(proto string)",
            "title": "max_short_code",
            "type": "string"
          },
          "maxShortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "max_short_pct",
            "type": "number"
          },
          "qualityScore": {
            "description": "(proto double)",
            "format": "double",
            "title": "quality_score",
            "type": "number"
          },
          "reportDate": {
            "description": "YYYY-MM-DD of latest trading day in the period (proto string)",
            "title": "report_date",
            "type": "string"
          },
          "reportType": {
            "description": "\"weekly\", \"monthly\", \"yearly\" (proto string)",
            "title": "report_type",
            "type": "string"
          },
          "slug": {
            "description": "\"2026-W06\", \"2026-01\", or \"2025\" (proto string)",
            "title": "slug",
            "type": "string"
          },
          "summary": {
            "description": "(proto string)",
            "title": "summary",
            "type": "string"
          },
          "topCodes": {
            "description": "Top shorted stock codes (up to 5) (proto string)",
            "items": {
              "type": "string"
            },
            "title": "top_codes",
            "type": "array"
          },
          "topLogoUrls": {
            "description": "Matching logo icon URLs (parallel to top_codes, \"\" when unknown) (proto string)",
            "items": {
              "type": "string"
            },
            "title": "top_logo_urls",
            "type": "array"
          },
          "totalStocksShorted": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_stocks_shorted",
            "type": "integer"
          }
        },
        "title": "ReportListItem",
        "type": "object"
      },
      "shorts.v1alpha1.ScreenStocksRequest": {
        "additionalProperties": false,
        "description": "Request for ScreenStocks RPC",
        "properties": {
          "filters": {
            "$ref": "#/components/schemas/shorts.v1alpha1.ScreenerFilters",
            "description": "(proto shorts.v1alpha1.ScreenerFilters)",
            "title": "filters"
          },
          "limit": {
            "description": "Max results (default 50) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "offset": {
            "description": "Pagination offset (proto int32)",
            "format": "int32",
            "title": "offset",
            "type": "integer"
          },
          "sortDirection": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SortDirection",
            "description": "(proto shorts.v1alpha1.SortDirection)",
            "title": "sort_direction"
          },
          "sortField": {
            "$ref": "#/components/schemas/shorts.v1alpha1.ScreenerSortField",
            "description": "(proto shorts.v1alpha1.ScreenerSortField)",
            "title": "sort_field"
          }
        },
        "title": "ScreenStocksRequest",
        "type": "object"
      },
      "shorts.v1alpha1.ScreenStocksResponse": {
        "additionalProperties": false,
        "description": "Response for ScreenStocks RPC",
        "properties": {
          "stocks": {
            "description": "(proto shorts.v1alpha1.ScreenerStock)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.ScreenerStock"
            },
            "title": "stocks",
            "type": "array"
          },
          "totalCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_count",
            "type": "integer"
          }
        },
        "title": "ScreenStocksResponse",
        "type": "object"
      },
      "shorts.v1alpha1.ScreenerFilters": {
        "additionalProperties": false,
        "description": "Compound filters for the stock screener",
        "properties": {
          "avgSentiment": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "Average news sentiment (-1 to 1) (proto shorts.v1alpha1.RangeFilter)",
            "title": "avg_sentiment"
          },
          "daysToCover": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "Days to cover (short positions / avg daily volume) (proto shorts.v1alpha1.RangeFilter)",
            "title": "days_to_cover"
          },
          "dividendYield": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "Dividend yield % (proto shorts.v1alpha1.RangeFilter)",
            "title": "dividend_yield"
          },
          "hasDirectorBuys": {
            "description": "Only stocks with recent director buys (proto bool)",
            "title": "has_director_buys",
            "type": "boolean"
          },
          "industries": {
            "description": "Filter to specific industries (proto string)",
            "items": {
              "type": "string"
            },
            "title": "industries",
            "type": "array"
          },
          "marketCap": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "Market capitalization (proto shorts.v1alpha1.RangeFilter)",
            "title": "market_cap"
          },
          "netDirectorBuy": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "Net director buy value ($) (proto shorts.v1alpha1.RangeFilter)",
            "title": "net_director_buy"
          },
          "peRatio": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "P/E ratio (proto shorts.v1alpha1.RangeFilter)",
            "title": "pe_ratio"
          },
          "priceChange1m": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "1-month price change % (proto shorts.v1alpha1.RangeFilter)",
            "title": "price_change_1m"
          },
          "productCodes": {
            "description": "Filter to specific stock codes — used by /themes (proto string)",
            "items": {
              "type": "string"
            },
            "title": "product_codes",
            "type": "array"
          },
          "shortPct": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "Current short position % (proto shorts.v1alpha1.RangeFilter)",
            "title": "short_pct"
          },
          "shortPctChange": {
            "$ref": "#/components/schemas/shorts.v1alpha1.RangeFilter",
            "description": "4-week short position change (proto shorts.v1alpha1.RangeFilter)",
            "title": "short_pct_change"
          }
        },
        "title": "ScreenerFilters",
        "type": "object"
      },
      "shorts.v1alpha1.ScreenerSortField": {
        "description": "Sort field for screener results",
        "enum": [
          "SCREENER_SORT_FIELD_SHORT_PCT",
          "SCREENER_SORT_FIELD_SHORT_PCT_CHANGE",
          "SCREENER_SORT_FIELD_MARKET_CAP",
          "SCREENER_SORT_FIELD_PRICE_CHANGE_1M",
          "SCREENER_SORT_FIELD_PE_RATIO",
          "SCREENER_SORT_FIELD_DIVIDEND_YIELD",
          "SCREENER_SORT_FIELD_NET_DIRECTOR_BUY",
          "SCREENER_SORT_FIELD_NEWS_SENTIMENT",
          "SCREENER_SORT_FIELD_DAYS_TO_COVER"
        ],
        "title": "ScreenerSortField",
        "type": "string"
      },
      "shorts.v1alpha1.ScreenerStock": {
        "additionalProperties": false,
        "description": "A single stock result from the screener",
        "properties": {
          "avgFrankingPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "avg_franking_pct",
            "type": "number"
          },
          "avgSentiment": {
            "description": "(proto double)",
            "format": "double",
            "title": "avg_sentiment",
            "type": "number"
          },
          "avgVolume20d": {
            "description": "20-day average daily trading volume (proto int64)",
            "format": "int64",
            "title": "avg_volume_20d",
            "type": [
              "integer",
              "string"
            ]
          },
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "daysToCover": {
            "description": "Short positions / avg 20-day volume (proto double)",
            "format": "double",
            "title": "days_to_cover",
            "type": "number"
          },
          "directorBuyCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "director_buy_count",
            "type": "integer"
          },
          "directorSellCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "director_sell_count",
            "type": "integer"
          },
          "dividendYield": {
            "description": "(proto double)",
            "format": "double",
            "title": "dividend_yield",
            "type": "number"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "latestPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "latest_price",
            "type": "number"
          },
          "latestVolume": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "latest_volume",
            "type": [
              "integer",
              "string"
            ]
          },
          "logoUrl": {
            "description": "(proto string)",
            "title": "logo_url",
            "type": "string"
          },
          "marketCap": {
            "description": "(proto double)",
            "format": "double",
            "title": "market_cap",
            "type": "number"
          },
          "netDirectorBuyValue": {
            "description": "(proto double)",
            "format": "double",
            "title": "net_director_buy_value",
            "type": "number"
          },
          "newsCount30d": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "news_count_30d",
            "type": "integer"
          },
          "peRatio": {
            "description": "(proto double)",
            "format": "double",
            "title": "pe_ratio",
            "type": "number"
          },
          "priceChange1m": {
            "description": "(proto double)",
            "format": "double",
            "title": "price_change_1m",
            "type": "number"
          },
          "priceSensitiveCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "price_sensitive_count",
            "type": "integer"
          },
          "shortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "short_pct",
            "type": "number"
          },
          "shortPctChange4w": {
            "description": "(proto double)",
            "format": "double",
            "title": "short_pct_change_4w",
            "type": "number"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "trailing12mDividend": {
            "description": "(proto double)",
            "format": "double",
            "title": "trailing_12m_dividend",
            "type": "number"
          }
        },
        "title": "ScreenerStock",
        "type": "object"
      },
      "shorts.v1alpha1.SearchStocksRequest": {
        "additionalProperties": false,
        "description": "Request for SearchStocks RPC, specifying the search query.",
        "properties": {
          "includeDetails": {
            "description": "Whether to include detailed stock information (proto bool)",
            "title": "include_details",
            "type": "boolean"
          },
          "limit": {
            "description": "Maximum number of results to return (default: 50) (proto int32)",
            "format": "int32",
            "title": "limit",
            "type": "integer"
          },
          "query": {
            "description": "Search query (symbol or company name) (proto string)",
            "title": "query",
            "type": "string"
          }
        },
        "title": "SearchStocksRequest",
        "type": "object"
      },
      "shorts.v1alpha1.SearchStocksResponse": {
        "additionalProperties": false,
        "description": "Response for SearchStocks RPC, containing matching stocks.",
        "properties": {
          "count": {
            "description": "Number of results returned (proto int32)",
            "format": "int32",
            "title": "count",
            "type": "integer"
          },
          "query": {
            "description": "The search query used (proto string)",
            "title": "query",
            "type": "string"
          },
          "stocks": {
            "description": "Matching stocks (proto stocks.v1alpha1.Stock)",
            "items": {
              "$ref": "#/components/schemas/stocks.v1alpha1.Stock"
            },
            "title": "stocks",
            "type": "array"
          }
        },
        "title": "SearchStocksResponse",
        "type": "object"
      },
      "shorts.v1alpha1.SeriesCorrelation": {
        "additionalProperties": false,
        "properties": {
          "false": {
            "description": "(proto int32)",
            "format": "int32",
            "title": false,
            "type": "integer"
          },
          "lastPeriod": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "last_period"
          },
          "overlay": {
            "$ref": "#/components/schemas/shorts.v1alpha1.EconomicSeriesInfo",
            "description": "(proto shorts.v1alpha1.EconomicSeriesInfo)",
            "title": "overlay"
          },
          "overlaySeriesKey": {
            "description": "(proto string)",
            "title": "overlay_series_key",
            "type": "string"
          },
          "r": {
            "description": "(proto double)",
            "format": "double",
            "title": "r",
            "type": "number"
          }
        },
        "title": "SeriesCorrelation",
        "type": "object"
      },
      "shorts.v1alpha1.SharedDeclaredCompany": {
        "additionalProperties": false,
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "currentlyDeclaredA": {
            "description": "(proto bool)",
            "title": "currently_declared_a",
            "type": "boolean"
          },
          "currentlyDeclaredB": {
            "description": "(proto bool)",
            "title": "currently_declared_b",
            "type": "boolean"
          },
          "holdersA": {
            "description": "(proto shorts.v1alpha1.RegisterHolder)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolder"
            },
            "title": "holders_a",
            "type": "array"
          },
          "holdersB": {
            "description": "(proto shorts.v1alpha1.RegisterHolder)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.RegisterHolder"
            },
            "title": "holders_b",
            "type": "array"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "SharedDeclaredCompany",
        "type": "object"
      },
      "shorts.v1alpha1.ShortCampaign": {
        "additionalProperties": false,
        "description": "A historic short campaign: the peak short position and what the price did after",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "currentShortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "current_short_pct",
            "type": "number"
          },
          "has3m": {
            "description": "enough price history to score the 3-month outcome (proto bool)",
            "title": "has_3m",
            "type": "boolean"
          },
          "has6m": {
            "description": "enough price history to score the 6-month outcome (proto bool)",
            "title": "has_6m",
            "type": "boolean"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "latestPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "latest_price",
            "type": "number"
          },
          "logoUrl": {
            "description": "(proto string)",
            "title": "logo_url",
            "type": "string"
          },
          "peakDate": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "peak_date",
            "type": "string"
          },
          "peakShortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "peak_short_pct",
            "type": "number"
          },
          "price3mAfter": {
            "description": "meaningful only when has_3m (proto double)",
            "format": "double",
            "title": "price_3m_after",
            "type": "number"
          },
          "price6mAfter": {
            "description": "meaningful only when has_6m (proto double)",
            "format": "double",
            "title": "price_6m_after",
            "type": "number"
          },
          "priceAtPeak": {
            "description": "0 when unknown (proto double)",
            "format": "double",
            "title": "price_at_peak",
            "type": "number"
          },
          "return3m": {
            "description": "percent price change 3 months after the peak (proto double)",
            "format": "double",
            "title": "return_3m",
            "type": "number"
          },
          "return6m": {
            "description": "percent price change 6 months after the peak (proto double)",
            "format": "double",
            "title": "return_6m",
            "type": "number"
          },
          "shortsWon3m": {
            "description": "price fell 3 months after the peak (proto bool)",
            "title": "shorts_won_3m",
            "type": "boolean"
          },
          "shortsWon6m": {
            "description": "price fell 6 months after the peak (proto bool)",
            "title": "shorts_won_6m",
            "type": "boolean"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "ShortCampaign",
        "type": "object"
      },
      "shorts.v1alpha1.ShortInterestOverlap": {
        "additionalProperties": false,
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "partyCounts": {
            "description": "(proto shorts.v1alpha1.PartyCount)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.PartyCount"
            },
            "title": "party_counts",
            "type": "array"
          },
          "politicianCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "politician_count",
            "type": "integer"
          },
          "shortPercent": {
            "description": "THE COMPANY's short interest (ASIC, market-wide). Says nothing about any\n member's holding, its size, or any gain or loss. (proto double)",
            "format": "double",
            "title": "short_percent",
            "type": "number"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          }
        },
        "title": "ShortInterestOverlap",
        "type": "object"
      },
      "shorts.v1alpha1.SimilarSuburb": {
        "additionalProperties": false,
        "description": "A suburb with a similar demographic + amenity profile (feature-vector kNN).",
        "properties": {
          "latestMedianPrice": {
            "description": "0 if unpriced (proto double)",
            "format": "double",
            "title": "latest_median_price",
            "type": "number"
          },
          "regionCode": {
            "description": "(proto string)",
            "title": "region_code",
            "type": "string"
          },
          "salCode": {
            "description": "(proto string)",
            "title": "sal_code",
            "type": "string"
          },
          "salName": {
            "description": "(proto string)",
            "title": "sal_name",
            "type": "string"
          },
          "similarity": {
            "description": "0..1 (1 = near-identical profile) (proto double)",
            "format": "double",
            "title": "similarity",
            "type": "number"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "SimilarSuburb",
        "type": "object"
      },
      "shorts.v1alpha1.SortDirection": {
        "description": "Sort direction",
        "enum": [
          "SORT_DIRECTION_DESC",
          "SORT_DIRECTION_ASC"
        ],
        "title": "SortDirection",
        "type": "string"
      },
      "shorts.v1alpha1.StateCompany": {
        "additionalProperties": false,
        "properties": {
          "basis": {
            "description": "short human-readable basis, e.g. \"Pilbara iron ore operations\" (proto string)",
            "title": "basis",
            "type": "string"
          },
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "logoUrl": {
            "description": "(proto string)",
            "title": "logo_url",
            "type": "string"
          },
          "marketCap": {
            "description": "(proto double)",
            "format": "double",
            "title": "market_cap",
            "type": "number"
          },
          "shortPercent": {
            "description": "0 when no current short data (proto double)",
            "format": "double",
            "title": "short_percent",
            "type": "number"
          },
          "source": {
            "description": "'llm' | 'hq_fallback' (proto string)",
            "title": "source",
            "type": "string"
          },
          "stockCode": {
            "description": "(proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "weight": {
            "description": "0-1 share of operations attributed to this state (proto double)",
            "format": "double",
            "title": "weight",
            "type": "number"
          }
        },
        "title": "StateCompany",
        "type": "object"
      },
      "shorts.v1alpha1.StateCompanyAggregate": {
        "additionalProperties": false,
        "properties": {
          "companyCount": {
            "description": "weight \u003e= 0.2, excludes region=international (proto int32)",
            "format": "int32",
            "title": "company_count",
            "type": "integer"
          },
          "exposureWeightedMarketCap": {
            "description": "(proto double)",
            "format": "double",
            "title": "exposure_weighted_market_cap",
            "type": "number"
          },
          "exposureWeightedShortPercent": {
            "description": "sum(w*mc*short)/sum(w*mc) over non-null-short rows (proto double)",
            "format": "double",
            "title": "exposure_weighted_short_percent",
            "type": "number"
          },
          "state": {
            "description": "(proto string)",
            "title": "state",
            "type": "string"
          }
        },
        "title": "StateCompanyAggregate",
        "type": "object"
      },
      "shorts.v1alpha1.StatePriceDropSummary": {
        "additionalProperties": false,
        "description": "State-grain rollup of the tracked listing corpus: recent asking-price\n reductions plus asking/sold price aggregates. Derived aggregates only —\n the underlying listings are ToS-restricted and never republished.",
        "properties": {
          "avgAsking": {
            "description": "AUD (0 if none) (proto double)",
            "format": "double",
            "title": "avg_asking",
            "type": "number"
          },
          "avgDropPct": {
            "description": "0..1 fraction (proto double)",
            "format": "double",
            "title": "avg_drop_pct",
            "type": "number"
          },
          "avgSold": {
            "description": "AUD (0 if none) (proto double)",
            "format": "double",
            "title": "avg_sold",
            "type": "number"
          },
          "droppedCount": {
            "description": "physical addresses that cut asking price (30-day window, deduped) (proto int32)",
            "format": "int32",
            "title": "dropped_count",
            "type": "integer"
          },
          "droppedShare": {
            "description": "dropped_count / total_active_listings (proto double)",
            "format": "double",
            "title": "dropped_share",
            "type": "number"
          },
          "droppedValue": {
            "description": "summed AUD reductions across dropped addresses (proto double)",
            "format": "double",
            "title": "dropped_value",
            "type": "number"
          },
          "forSaleCount": {
            "description": "active for-sale listings (proto int32)",
            "format": "int32",
            "title": "for_sale_count",
            "type": "integer"
          },
          "forSalePriced": {
            "description": "subset with a numeric asking price (auction/POA excluded) (proto int32)",
            "format": "int32",
            "title": "for_sale_priced",
            "type": "integer"
          },
          "maxDropPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "max_drop_pct",
            "type": "number"
          },
          "medianAsking": {
            "description": "AUD (proto double)",
            "format": "double",
            "title": "median_asking",
            "type": "number"
          },
          "medianDropPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_drop_pct",
            "type": "number"
          },
          "medianSold": {
            "description": "AUD (proto double)",
            "format": "double",
            "title": "median_sold",
            "type": "number"
          },
          "soldCount": {
            "description": "incidental sold captures — indicative only (proto int32)",
            "format": "int32",
            "title": "sold_count",
            "type": "integer"
          },
          "stateCode": {
            "description": "'NSW'|'VIC'|... or 'AU' for the national row (proto string)",
            "title": "state_code",
            "type": "string"
          },
          "suburbsTracked": {
            "description": "tracked suburbs contributing listings (proto int32)",
            "format": "int32",
            "title": "suburbs_tracked",
            "type": "integer"
          },
          "totalActiveListings": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_active_listings",
            "type": "integer"
          }
        },
        "title": "StatePriceDropSummary",
        "type": "object"
      },
      "shorts.v1alpha1.StateTotal": {
        "additionalProperties": false,
        "properties": {
          "companies": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "companies",
            "type": "integer"
          },
          "people": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "people",
            "type": "integer"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          }
        },
        "title": "StateTotal",
        "type": "object"
      },
      "shorts.v1alpha1.StockFinancialHighlights": {
        "additionalProperties": false,
        "description": "Financial highlights for a single stock",
        "properties": {
          "reports": {
            "description": "(proto shorts.v1alpha1.FinancialReportHighlight)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.FinancialReportHighlight"
            },
            "title": "reports",
            "type": "array"
          }
        },
        "title": "StockFinancialHighlights",
        "type": "object"
      },
      "shorts.v1alpha1.StockPoliticianInterest": {
        "additionalProperties": false,
        "properties": {
          "interest": {
            "$ref": "#/components/schemas/shorts.v1alpha1.DeclaredInterest",
            "description": "(proto shorts.v1alpha1.DeclaredInterest)",
            "title": "interest"
          },
          "politician": {
            "$ref": "#/components/schemas/shorts.v1alpha1.Politician",
            "description": "(proto shorts.v1alpha1.Politician)",
            "title": "politician"
          }
        },
        "title": "StockPoliticianInterest",
        "type": "object"
      },
      "shorts.v1alpha1.StockSignal": {
        "additionalProperties": false,
        "description": "A single reputation/risk signal for a stock",
        "properties": {
          "citations": {
            "description": "(proto string)",
            "items": {
              "type": "string"
            },
            "title": "citations",
            "type": "array"
          },
          "confidence": {
            "description": "(proto double)",
            "format": "double",
            "title": "confidence",
            "type": "number"
          },
          "detail": {
            "description": "(proto string)",
            "title": "detail",
            "type": "string"
          },
          "eventDate": {
            "description": "'YYYY-MM-DD' or 'YYYY' (proto string)",
            "title": "event_date",
            "type": "string"
          },
          "headline": {
            "description": "(proto string)",
            "title": "headline",
            "type": "string"
          },
          "kind": {
            "description": "'court' | 'sanction' | 'complaint' | 'award' | 'press' | ... (proto string)",
            "title": "kind",
            "type": "string"
          },
          "polarity": {
            "description": "'adverse' | 'positive' (proto string)",
            "title": "polarity",
            "type": "string"
          },
          "severity": {
            "description": "'high' | 'medium' | 'low' (adverse only) (proto string)",
            "title": "severity",
            "type": "string"
          }
        },
        "title": "StockSignal",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbAmenities": {
        "additionalProperties": false,
        "description": "One suburb summary for the map + list (keyed by ABS SAL code).\n Per-suburb amenity counts + derived lifestyle indices (Local Insights).\n OSM-derived counts (ODbL Produced Work) + state/GA sources; see the\n Local Insights design doc.",
        "properties": {
          "aldiCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "aldi_count",
            "type": "integer"
          },
          "amenityDensityScore": {
            "description": "0..100 (proto double)",
            "format": "double",
            "title": "amenity_density_score",
            "type": "number"
          },
          "colesCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "coles_count",
            "type": "integer"
          },
          "distToCoastKm": {
            "description": "straight-line km to the national coastline (proto double)",
            "format": "double",
            "title": "dist_to_coast_km",
            "type": "number"
          },
          "gpCount": {
            "description": "general practices (proto int32)",
            "format": "int32",
            "title": "gp_count",
            "type": "integer"
          },
          "hospitalsCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "hospitals_count",
            "type": "integer"
          },
          "igaCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "iga_count",
            "type": "integer"
          },
          "librariesCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "libraries_count",
            "type": "integer"
          },
          "nearestHospitalKm": {
            "description": "(proto double)",
            "format": "double",
            "title": "nearest_hospital_km",
            "type": "number"
          },
          "nearestSecondaryKm": {
            "description": "nearest secondary school (proto double)",
            "format": "double",
            "title": "nearest_secondary_km",
            "type": "number"
          },
          "nearestSupermarketKm": {
            "description": "(proto double)",
            "format": "double",
            "title": "nearest_supermarket_km",
            "type": "number"
          },
          "nearestTrainKm": {
            "description": "nearest railway station (proto double)",
            "format": "double",
            "title": "nearest_train_km",
            "type": "number"
          },
          "parksCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "parks_count",
            "type": "integer"
          },
          "pharmacyCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "pharmacy_count",
            "type": "integer"
          },
          "pubsBars": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "pubs_bars",
            "type": "integer"
          },
          "schoolsCatholic": {
            "description": "Catholic-sector schools (proto int32)",
            "format": "int32",
            "title": "schools_catholic",
            "type": "integer"
          },
          "schoolsGov": {
            "description": "School sector/type split (per-state CC-BY open data; 0 until ingested). government schools (proto int32)",
            "format": "int32",
            "title": "schools_gov",
            "type": "integer"
          },
          "schoolsIndependent": {
            "description": "Independent-sector schools (proto int32)",
            "format": "int32",
            "title": "schools_independent",
            "type": "integer"
          },
          "schoolsPrimary": {
            "description": "primary (incl. combined) (proto int32)",
            "format": "int32",
            "title": "schools_primary",
            "type": "integer"
          },
          "schoolsSecondary": {
            "description": "secondary (incl. combined) (proto int32)",
            "format": "int32",
            "title": "schools_secondary",
            "type": "integer"
          },
          "schoolsTotal": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "schools_total",
            "type": "integer"
          },
          "supermarketsTotal": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "supermarkets_total",
            "type": "integer"
          },
          "woolworthsCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "woolworths_count",
            "type": "integer"
          }
        },
        "title": "SuburbAmenities",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbBanner": {
        "additionalProperties": false,
        "description": "Editorial banner header for the suburb profile page.",
        "properties": {
          "archetype": {
            "description": "classified/refined archetype id (proto string)",
            "title": "archetype",
            "type": "string"
          },
          "bgKey": {
            "description": "library asset key (defaults to archetype) (proto string)",
            "title": "bg_key",
            "type": "string"
          },
          "bgUrl": {
            "description": "bespoke background override (optional) (proto string)",
            "title": "bg_url",
            "type": "string"
          },
          "blurb": {
            "description": "editorial one-liner (also page copy) (proto string)",
            "title": "blurb",
            "type": "string"
          },
          "landmarks": {
            "description": "(proto shorts.v1alpha1.SuburbLandmark)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbLandmark"
            },
            "title": "landmarks",
            "type": "array"
          }
        },
        "title": "SuburbBanner",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbCrime": {
        "additionalProperties": false,
        "description": "Per-suburb crime block. Message absent (null) = no reliable data for this\n suburb (uncovered state, TAS/NT, or gated small_pop/unreliable).",
        "properties": {
          "source": {
            "description": "'bocsar' (proto string)",
            "title": "source",
            "type": "string"
          },
          "sourceJurisdiction": {
            "description": "'NSW' (proto string)",
            "title": "source_jurisdiction",
            "type": "string"
          },
          "sourceLicence": {
            "description": "'CC-BY-4.0' (proto string)",
            "title": "source_licence",
            "type": "string"
          },
          "stats": {
            "description": "(proto shorts.v1alpha1.SuburbCrimeStat)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.SuburbCrimeStat"
            },
            "title": "stats",
            "type": "array"
          }
        },
        "title": "SuburbCrime",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbCrimeStat": {
        "additionalProperties": false,
        "description": "Latest reliable crime observation for one crime type (2-yr pooled,\n CVS-adjusted; small_pop/unreliable rows are gated out server-side).",
        "properties": {
          "crimeType": {
            "description": "'break_ins' | 'violent' | 'motor_vehicle' (+ future types) (proto string)",
            "title": "crime_type",
            "type": "string"
          },
          "fyEnding": {
            "description": "2025 = FY2024-25 (end year of the pooled window) (proto int32)",
            "format": "int32",
            "title": "fy_ending",
            "type": "integer"
          },
          "pctRank": {
            "description": "0..100 national pop-weighted percentile; \u003e 0 always (proto double)",
            "format": "double",
            "title": "pct_rank",
            "type": "number"
          },
          "ratePer100k": {
            "description": "adjusted offences per 100k residents (can be 0) (proto double)",
            "format": "double",
            "title": "rate_per_100k",
            "type": "number"
          }
        },
        "title": "SuburbCrimeStat",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbDemographics": {
        "additionalProperties": false,
        "properties": {
          "censusYear": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "census_year",
            "type": "integer"
          },
          "dwellingCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "dwelling_count",
            "type": "integer"
          },
          "labourForceParticipationRate": {
            "description": "0..100 of persons aged 15+ (G43) (proto double)",
            "format": "double",
            "title": "labour_force_participation_rate",
            "type": "number"
          },
          "medianAge": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_age",
            "type": "number"
          },
          "medianMonthlyMortgage": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_monthly_mortgage",
            "type": "number"
          },
          "medianWeeklyHhdIncome": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_weekly_hhd_income",
            "type": "number"
          },
          "medianWeeklyPerIncome": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_weekly_per_income",
            "type": "number"
          },
          "medianWeeklyRent": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_weekly_rent",
            "type": "number"
          },
          "pctBachelorOrHigher": {
            "description": "0..100 (G46) (proto double)",
            "format": "double",
            "title": "pct_bachelor_or_higher",
            "type": "number"
          },
          "pctBornOverseas": {
            "description": "Cultural demographics (ABS Census 2021: G01 birthplace/language, G13, G14). 0..100 (proto double)",
            "format": "double",
            "title": "pct_born_overseas",
            "type": "number"
          },
          "pctCoupleWithChildren": {
            "description": "0..100 families (G25) (proto double)",
            "format": "double",
            "title": "pct_couple_with_children",
            "type": "number"
          },
          "pctEnglishOnly": {
            "description": "0..100 (speaks English only at home) (proto double)",
            "format": "double",
            "title": "pct_english_only",
            "type": "number"
          },
          "pctFlatApartment": {
            "description": "0..100 occupied private dwellings (G32/G36) (proto double)",
            "format": "double",
            "title": "pct_flat_apartment",
            "type": "number"
          },
          "pctHighPersonalIncome": {
            "description": "0..100, $2,000+ weekly (G17) (proto double)",
            "format": "double",
            "title": "pct_high_personal_income",
            "type": "number"
          },
          "pctLonePersonHousehold": {
            "description": "0..100 households (G25) (proto double)",
            "format": "double",
            "title": "pct_lone_person_household",
            "type": "number"
          },
          "pctLowPersonalIncome": {
            "description": "Curated ABS Census 2021 GCP rates. Zero means absent in this proto3 API;\n the database retains NULL for missing/suppressed/quality-gated values. 0..100, $1-$499 weekly (G17) (proto double)",
            "format": "double",
            "title": "pct_low_personal_income",
            "type": "number"
          },
          "pctNoReligion": {
            "description": "0..100 (\"No religion\") (proto double)",
            "format": "double",
            "title": "pct_no_religion",
            "type": "number"
          },
          "pctOwnedMortgage": {
            "description": "(proto double)",
            "format": "double",
            "title": "pct_owned_mortgage",
            "type": "number"
          },
          "pctOwnedOutright": {
            "description": "(proto double)",
            "format": "double",
            "title": "pct_owned_outright",
            "type": "number"
          },
          "pctRented": {
            "description": "(proto double)",
            "format": "double",
            "title": "pct_rented",
            "type": "number"
          },
          "pctSeparateHouse": {
            "description": "0..100 occupied private dwellings (G32/G36) (proto double)",
            "format": "double",
            "title": "pct_separate_house",
            "type": "number"
          },
          "pctTopLanguage": {
            "description": "0..100 share speaking top_language (proto double)",
            "format": "double",
            "title": "pct_top_language",
            "type": "number"
          },
          "pctTopReligion": {
            "description": "0..100 share of the dominant religion (proto double)",
            "format": "double",
            "title": "pct_top_religion",
            "type": "number"
          },
          "population": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "population",
            "type": "integer"
          },
          "topLanguage": {
            "description": "top language other than English at home (proto string)",
            "title": "top_language",
            "type": "string"
          },
          "topReligion": {
            "description": "dominant religious affiliation (proto string)",
            "title": "top_religion",
            "type": "string"
          },
          "unemploymentRate": {
            "description": "0..100 of labour force (G43) (proto double)",
            "format": "double",
            "title": "unemployment_rate",
            "type": "number"
          }
        },
        "title": "SuburbDemographics",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbDropListing": {
        "additionalProperties": false,
        "description": "One recently-reduced listing, deep-linking OUT to the live portal page.",
        "properties": {
          "addressKey": {
            "description": "stable per-address key → /housing/property/[addressKey] (empty until backfilled) (proto string)",
            "title": "address_key",
            "type": "string"
          },
          "agencyName": {
            "description": "marketing agency ('' when not captured) (proto string)",
            "title": "agency_name",
            "type": "string"
          },
          "agentNames": {
            "description": "listing agents ('' when not captured) (proto string)",
            "items": {
              "type": "string"
            },
            "title": "agent_names",
            "type": "array"
          },
          "bathrooms": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "bathrooms",
            "type": "integer"
          },
          "bedrooms": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "bedrooms",
            "type": "integer"
          },
          "carSpaces": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "car_spaces",
            "type": "integer"
          },
          "displayAddress": {
            "description": "(proto string)",
            "title": "display_address",
            "type": "string"
          },
          "dropAbs": {
            "description": "AUD reduction (proto double)",
            "format": "double",
            "title": "drop_abs",
            "type": "number"
          },
          "dropPct": {
            "description": "0..1 fraction (proto double)",
            "format": "double",
            "title": "drop_pct",
            "type": "number"
          },
          "listingUrl": {
            "description": "deep link to the live portal listing (proto string)",
            "title": "listing_url",
            "type": "string"
          },
          "observedAt": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "when the reduction was detected (proto google.protobuf.Timestamp)",
            "title": "observed_at"
          },
          "prevPrice": {
            "description": "AUD before the reduction (proto double)",
            "format": "double",
            "title": "prev_price",
            "type": "number"
          },
          "price": {
            "description": "AUD current asking (proto double)",
            "format": "double",
            "title": "price",
            "type": "number"
          },
          "propertyType": {
            "description": "(proto string)",
            "title": "property_type",
            "type": "string"
          },
          "source": {
            "description": "'rea' | 'domain' (proto string)",
            "title": "source",
            "type": "string"
          }
        },
        "title": "SuburbDropListing",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbElevation": {
        "additionalProperties": false,
        "description": "Measured terrain statistics from Geoscience Australia's national\n SRTM-derived 1 Second DEM-S (CC-BY-4.0). Elevations are orthometric metres\n relative to the EGM96 geoid, not AHD or ellipsoidal heights. Low-lying land\n shares are measured proportions of valid DEM-covered land cells. No\n hydrology, drainage, surge, or catchment modelling is represented.",
        "properties": {
          "elevationMaxM": {
            "description": "(proto double)",
            "format": "double",
            "title": "elevation_max_m",
            "type": [
              "number",
              "null"
            ]
          },
          "elevationMedianM": {
            "description": "(proto double)",
            "format": "double",
            "title": "elevation_median_m",
            "type": [
              "number",
              "null"
            ]
          },
          "elevationMinM": {
            "description": "(proto double)",
            "format": "double",
            "title": "elevation_min_m",
            "type": [
              "number",
              "null"
            ]
          },
          "landShareBelow1m": {
            "description": "percent of valid sampled land area, 0..100 (proto double)",
            "format": "double",
            "title": "land_share_below_1m",
            "type": [
              "number",
              "null"
            ]
          },
          "landShareBelow2m": {
            "description": "percent of valid sampled land area, 0..100 (proto double)",
            "format": "double",
            "title": "land_share_below_2m",
            "type": [
              "number",
              "null"
            ]
          },
          "landShareBelow5m": {
            "description": "percent of valid sampled land area, 0..100 (proto double)",
            "format": "double",
            "title": "land_share_below_5m",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "title": "SuburbElevation",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbIndexEntry": {
        "additionalProperties": false,
        "properties": {
          "postcode": {
            "description": "(proto string)",
            "title": "postcode",
            "type": "string"
          },
          "salCode": {
            "description": "(proto string)",
            "title": "sal_code",
            "type": "string"
          },
          "salName": {
            "description": "(proto string)",
            "title": "sal_name",
            "type": "string"
          }
        },
        "title": "SuburbIndexEntry",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbLandmark": {
        "additionalProperties": false,
        "description": "A notable landmark shown in the suburb banner.",
        "properties": {
          "kind": {
            "description": "(proto string)",
            "title": "kind",
            "type": "string"
          },
          "name": {
            "description": "(proto string)",
            "title": "name",
            "type": "string"
          }
        },
        "title": "SuburbLandmark",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbListingStats": {
        "additionalProperties": false,
        "description": "Crawl-derived listing aggregates for one suburb (mv_suburb_listing_stats).\n\n This is the ONLY price signal available for the ~11,700 suburbs with no\n Valuer-General feed — QLD, WA, TAS, NT and ACT publish no open suburb-level\n median, and every commercial alternative is licensed.\n\n It is NOT a substitute for `SuburbSummary.latest_median_price` and must never\n be rendered as one:\n   - it is derived from CURRENT portal listings, not settled transfers;\n   - `median_sold` is the price listings were marked sold at, which is a\n     different measure from a Valuer-General median and is not comparable with\n     the NSW/VIC/SA figures;\n   - it covers whatever the crawl catalog reaches (500 suburbs nationally), so\n     it is not a population any rank can be computed against.\n\n LICENCE: these are DERIVED AGGREGATES. The underlying rows carry\n source_licence='proprietary-tos-restricted' and are never republished — see\n docs/feature/housing/data-sources.md. Counts and medians only.",
        "properties": {
          "avgAsking": {
            "description": "mean asking price of priced for-sale listings, AUD; 0 if none (proto double)",
            "format": "double",
            "title": "avg_asking",
            "type": "number"
          },
          "avgSold": {
            "description": "mean sold price, AUD; 0 if none (proto double)",
            "format": "double",
            "title": "avg_sold",
            "type": "number"
          },
          "forSaleCount": {
            "description": "active for-sale listings captured (proto int32)",
            "format": "int32",
            "title": "for_sale_count",
            "type": "integer"
          },
          "medianAsking": {
            "description": "median asking price, AUD; 0 if none (proto double)",
            "format": "double",
            "title": "median_asking",
            "type": "number"
          },
          "medianSold": {
            "description": "median sold price, AUD; 0 if none (proto double)",
            "format": "double",
            "title": "median_sold",
            "type": "number"
          },
          "soldCount": {
            "description": "recent sold listings captured (proto int32)",
            "format": "int32",
            "title": "sold_count",
            "type": "integer"
          }
        },
        "title": "SuburbListingStats",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbMetricColumn": {
        "additionalProperties": false,
        "description": "One numeric metric aligned position-for-position with GetSuburbIndex.",
        "properties": {
          "categoryLabels": {
            "description": "Non-empty for categorical metrics. Each present value is a zero-based\n integer index into this stable label dictionary. (proto string)",
            "items": {
              "type": "string"
            },
            "title": "category_labels",
            "type": "array"
          },
          "metricKey": {
            "description": "(proto string)",
            "title": "metric_key",
            "type": "string"
          },
          "nullMask": {
            "description": "Explicit NULL bitset. Least-significant-bit first: position i is byte i/8,\n bit i%8; 1 means NULL and 0 means present. This keeps a genuine zero present. (proto bytes)",
            "format": "byte",
            "title": "null_mask",
            "type": "string"
          },
          "values": {
            "description": "Numeric values are float32 and repeated float values are packed by default in proto3.\n When null_mask marks a position, the corresponding zero is only a placeholder. (proto float)",
            "items": {
              "format": "float",
              "type": "number"
            },
            "title": "values",
            "type": "array"
          }
        },
        "title": "SuburbMetricColumn",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbMetricPredicate": {
        "additionalProperties": false,
        "properties": {
          "max": {
            "description": "inclusive; at least one bound is required (proto float)",
            "format": "float",
            "title": "max",
            "type": [
              "number",
              "null"
            ]
          },
          "metricKey": {
            "description": "(proto string)",
            "title": "metric_key",
            "type": "string"
          },
          "min": {
            "description": "inclusive; at least one bound is required (proto float)",
            "format": "float",
            "title": "min",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "title": "SuburbMetricPredicate",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbPoliticianProperty": {
        "additionalProperties": false,
        "properties": {
          "interest": {
            "$ref": "#/components/schemas/shorts.v1alpha1.DeclaredInterest",
            "description": "(proto shorts.v1alpha1.DeclaredInterest)",
            "title": "interest"
          },
          "politician": {
            "$ref": "#/components/schemas/shorts.v1alpha1.Politician",
            "description": "(proto shorts.v1alpha1.Politician)",
            "title": "politician"
          }
        },
        "title": "SuburbPoliticianProperty",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbPriceDrop": {
        "additionalProperties": false,
        "description": "A suburb's aggregate price-drop signal over the rolling window (derived; the\n underlying listings are ToS-restricted and never republished here).",
        "properties": {
          "avgAsking": {
            "description": "mean asking price of priced for-sale listings, AUD (0 if none) (proto double)",
            "format": "double",
            "title": "avg_asking",
            "type": "number"
          },
          "avgDropPct": {
            "description": "0..1 fraction (0.06 == a 6% average reduction) (proto double)",
            "format": "double",
            "title": "avg_drop_pct",
            "type": "number"
          },
          "avgSold": {
            "description": "mean sold price, AUD (0 if none) (proto double)",
            "format": "double",
            "title": "avg_sold",
            "type": "number"
          },
          "droppedListingCount": {
            "description": "listings that cut their asking price (proto int32)",
            "format": "int32",
            "title": "dropped_listing_count",
            "type": "integer"
          },
          "droppedShare": {
            "description": "dropped_listing_count / total_active_listings (proto double)",
            "format": "double",
            "title": "dropped_share",
            "type": "number"
          },
          "droppedValue": {
            "description": "summed AUD reductions across dropped addresses (proto double)",
            "format": "double",
            "title": "dropped_value",
            "type": "number"
          },
          "forSaleCount": {
            "description": "Per-suburb listing-price aggregates (mv_suburb_listing_stats). active for-sale listings (proto int32)",
            "format": "int32",
            "title": "for_sale_count",
            "type": "integer"
          },
          "maxDropAbs": {
            "description": "largest single reduction, AUD (proto double)",
            "format": "double",
            "title": "max_drop_abs",
            "type": "number"
          },
          "maxDropPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "max_drop_pct",
            "type": "number"
          },
          "medianAsking": {
            "description": "median asking price, AUD (proto double)",
            "format": "double",
            "title": "median_asking",
            "type": "number"
          },
          "medianDropPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_drop_pct",
            "type": "number"
          },
          "medianSold": {
            "description": "median sold price, AUD (proto double)",
            "format": "double",
            "title": "median_sold",
            "type": "number"
          },
          "postcode": {
            "description": "for the canonical suburb-page URL (proto string)",
            "title": "postcode",
            "type": "string"
          },
          "regionCode": {
            "description": "(proto string)",
            "title": "region_code",
            "type": "string"
          },
          "salCode": {
            "description": "ABS SAL code (for the suburb page link), '' if unlinked (proto string)",
            "title": "sal_code",
            "type": "string"
          },
          "salName": {
            "description": "(proto string)",
            "title": "sal_name",
            "type": "string"
          },
          "soldCount": {
            "description": "recent sold listings captured (proto int32)",
            "format": "int32",
            "title": "sold_count",
            "type": "integer"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          },
          "totalActiveListings": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_active_listings",
            "type": "integer"
          }
        },
        "title": "SuburbPriceDrop",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbSeifa": {
        "additionalProperties": false,
        "description": "ABS Socio-Economic Indexes for Areas (SEIFA), licensed CC-BY-4.0.\n Null/absent when every index was suppressed, missing, or quality-gated.",
        "properties": {
          "ieo": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbSeifaIndex",
            "description": "Education and Occupation (proto shorts.v1alpha1.SuburbSeifaIndex)",
            "title": "ieo"
          },
          "ier": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbSeifaIndex",
            "description": "Economic Resources (proto shorts.v1alpha1.SuburbSeifaIndex)",
            "title": "ier"
          },
          "irsad": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbSeifaIndex",
            "description": "Relative Socio-economic Advantage and Disadvantage (proto shorts.v1alpha1.SuburbSeifaIndex)",
            "title": "irsad"
          },
          "irsd": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbSeifaIndex",
            "description": "Relative Socio-economic Disadvantage (proto shorts.v1alpha1.SuburbSeifaIndex)",
            "title": "irsd"
          }
        },
        "title": "SuburbSeifa",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbSeifaIndex": {
        "additionalProperties": false,
        "description": "One ABS 2021 SEIFA index for a Suburb and Locality (SAL). Deciles are 1..10;\n zero means that measure is absent rather than a valid decile.",
        "properties": {
          "decileAus": {
            "description": "rank decile within Australia (proto int32)",
            "format": "int32",
            "title": "decile_aus",
            "type": "integer"
          },
          "decileState": {
            "description": "rank decile within state (proto int32)",
            "format": "int32",
            "title": "decile_state",
            "type": "integer"
          },
          "score": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "score",
            "type": "integer"
          }
        },
        "title": "SuburbSeifaIndex",
        "type": "object"
      },
      "shorts.v1alpha1.SuburbSummary": {
        "additionalProperties": false,
        "properties": {
          "amenities": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbAmenities",
            "description": "Amenity/lifestyle metrics (Local Insights); null/absent until ingested. (proto shorts.v1alpha1.SuburbAmenities)",
            "title": "amenities"
          },
          "connectivityQualityScore": {
            "description": "0..100 (tech-tier proxy) (proto double)",
            "format": "double",
            "title": "connectivity_quality_score",
            "type": "number"
          },
          "crimeBreakInsRank": {
            "description": "Crime percentile ranks (0..100, higher = more reported crime; latest\n 2-yr-pooled FY, CVS-adjusted). 0 = no data — pct_rank is strictly \u003e 0\n whenever a reliable observation exists. Small-population and\n statistically-unreliable suburbs are gated server-side\n (mv_suburb_crime_latest) and read as no-data. NSW (BOCSAR) only in\n Phase 1; uncovered states/TAS/NT stay 0. CC-BY sources.\n\n The rank is population-weighted WITHIN THE SUBURB'S OWN STATE, never across\n states: each police force counts offences under its own rules, so a\n cross-jurisdiction pool would compare incomparable counts. Read \"82nd\n percentile\" as \"82nd of that state\", and label it that way in any client. (proto double)",
            "format": "double",
            "title": "crime_break_ins_rank",
            "type": "number"
          },
          "crimeMotorVehicleRank": {
            "description": "Field 31 is reserved by convention for crime_property_damage_rank once a\n CVS anchor exists; do not use 31 for anything else. (proto double)",
            "format": "double",
            "title": "crime_motor_vehicle_rank",
            "type": "number"
          },
          "crimeViolentRank": {
            "description": "(proto double)",
            "format": "double",
            "title": "crime_violent_rank",
            "type": "number"
          },
          "dominantNbnTech": {
            "description": "NBN connectivity (Local Insights); '' until ingested. Fixed Line | Fixed Wireless | Satellite (proto string)",
            "title": "dominant_nbn_tech",
            "type": "string"
          },
          "federalDivision": {
            "description": "Federal electoral representation (AEC 2025 election), spatially joined. Commonwealth Electoral Division (proto string)",
            "title": "federal_division",
            "type": "string"
          },
          "federalMember": {
            "description": "sitting House of Reps member (proto string)",
            "title": "federal_member",
            "type": "string"
          },
          "federalParty": {
            "description": "member's party (full name) (proto string)",
            "title": "federal_party",
            "type": "string"
          },
          "federalPartyAb": {
            "description": "party abbreviation (palette key) (proto string)",
            "title": "federal_party_ab",
            "type": "string"
          },
          "federalTppAlp": {
            "description": "0..100 Labor two-party-preferred % (proto double)",
            "format": "double",
            "title": "federal_tpp_alp",
            "type": "number"
          },
          "latestMedianPrice": {
            "description": "0 if no price data (proto double)",
            "format": "double",
            "title": "latest_median_price",
            "type": "number"
          },
          "latestPeriod": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "latest_period"
          },
          "medianAge": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_age",
            "type": "number"
          },
          "medianWeeklyHhdIncome": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_weekly_hhd_income",
            "type": "number"
          },
          "pctBornOverseas": {
            "description": "Cultural demographics for the map's \"highlight\" toggle (ABS Census 2021). 0..100 (proto double)",
            "format": "double",
            "title": "pct_born_overseas",
            "type": "number"
          },
          "pctTopLanguage": {
            "description": "0..100 share speaking top_language (proto double)",
            "format": "double",
            "title": "pct_top_language",
            "type": "number"
          },
          "politicianPropertyCount": {
            "description": "Properties declared in the federal Registers of Members'/Senators'\n Interests that resolve to this suburb. A COUNT of declarations — the\n registers record what is held, never quantity or value.\n\n A scalar rather than a nested message on purpose: the map needs a value for\n every suburb in a state (~5,000 rows per request), and a message would drag\n the politicians descriptor into the hot /housing/[state] route bundle. (proto int32)",
            "format": "int32",
            "title": "politician_property_count",
            "type": "integer"
          },
          "population": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "population",
            "type": "integer"
          },
          "postcode": {
            "description": "(proto string)",
            "title": "postcode",
            "type": "string"
          },
          "regionCode": {
            "description": "priced-region code (for the price series), '' if unpriced (proto string)",
            "title": "region_code",
            "type": "string"
          },
          "salCode": {
            "description": "(proto string)",
            "title": "sal_code",
            "type": "string"
          },
          "salName": {
            "description": "(proto string)",
            "title": "sal_name",
            "type": "string"
          },
          "seifa": {
            "$ref": "#/components/schemas/shorts.v1alpha1.SuburbSeifa",
            "description": "Profile-only in the current backend query; list responses leave it absent. (proto shorts.v1alpha1.SuburbSeifa)",
            "title": "seifa"
          },
          "stateCode": {
            "description": "(proto string)",
            "title": "state_code",
            "type": "string"
          },
          "stateDistrict": {
            "description": "ABS State Electoral Division (proto string)",
            "title": "state_district",
            "type": "string"
          },
          "stateMember": {
            "description": "state lower-house member ('' for Hare-Clark TAS/ACT) (proto string)",
            "title": "state_member",
            "type": "string"
          },
          "stateParty": {
            "description": "state member's party (full name) (proto string)",
            "title": "state_party",
            "type": "string"
          },
          "statePartyAb": {
            "description": "state party abbreviation (palette key) (proto string)",
            "title": "state_party_ab",
            "type": "string"
          },
          "topLanguage": {
            "description": "top language other than English at home, '' if none (proto string)",
            "title": "top_language",
            "type": "string"
          },
          "topReligion": {
            "description": "dominant religious affiliation, '' if none (proto string)",
            "title": "top_religion",
            "type": "string"
          },
          "yoyPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "yoy_pct",
            "type": "number"
          }
        },
        "title": "SuburbSummary",
        "type": "object"
      },
      "shorts.v1alpha1.TakeCitation": {
        "additionalProperties": false,
        "description": "A single cited source referenced by a [ref-N] marker in body_md.",
        "properties": {
          "date": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "date",
            "type": "string"
          },
          "headline": {
            "description": "(proto string)",
            "title": "headline",
            "type": "string"
          },
          "refId": {
            "description": "\"ref-1\", \"ref-2\", … (proto string)",
            "title": "ref_id",
            "type": "string"
          },
          "source": {
            "description": "'stockhead', 'motleyfool', etc. (proto string)",
            "title": "source",
            "type": "string"
          },
          "type": {
            "description": "'news' | 'trade' | 'data' (proto string)",
            "title": "type",
            "type": "string"
          },
          "url": {
            "description": "(proto string)",
            "title": "url",
            "type": "string"
          }
        },
        "title": "TakeCitation",
        "type": "object"
      },
      "shorts.v1alpha1.TimelineEvent": {
        "additionalProperties": false,
        "description": "A single event in the stock's timeline",
        "properties": {
          "date": {
            "description": "YYYY-MM-DD (proto string)",
            "title": "date",
            "type": "string"
          },
          "detail": {
            "description": "(proto string)",
            "title": "detail",
            "type": "string"
          },
          "isPriceSensitive": {
            "description": "(proto bool)",
            "title": "is_price_sensitive",
            "type": "boolean"
          },
          "sentiment": {
            "description": "for news events; '' otherwise (proto string)",
            "title": "sentiment",
            "type": "string"
          },
          "title": {
            "description": "(proto string)",
            "title": "title",
            "type": "string"
          },
          "type": {
            "description": "'announcement' | 'director_trade' | 'news' | 'short_spike' (proto string)",
            "title": "type",
            "type": "string"
          },
          "url": {
            "description": "(proto string)",
            "title": "url",
            "type": "string"
          }
        },
        "title": "TimelineEvent",
        "type": "object"
      },
      "shorts.v1alpha1.TopDonor": {
        "additionalProperties": false,
        "description": "TopDonor is one payer's itemised receipts into party branches for one\n financial year.\n\n donor_name is VERBATIM as lodged — the source is unnormalised and one entity\n can appear under several spellings. donor_name_norm is the key those spellings\n were grouped by, published so a reader can see exactly what was combined.",
        "properties": {
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "donorName": {
            "description": "(proto string)",
            "title": "donor_name",
            "type": "string"
          },
          "donorNameNorm": {
            "description": "(proto string)",
            "title": "donor_name_norm",
            "type": "string"
          },
          "matchMethod": {
            "description": "'name_exact' | 'curated_alias'; empty when unmatched (proto string)",
            "title": "match_method",
            "type": "string"
          },
          "receiptCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "receipt_count",
            "type": "integer"
          },
          "receiptTypes": {
            "$ref": "#/components/schemas/shorts.v1alpha1.ReceiptTypeSplit",
            "description": "sums to total_cents (proto shorts.v1alpha1.ReceiptTypeSplit)",
            "title": "receipt_types"
          },
          "recipients": {
            "description": "(proto shorts.v1alpha1.DonorRecipientGroup)",
            "items": {
              "$ref": "#/components/schemas/shorts.v1alpha1.DonorRecipientGroup"
            },
            "title": "recipients",
            "type": "array"
          },
          "stockCode": {
            "description": "Set ONLY on an exact normalised-name match or a curated alias. A normalised\n name that collides across stock codes is excluded entirely — when in doubt,\n no link. Empty means \"not matched\", never \"not listed\". (proto string)",
            "title": "stock_code",
            "type": "string"
          },
          "totalCents": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "total_cents",
            "type": [
              "integer",
              "string"
            ]
          }
        },
        "title": "TopDonor",
        "type": "object"
      },
      "shorts.v1alpha1.VerdictComponent": {
        "additionalProperties": false,
        "description": "A single component of the composite verdict",
        "properties": {
          "contribution": {
            "description": "weight * score * 100 (points of the composite) (proto double)",
            "format": "double",
            "title": "contribution",
            "type": "number"
          },
          "name": {
            "description": "e.g. \"short_trend\" (proto string)",
            "title": "name",
            "type": "string"
          },
          "score": {
            "description": "normalized -1..1, bullish positive (proto double)",
            "format": "double",
            "title": "score",
            "type": "number"
          },
          "weight": {
            "description": "0..1 (proto double)",
            "format": "double",
            "title": "weight",
            "type": "number"
          }
        },
        "title": "VerdictComponent",
        "type": "object"
      },
      "shorts.v1alpha1.VerdictLabel": {
        "description": "Verdict band derived from the composite score",
        "enum": [
          "VERDICT_LABEL_UNSPECIFIED",
          "VERDICT_LABEL_STRONG_BEARISH",
          "VERDICT_LABEL_BEARISH",
          "VERDICT_LABEL_NEUTRAL",
          "VERDICT_LABEL_BULLISH",
          "VERDICT_LABEL_STRONG_BULLISH"
        ],
        "title": "VerdictLabel",
        "type": "string"
      },
      "shorts.v1alpha1.ViewMode": {
        "enum": [
          "CURRENT_CHANGE",
          "PERCENTAGE_CHANGE"
        ],
        "title": "ViewMode",
        "type": "string"
      },
      "shorts.v1alpha1.WeeklyEventCount": {
        "additionalProperties": false,
        "description": "WeeklyEventCount is one Monday-anchored week of DATED events. Undated\n lodgements have no point on a timeline and are excluded — never placed at a\n parliament's opening, which would fabricate a date.\n\n The series is CONTIGUOUS: every Monday from the window's start to the current\n week is present, weeks with no events included at zero, so a bar chart's gaps\n are real quiet weeks rather than missing buckets drawn adjacent.",
        "properties": {
          "addedCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "added_count",
            "type": "integer"
          },
          "removedCount": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "removed_count",
            "type": "integer"
          },
          "weekStart": {
            "description": "YYYY-MM-DD, Monday (proto string)",
            "title": "week_start",
            "type": "string"
          }
        },
        "title": "WeeklyEventCount",
        "type": "object"
      },
      "shorts.v1alpha1.WeeklyIndustryStat": {
        "additionalProperties": false,
        "description": "Aggregate short interest by industry for the report period",
        "properties": {
          "avgShortPct": {
            "description": "Average short % across stocks in the industry (proto double)",
            "format": "double",
            "title": "avg_short_pct",
            "type": "number"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "stockCount": {
            "description": "Number of shorted stocks in the industry (proto int32)",
            "format": "int32",
            "title": "stock_count",
            "type": "integer"
          },
          "topStockCode": {
            "description": "Most shorted stock in the industry (proto string)",
            "title": "top_stock_code",
            "type": "string"
          },
          "topStockPct": {
            "description": "Its short % (proto double)",
            "format": "double",
            "title": "top_stock_pct",
            "type": "number"
          },
          "wowChange": {
            "description": "Change in the industry average vs the prior period (proto double)",
            "format": "double",
            "title": "wow_change",
            "type": "number"
          }
        },
        "title": "WeeklyIndustryStat",
        "type": "object"
      },
      "shorts.v1alpha1.WeeklyMarketStats": {
        "additionalProperties": false,
        "description": "Aggregate market statistics for the week",
        "properties": {
          "avgShortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "avg_short_pct",
            "type": "number"
          },
          "fallerCount": {
            "description": "Market-wide count of stocks whose short % fell (proto int32)",
            "format": "int32",
            "title": "faller_count",
            "type": "integer"
          },
          "maxShortCode": {
            "description": "(proto string)",
            "title": "max_short_code",
            "type": "string"
          },
          "maxShortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "max_short_pct",
            "type": "number"
          },
          "medianShortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "median_short_pct",
            "type": "number"
          },
          "riserCount": {
            "description": "Market-wide count of stocks whose short % rose (proto int32)",
            "format": "int32",
            "title": "riser_count",
            "type": "integer"
          },
          "stocksAbove10pct": {
            "description": "Count of stocks with short interest \u003e= 10% (proto int32)",
            "format": "int32",
            "title": "stocks_above_10pct",
            "type": "integer"
          },
          "stocksAbove5pct": {
            "description": "Count of stocks with short interest \u003e= 5% (proto int32)",
            "format": "int32",
            "title": "stocks_above_5pct",
            "type": "integer"
          },
          "totalStocksShorted": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "total_stocks_shorted",
            "type": "integer"
          },
          "wowAvgChange": {
            "description": "Week-on-week change in average short % (proto double)",
            "format": "double",
            "title": "wow_avg_change",
            "type": "number"
          }
        },
        "title": "WeeklyMarketStats",
        "type": "object"
      },
      "shorts.v1alpha1.WeeklyNarrative": {
        "additionalProperties": false,
        "description": "Narrative sections of the weekly report",
        "properties": {
          "industryAnalysis": {
            "description": "(proto string)",
            "title": "industry_analysis",
            "type": "string"
          },
          "moversAnalysis": {
            "description": "(proto string)",
            "title": "movers_analysis",
            "type": "string"
          },
          "openingHook": {
            "description": "(proto string)",
            "title": "opening_hook",
            "type": "string"
          },
          "outlook": {
            "description": "(proto string)",
            "title": "outlook",
            "type": "string"
          },
          "topAnalysis": {
            "description": "(proto string)",
            "title": "top_analysis",
            "type": "string"
          }
        },
        "title": "WeeklyNarrative",
        "type": "object"
      },
      "shorts.v1alpha1.WeeklyReportCitation": {
        "additionalProperties": false,
        "description": "A citation referencing a data source in the weekly report narrative",
        "properties": {
          "date": {
            "description": "(proto string)",
            "title": "date",
            "type": "string"
          },
          "id": {
            "description": "e.g., \"ref-1\" (proto string)",
            "title": "id",
            "type": "string"
          },
          "source": {
            "description": "e.g., \"BHP H1 FY2025 Results\" (proto string)",
            "title": "source",
            "type": "string"
          },
          "type": {
            "description": "\"financial_report\", \"announcement\", \"asic_data\", \"price_data\" (proto string)",
            "title": "type",
            "type": "string"
          },
          "url": {
            "description": "(proto string)",
            "title": "url",
            "type": "string"
          }
        },
        "title": "WeeklyReportCitation",
        "type": "object"
      },
      "shorts.v1alpha1.WeeklyReportFAQ": {
        "additionalProperties": false,
        "description": "FAQ entry in the weekly report",
        "properties": {
          "answer": {
            "description": "(proto string)",
            "title": "answer",
            "type": "string"
          },
          "question": {
            "description": "(proto string)",
            "title": "question",
            "type": "string"
          }
        },
        "title": "WeeklyReportFAQ",
        "type": "object"
      },
      "shorts.v1alpha1.WeeklyReportMover": {
        "additionalProperties": false,
        "description": "A mover (riser or faller) in the weekly report",
        "properties": {
          "change": {
            "description": "Absolute change in short percentage (proto double)",
            "format": "double",
            "title": "change",
            "type": "number"
          },
          "code": {
            "description": "(proto string)",
            "title": "code",
            "type": "string"
          },
          "currentPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "current_pct",
            "type": "number"
          },
          "daysToCover": {
            "description": "Reported short shares / 20-day average volume (0 = unknown) (proto double)",
            "format": "double",
            "title": "days_to_cover",
            "type": "number"
          },
          "history": {
            "description": "Weekly short % history, oldest first (~13 points) (proto double)",
            "items": {
              "format": "double",
              "type": "number"
            },
            "title": "history",
            "type": "array"
          },
          "industry": {
            "description": "Company industry (hydrated at read time if absent in snapshot) (proto string)",
            "title": "industry",
            "type": "string"
          },
          "logoUrl": {
            "description": "Company logo icon URL (hydrated at read time) (proto string)",
            "title": "logo_url",
            "type": "string"
          },
          "name": {
            "description": "(proto string)",
            "title": "name",
            "type": "string"
          },
          "previousPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "previous_pct",
            "type": "number"
          },
          "significance": {
            "description": "Composite significance score used for ranking movers (proto double)",
            "format": "double",
            "title": "significance",
            "type": "number"
          },
          "streakWeeks": {
            "description": "Consecutive weeks moving in the same direction (proto int32)",
            "format": "int32",
            "title": "streak_weeks",
            "type": "integer"
          },
          "zScore": {
            "description": "How unusual this move is vs the stock's own weekly-change history (proto double)",
            "format": "double",
            "title": "z_score",
            "type": "number"
          }
        },
        "title": "WeeklyReportMover",
        "type": "object"
      },
      "shorts.v1alpha1.WeeklyReportStock": {
        "additionalProperties": false,
        "description": "A stock entry in the weekly top shorted list",
        "properties": {
          "code": {
            "description": "(proto string)",
            "title": "code",
            "type": "string"
          },
          "daysToCover": {
            "description": "Reported short shares / 20-day average volume (0 = unknown) (proto double)",
            "format": "double",
            "title": "days_to_cover",
            "type": "number"
          },
          "history": {
            "description": "Weekly short % history, oldest first (~13 points) (proto double)",
            "items": {
              "format": "double",
              "type": "number"
            },
            "title": "history",
            "type": "array"
          },
          "industry": {
            "description": "Company industry (hydrated at read time if absent in snapshot) (proto string)",
            "title": "industry",
            "type": "string"
          },
          "isNewEntrant": {
            "description": "New to the top 10 this period (proto bool)",
            "title": "is_new_entrant",
            "type": "boolean"
          },
          "logoUrl": {
            "description": "Company logo icon URL (hydrated at read time) (proto string)",
            "title": "logo_url",
            "type": "string"
          },
          "name": {
            "description": "(proto string)",
            "title": "name",
            "type": "string"
          },
          "rank": {
            "description": "(proto int32)",
            "format": "int32",
            "title": "rank",
            "type": "integer"
          },
          "shortPct": {
            "description": "(proto double)",
            "format": "double",
            "title": "short_pct",
            "type": "number"
          },
          "wowChange": {
            "description": "Week-on-week change in short percentage (proto double)",
            "format": "double",
            "title": "wow_change",
            "type": "number"
          }
        },
        "title": "WeeklyReportStock",
        "type": "object"
      },
      "shorts.v1alpha1.WeeklyReportTrendInsight": {
        "additionalProperties": false,
        "description": "Structured trend insight for a riser or faller",
        "properties": {
          "code": {
            "description": "(proto string)",
            "title": "code",
            "type": "string"
          },
          "compositeSignal": {
            "description": "(proto string)",
            "title": "composite_signal",
            "type": "string"
          },
          "direction": {
            "description": "\"riser\" or \"faller\" (proto string)",
            "title": "direction",
            "type": "string"
          },
          "financialSignals": {
            "description": "(proto string)",
            "items": {
              "type": "string"
            },
            "title": "financial_signals",
            "type": "array"
          },
          "keyAnnouncements": {
            "description": "(proto string)",
            "items": {
              "type": "string"
            },
            "title": "key_announcements",
            "type": "array"
          },
          "pricePattern": {
            "description": "\"contrarian\", \"momentum\", \"covering\", \"unwinding\" (proto string)",
            "title": "price_pattern",
            "type": "string"
          },
          "shortChange": {
            "description": "(proto double)",
            "format": "double",
            "title": "short_change",
            "type": "number"
          },
          "weeklyPriceChange": {
            "description": "(proto double)",
            "format": "double",
            "title": "weekly_price_change",
            "type": "number"
          }
        },
        "title": "WeeklyReportTrendInsight",
        "type": "object"
      },
      "stocks.v1alpha1.CompanyPerson": {
        "additionalProperties": false,
        "properties": {
          "bio": {
            "description": "(proto string)",
            "title": "bio",
            "type": "string"
          },
          "imageGcsUrl": {
            "description": "GCS-hosted image URL (proto string)",
            "title": "image_gcs_url",
            "type": "string"
          },
          "imageUrl": {
            "description": "Original source image URL (e.g. LinkedIn, Wikipedia) (proto string)",
            "title": "image_url",
            "type": "string"
          },
          "linkedinUrl": {
            "description": "LinkedIn profile URL (proto string)",
            "title": "linkedin_url",
            "type": "string"
          },
          "name": {
            "description": "(proto string)",
            "title": "name",
            "type": "string"
          },
          "role": {
            "description": "(proto string)",
            "title": "role",
            "type": "string"
          },
          "sourceType": {
            "description": "\"company_website\" | \"exa\" | \"wikipedia\" (proto string)",
            "title": "source_type",
            "type": "string"
          },
          "sourceUrl": {
            "description": "Where the person data was found (proto string)",
            "title": "source_url",
            "type": "string"
          }
        },
        "title": "CompanyPerson",
        "type": "object"
      },
      "stocks.v1alpha1.FinancialReport": {
        "additionalProperties": false,
        "properties": {
          "date": {
            "description": "(proto string)",
            "title": "date",
            "type": "string"
          },
          "gcsUrl": {
            "description": "(proto string)",
            "title": "gcs_url",
            "type": "string"
          },
          "source": {
            "description": "(proto string)",
            "title": "source",
            "type": "string"
          },
          "title": {
            "description": "(proto string)",
            "title": "title",
            "type": "string"
          },
          "type": {
            "description": "(proto string)",
            "title": "type",
            "type": "string"
          },
          "url": {
            "description": "(proto string)",
            "title": "url",
            "type": "string"
          }
        },
        "title": "FinancialReport",
        "type": "object"
      },
      "stocks.v1alpha1.FinancialStatementSet": {
        "additionalProperties": false,
        "properties": {
          "balanceSheet": {
            "additionalProperties": {
              "$ref": "#/components/schemas/stocks.v1alpha1.StatementValues",
              "description": "(proto stocks.v1alpha1.StatementValues)",
              "title": "value"
            },
            "description": "(proto stocks.v1alpha1.FinancialStatementSet.BalanceSheetEntry)",
            "title": "balance_sheet",
            "type": "object"
          },
          "cashFlow": {
            "additionalProperties": {
              "$ref": "#/components/schemas/stocks.v1alpha1.StatementValues",
              "description": "(proto stocks.v1alpha1.StatementValues)",
              "title": "value"
            },
            "description": "(proto stocks.v1alpha1.FinancialStatementSet.CashFlowEntry)",
            "title": "cash_flow",
            "type": "object"
          },
          "incomeStatement": {
            "additionalProperties": {
              "$ref": "#/components/schemas/stocks.v1alpha1.StatementValues",
              "description": "(proto stocks.v1alpha1.StatementValues)",
              "title": "value"
            },
            "description": "(proto stocks.v1alpha1.FinancialStatementSet.IncomeStatementEntry)",
            "title": "income_statement",
            "type": "object"
          }
        },
        "title": "FinancialStatementSet",
        "type": "object"
      },
      "stocks.v1alpha1.FinancialStatements": {
        "additionalProperties": false,
        "properties": {
          "annual": {
            "$ref": "#/components/schemas/stocks.v1alpha1.FinancialStatementSet",
            "description": "(proto stocks.v1alpha1.FinancialStatementSet)",
            "title": "annual"
          },
          "error": {
            "description": "(proto string)",
            "title": "error",
            "type": "string"
          },
          "info": {
            "$ref": "#/components/schemas/stocks.v1alpha1.FinancialStatementsInfo",
            "description": "(proto stocks.v1alpha1.FinancialStatementsInfo)",
            "title": "info"
          },
          "quarterly": {
            "$ref": "#/components/schemas/stocks.v1alpha1.FinancialStatementSet",
            "description": "(proto stocks.v1alpha1.FinancialStatementSet)",
            "title": "quarterly"
          },
          "success": {
            "description": "(proto bool)",
            "title": "success",
            "type": "boolean"
          }
        },
        "title": "FinancialStatements",
        "type": "object"
      },
      "stocks.v1alpha1.FinancialStatementsInfo": {
        "additionalProperties": false,
        "properties": {
          "beta": {
            "description": "(proto double)",
            "format": "double",
            "title": "beta",
            "type": "number"
          },
          "currentPrice": {
            "description": "(proto double)",
            "format": "double",
            "title": "current_price",
            "type": "number"
          },
          "dividendYield": {
            "description": "(proto double)",
            "format": "double",
            "title": "dividend_yield",
            "type": "number"
          },
          "employeeCount": {
            "description": "(proto int64)",
            "format": "int64",
            "title": "employee_count",
            "type": [
              "integer",
              "string"
            ]
          },
          "eps": {
            "description": "(proto double)",
            "format": "double",
            "title": "eps",
            "type": "number"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "marketCap": {
            "description": "(proto double)",
            "format": "double",
            "title": "market_cap",
            "type": "number"
          },
          "peRatio": {
            "description": "(proto double)",
            "format": "double",
            "title": "pe_ratio",
            "type": "number"
          },
          "sector": {
            "description": "(proto string)",
            "title": "sector",
            "type": "string"
          },
          "volume": {
            "description": "(proto double)",
            "format": "double",
            "title": "volume",
            "type": "number"
          },
          "week52High": {
            "description": "(proto double)",
            "format": "double",
            "title": "week_52_high",
            "type": "number"
          },
          "week52Low": {
            "description": "(proto double)",
            "format": "double",
            "title": "week_52_low",
            "type": "number"
          }
        },
        "title": "FinancialStatementsInfo",
        "type": "object"
      },
      "stocks.v1alpha1.IndustryTreeMap": {
        "additionalProperties": false,
        "properties": {
          "industries": {
            "description": "indstries that a stock will belond to (proto string)",
            "items": {
              "type": "string"
            },
            "title": "industries",
            "type": "array"
          },
          "stocks": {
            "description": "(proto stocks.v1alpha1.TreemapShortPosition)",
            "items": {
              "$ref": "#/components/schemas/stocks.v1alpha1.TreemapShortPosition"
            },
            "title": "stocks",
            "type": "array"
          }
        },
        "title": "IndustryTreeMap",
        "type": "object"
      },
      "stocks.v1alpha1.SocialMediaLinks": {
        "additionalProperties": false,
        "properties": {
          "facebook": {
            "description": "(proto string)",
            "title": "facebook",
            "type": "string"
          },
          "linkedin": {
            "description": "(proto string)",
            "title": "linkedin",
            "type": "string"
          },
          "twitter": {
            "description": "(proto string)",
            "title": "twitter",
            "type": "string"
          },
          "website": {
            "description": "(proto string)",
            "title": "website",
            "type": "string"
          },
          "youtube": {
            "description": "(proto string)",
            "title": "youtube",
            "type": "string"
          }
        },
        "title": "SocialMediaLinks",
        "type": "object"
      },
      "stocks.v1alpha1.StatementValues": {
        "additionalProperties": false,
        "properties": {
          "metrics": {
            "additionalProperties": {
              "description": "(proto double)",
              "format": "double",
              "title": "value",
              "type": "number"
            },
            "description": "(proto stocks.v1alpha1.StatementValues.MetricsEntry)",
            "title": "metrics",
            "type": "object"
          }
        },
        "title": "StatementValues",
        "type": "object"
      },
      "stocks.v1alpha1.Stock": {
        "additionalProperties": false,
        "description": "A Stock represents a single stock's metadata.",
        "properties": {
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "logoUrl": {
            "description": "TODO(castlemilk): add more metadata here as needed (proto string)",
            "title": "logo_url",
            "type": "string"
          },
          "name": {
            "description": "The full name of the stock. (proto string)",
            "title": "name",
            "type": "string"
          },
          "percentageShorted": {
            "description": "(proto float)",
            "format": "float",
            "title": "percentage_shorted",
            "type": "number"
          },
          "productCode": {
            "description": "The stock code, e.g., \"CBA\", \"ZIP\", \"PLS\". (proto string)",
            "title": "product_code",
            "type": "string"
          },
          "reportedShortPositions": {
            "description": "(proto float)",
            "format": "float",
            "title": "reported_short_positions",
            "type": "number"
          },
          "tags": {
            "description": "(proto string)",
            "items": {
              "type": "string"
            },
            "title": "tags",
            "type": "array"
          },
          "totalProductInIssue": {
            "description": "(proto float)",
            "format": "float",
            "title": "total_product_in_issue",
            "type": "number"
          }
        },
        "title": "Stock",
        "type": "object"
      },
      "stocks.v1alpha1.StockDetails": {
        "additionalProperties": false,
        "description": "*\nTable \"public.metadata\"\nColumn       | Type | Collation | Nullable | Default \n-------------------+------+-----------+----------+---------\ncompany_name      | text |           |          | \naddress           | text |           |          | \nsummary           | text |           |          | \ndetails           | text |           |          | \nwebsite           | text |           |          | \nstock_code        | text |           |          | \nlinks             | text |           |          | \nimages            | text |           |          | \ncompany_logo_link | text |           |          | \ngcsUrl            | text |           |          |",
        "properties": {
          "address": {
            "description": "(proto string)",
            "title": "address",
            "type": "string"
          },
          "companyHistory": {
            "description": "(proto string)",
            "title": "company_history",
            "type": "string"
          },
          "companyName": {
            "description": "(proto string)",
            "title": "company_name",
            "type": "string"
          },
          "competitiveAdvantages": {
            "description": "(proto string)",
            "title": "competitive_advantages",
            "type": "string"
          },
          "details": {
            "description": "(proto string)",
            "title": "details",
            "type": "string"
          },
          "enhancedSummary": {
            "description": "(proto string)",
            "title": "enhanced_summary",
            "type": "string"
          },
          "enrichmentDate": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "(proto google.protobuf.Timestamp)",
            "title": "enrichment_date"
          },
          "enrichmentError": {
            "description": "(proto string)",
            "title": "enrichment_error",
            "type": "string"
          },
          "enrichmentStatus": {
            "description": "(proto string)",
            "title": "enrichment_status",
            "type": "string"
          },
          "financialReports": {
            "description": "(proto stocks.v1alpha1.FinancialReport)",
            "items": {
              "$ref": "#/components/schemas/stocks.v1alpha1.FinancialReport"
            },
            "title": "financial_reports",
            "type": "array"
          },
          "financialStatements": {
            "$ref": "#/components/schemas/stocks.v1alpha1.FinancialStatements",
            "description": "(proto stocks.v1alpha1.FinancialStatements)",
            "title": "financial_statements"
          },
          "gcsUrl": {
            "description": "(proto string)",
            "title": "gcs_url",
            "type": "string"
          },
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "keyPeople": {
            "description": "(proto stocks.v1alpha1.CompanyPerson)",
            "items": {
              "$ref": "#/components/schemas/stocks.v1alpha1.CompanyPerson"
            },
            "title": "key_people",
            "type": "array"
          },
          "logoFormat": {
            "description": "Original format of discovered logo (svg, png, etc) (proto string)",
            "title": "logo_format",
            "type": "string"
          },
          "logoGcsUrl": {
            "description": "Logo URLs (populated by logo discovery pipeline) Full logo PNG URL (background removed) (proto string)",
            "title": "logo_gcs_url",
            "type": "string"
          },
          "logoIconGcsUrl": {
            "description": "Icon-only logo PNG URL (proto string)",
            "title": "logo_icon_gcs_url",
            "type": "string"
          },
          "logoSourceUrl": {
            "description": "Original URL where the logo was found (proto string)",
            "title": "logo_source_url",
            "type": "string"
          },
          "logoSvgGcsUrl": {
            "description": "Original SVG logo URL (if discovered as SVG) (proto string)",
            "title": "logo_svg_gcs_url",
            "type": "string"
          },
          "productCode": {
            "description": "(proto string)",
            "title": "product_code",
            "type": "string"
          },
          "recentDevelopments": {
            "description": "(proto string)",
            "title": "recent_developments",
            "type": "string"
          },
          "riskFactors": {
            "description": "(proto string)",
            "items": {
              "type": "string"
            },
            "title": "risk_factors",
            "type": "array"
          },
          "socialMediaLinks": {
            "$ref": "#/components/schemas/stocks.v1alpha1.SocialMediaLinks",
            "description": "(proto stocks.v1alpha1.SocialMediaLinks)",
            "title": "social_media_links"
          },
          "summary": {
            "description": "(proto string)",
            "title": "summary",
            "type": "string"
          },
          "tags": {
            "description": "(proto string)",
            "items": {
              "type": "string"
            },
            "title": "tags",
            "type": "array"
          },
          "website": {
            "description": "(proto string)",
            "title": "website",
            "type": "string"
          }
        },
        "title": "StockDetails",
        "type": "object"
      },
      "stocks.v1alpha1.TimeSeriesData": {
        "additionalProperties": false,
        "description": "TimeSeriesData represents time series data for a stock.",
        "properties": {
          "industry": {
            "description": "Industry classification (populated in summary mode from company metadata). (proto string)",
            "title": "industry",
            "type": "string"
          },
          "latestShortPosition": {
            "description": "The latest short position. (proto double)",
            "format": "double",
            "title": "latest_short_position",
            "type": "number"
          },
          "max": {
            "$ref": "#/components/schemas/stocks.v1alpha1.TimeSeriesPoint",
            "description": "The maximum short position in the range (proto stocks.v1alpha1.TimeSeriesPoint)",
            "title": "max"
          },
          "min": {
            "$ref": "#/components/schemas/stocks.v1alpha1.TimeSeriesPoint",
            "description": "The minimum short position in the range (proto stocks.v1alpha1.TimeSeriesPoint)",
            "title": "min"
          },
          "name": {
            "description": "(proto string)",
            "title": "name",
            "type": "string"
          },
          "points": {
            "description": "The time series points. (proto stocks.v1alpha1.TimeSeriesPoint)",
            "items": {
              "$ref": "#/components/schemas/stocks.v1alpha1.TimeSeriesPoint"
            },
            "title": "points",
            "type": "array"
          },
          "productCode": {
            "description": "The stock code. (proto string)",
            "title": "product_code",
            "type": "string"
          }
        },
        "title": "TimeSeriesData",
        "type": "object"
      },
      "stocks.v1alpha1.TimeSeriesPoint": {
        "additionalProperties": false,
        "description": "TimeSeriesPoint represents a single point in time for the time series data.",
        "properties": {
          "shortPosition": {
            "description": "The short position at this point in time. (proto double)",
            "format": "double",
            "title": "short_position",
            "type": "number"
          },
          "timestamp": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp",
            "description": "The point in time. (proto google.protobuf.Timestamp)",
            "title": "timestamp"
          }
        },
        "title": "TimeSeriesPoint",
        "type": "object"
      },
      "stocks.v1alpha1.TreemapShortPosition": {
        "additionalProperties": false,
        "properties": {
          "industry": {
            "description": "(proto string)",
            "title": "industry",
            "type": "string"
          },
          "productCode": {
            "description": "(proto string)",
            "title": "product_code",
            "type": "string"
          },
          "shortPosition": {
            "description": "(proto double)",
            "format": "double",
            "title": "short_position",
            "type": "number"
          }
        },
        "title": "TreemapShortPosition",
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "bearerFormat": "JWT",
        "description": "Optional. A Shorted API token raises your rate limits; public endpoints work unauthenticated at the anonymous tier. Manage tokens at https://shorted.com.au/account.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {
      "email": "support@shorted.com.au",
      "name": "Shorted Support",
      "url": "https://shorted.com.au"
    },
    "description": "Programmatic access to Australian market and public-interest data:\nASIC short positions for ASX-listed securities, Australian house prices\nand suburb metrics, ABS/RBA economic series, and the federal register of\nmembers' and senators' interests.\n\nEvery endpoint is a Connect-RPC method. Call it with an HTTP POST, a JSON\nbody, and the `Connect-Protocol-Version: 1` header.\n\nSend an identifying `User-Agent`. The edge rejects the default `curl/...`\nagent with a 403 (`permission_denied`), so an example without one fails on\nfirst run — which is why every sample here sets it.\n\n```bash\ncurl -X POST https://api.shorted.com.au/shorts.v1alpha1.StockService/GetStock \\\n  -A 'my-app/1.0' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Connect-Protocol-Version: 1' \\\n  -d '{\"productCode\":\"BHP\"}'\n```\n\nAuthentication is optional for public endpoints; a bearer token raises\nyour rate limits. See https://shorted.com.au/docs/api for tiers.\n",
    "license": {
      "name": "CC BY 4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    },
    "title": "Shorted Public API",
    "version": "1.0.0",
    "x-logo": {
      "url": "https://shorted.com.au/logo.png"
    }
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/search/stocks": {
      "get": {
        "description": "Case-insensitive substring match over a curated in-process list of\n~70 well-known ASX securities (not the full ASX register, and not the\nshort-position corpus). Returns at most 10 results. For programmatic\nsearch over the full corpus use the Connect-RPC SearchService.\n",
        "operationId": "searchStocks",
        "parameters": [
          {
            "description": "Ticker or partial company name, e.g. `BHP` or `Commonwealth`. An empty or missing value returns an empty result list.",
            "in": "query",
            "name": "q",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "results": {
                      "items": {
                        "properties": {
                          "code": {
                            "description": "ASX ticker, e.g. `BHP`.",
                            "type": "string"
                          },
                          "exchange": {
                            "description": "Always `ASX`.",
                            "type": "string"
                          },
                          "name": {
                            "description": "Company name.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Matching stocks, capped at 10."
          },
          "429": {
            "description": "Rate limited (per-minute browser bucket)."
          },
          "500": {
            "description": "Search failed."
          }
        },
        "summary": "Search ASX stocks by code or name"
      },
      "servers": [
        {
          "description": "Production (web app, not the API host)",
          "url": "https://shorted.com.au"
        }
      ]
    },
    "/feed.xml": {
      "get": {
        "operationId": "getRssFeed",
        "responses": {
          "200": {
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "RSS 2.0 XML."
          }
        },
        "summary": "RSS feed of editorial articles and short-selling reports"
      },
      "servers": [
        {
          "description": "Production (web app, not the API host)",
          "url": "https://shorted.com.au"
        }
      ]
    },
    "/shorts.v1alpha1.EconomyService/GetEconomicSeries": {
      "post": {
        "description": "Fetch observations for up to 50 series by series_key.",
        "operationId": "EconomyService_GetEconomicSeries",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetEconomicSeriesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetEconomicSeriesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetEconomicSeries",
        "tags": [
          "shorts.v1alpha1.EconomyService"
        ]
      }
    },
    "/shorts.v1alpha1.EconomyService/GetStateCompanyAggregates": {
      "post": {
        "description": "Exposure-weighted market cap and short interest aggregates by state.",
        "operationId": "EconomyService_GetStateCompanyAggregates",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStateCompanyAggregatesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetStateCompanyAggregatesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStateCompanyAggregates",
        "tags": [
          "shorts.v1alpha1.EconomyService"
        ]
      }
    },
    "/shorts.v1alpha1.EconomyService/ListEconomicSeries": {
      "post": {
        "description": "List economic series catalog entries (Australian economy snapshot layer).",
        "operationId": "EconomyService_ListEconomicSeries",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListEconomicSeriesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListEconomicSeriesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListEconomicSeries",
        "tags": [
          "shorts.v1alpha1.EconomyService"
        ]
      }
    },
    "/shorts.v1alpha1.EconomyService/ListSeriesCorrelations": {
      "post": {
        "description": "Rank precomputed economic-series correlations for a base market series.",
        "operationId": "EconomyService_ListSeriesCorrelations",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListSeriesCorrelationsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListSeriesCorrelationsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListSeriesCorrelations",
        "tags": [
          "shorts.v1alpha1.EconomyService"
        ]
      }
    },
    "/shorts.v1alpha1.EconomyService/ListStateCompanies": {
      "post": {
        "description": "List ASX-listed companies with operations-weighted exposure to a state.",
        "operationId": "EconomyService_ListStateCompanies",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListStateCompaniesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListStateCompaniesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListStateCompanies",
        "tags": [
          "shorts.v1alpha1.EconomyService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/FilterSuburbs": {
      "post": {
        "description": "Return a compact index-aligned mask for ANDed metric predicates.",
        "operationId": "HousingService_FilterSuburbs",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.FilterSuburbsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.FilterSuburbsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "FilterSuburbs",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/GetDropIndexSeries": {
      "post": {
        "description": "Daily discounting index series (national/state/suburb) for the price-drops chart.",
        "operationId": "HousingService_GetDropIndexSeries",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetDropIndexSeriesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetDropIndexSeriesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetDropIndexSeries",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/GetHousePriceSeries": {
      "post": {
        "description": "A single house-price time series for a region and measure.",
        "operationId": "HousingService_GetHousePriceSeries",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetHousePriceSeriesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetHousePriceSeriesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetHousePriceSeries",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/GetHousingOverview": {
      "post": {
        "description": "Latest house-price headline metrics by region (national/state/capital city).",
        "operationId": "HousingService_GetHousingOverview",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetHousingOverviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetHousingOverviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetHousingOverview",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/GetPriceDropsOverview": {
      "post": {
        "description": "State-level price-drop + listing-price rollup, plus a national summary row.",
        "operationId": "HousingService_GetPriceDropsOverview",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetPriceDropsOverviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetPriceDropsOverviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetPriceDropsOverview",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/GetPropertyHistory": {
      "post": {
        "description": "Full price timeline for a single physical address, across all its listings.",
        "operationId": "HousingService_GetPropertyHistory",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetPropertyHistoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetPropertyHistoryResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetPropertyHistory",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/GetSuburbIndex": {
      "post": {
        "description": "Stable sal_code-ordered index used by all columnar suburb responses.",
        "operationId": "HousingService_GetSuburbIndex",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetSuburbIndexRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetSuburbIndexResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetSuburbIndex",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/GetSuburbMetricColumns": {
      "post": {
        "description": "Fetch only the map metric columns currently needed by the client.",
        "operationId": "HousingService_GetSuburbMetricColumns",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetSuburbMetricColumnsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetSuburbMetricColumnsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetSuburbMetricColumns",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/GetSuburbProfile": {
      "post": {
        "description": "Full per-suburb profile: identity, demographics, headline price, comparison baselines.",
        "operationId": "HousingService_GetSuburbProfile",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetSuburbProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetSuburbProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetSuburbProfile",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/ListAddressPriceDrops": {
      "post": {
        "description": "Individual physical addresses ranked by their asking-price drop over a window.",
        "operationId": "HousingService_ListAddressPriceDrops",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListAddressPriceDropsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListAddressPriceDropsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListAddressPriceDrops",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/ListAgencyPriceStats": {
      "post": {
        "description": "Agencies ranked by recent asking-price cuts across their listings.",
        "operationId": "HousingService_ListAgencyPriceStats",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListAgencyPriceStatsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListAgencyPriceStatsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListAgencyPriceStats",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/ListHousingRegions": {
      "post": {
        "description": "List house-price regions (suburbs/LGAs/etc) for the suburb explorer.",
        "operationId": "HousingService_ListHousingRegions",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListHousingRegionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListHousingRegionsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListHousingRegions",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/ListStateSuburbs": {
      "post": {
        "description": "List all suburbs in a state with latest median price + key demographics.",
        "operationId": "HousingService_ListStateSuburbs",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListStateSuburbsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListStateSuburbsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListStateSuburbs",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/ListSuburbDropListings": {
      "post": {
        "description": "Individual recently-reduced listings for a suburb, deep-linking to the portal.",
        "operationId": "HousingService_ListSuburbDropListings",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListSuburbDropListingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListSuburbDropListingsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListSuburbDropListings",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.HousingService/ListSuburbPriceDrops": {
      "post": {
        "description": "Suburbs ranked by recent for-sale asking-price drops.",
        "operationId": "HousingService_ListSuburbPriceDrops",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListSuburbPriceDropsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListSuburbPriceDropsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListSuburbPriceDrops",
        "tags": [
          "shorts.v1alpha1.HousingService"
        ]
      }
    },
    "/shorts.v1alpha1.IndustryIntelligenceService/GetIndustryIntelligence": {
      "post": {
        "description": "Get imported, cited industry intelligence facts for an industry.",
        "operationId": "IndustryIntelligenceService_GetIndustryIntelligence",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetIndustryIntelligenceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetIndustryIntelligenceResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetIndustryIntelligence",
        "tags": [
          "shorts.v1alpha1.IndustryIntelligenceService"
        ]
      }
    },
    "/shorts.v1alpha1.MarketService/GetAvailableDates": {
      "post": {
        "description": "Get available trading dates for market snapshots",
        "operationId": "MarketService_GetAvailableDates",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetAvailableDatesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetAvailableDatesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetAvailableDates",
        "tags": [
          "shorts.v1alpha1.MarketService"
        ]
      }
    },
    "/shorts.v1alpha1.MarketService/GetBattlegroundStocks": {
      "post": {
        "description": "Get squeeze-radar and battleground (price up + shorts building) ranked stocks",
        "operationId": "MarketService_GetBattlegroundStocks",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetBattlegroundStocksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetBattlegroundStocksResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetBattlegroundStocks",
        "tags": [
          "shorts.v1alpha1.MarketService"
        ]
      }
    },
    "/shorts.v1alpha1.MarketService/GetIndustryTreeMap": {
      "post": {
        "description": "Get Industry TreeMap for short positions.",
        "operationId": "MarketService_GetIndustryTreeMap",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetIndustryTreeMapRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/stocks.v1alpha1.IndustryTreeMap"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetIndustryTreeMap",
        "tags": [
          "shorts.v1alpha1.MarketService"
        ]
      }
    },
    "/shorts.v1alpha1.MarketService/GetMarketByDate": {
      "post": {
        "description": "Get all short positions for a specific trading date",
        "operationId": "MarketService_GetMarketByDate",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetMarketByDateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetMarketByDateResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetMarketByDate",
        "tags": [
          "shorts.v1alpha1.MarketService"
        ]
      }
    },
    "/shorts.v1alpha1.MarketService/GetShortCampaignScoreboard": {
      "post": {
        "description": "Get the short-seller scoreboard: historic short campaigns and whether shorts won",
        "operationId": "MarketService_GetShortCampaignScoreboard",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetShortCampaignScoreboardRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetShortCampaignScoreboardResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetShortCampaignScoreboard",
        "tags": [
          "shorts.v1alpha1.MarketService"
        ]
      }
    },
    "/shorts.v1alpha1.MarketService/GetTopShorts": {
      "post": {
        "description": "Shows top 10 short positions on the ASX over different periods of time.",
        "operationId": "MarketService_GetTopShorts",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetTopShortsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetTopShortsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetTopShorts",
        "tags": [
          "shorts.v1alpha1.MarketService"
        ]
      }
    },
    "/shorts.v1alpha1.NewsService/GetEditorialTake": {
      "post": {
        "description": "Get a single published editorial take by slug.",
        "operationId": "NewsService_GetEditorialTake",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetEditorialTakeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetEditorialTakeResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetEditorialTake",
        "tags": [
          "shorts.v1alpha1.NewsService"
        ]
      }
    },
    "/shorts.v1alpha1.NewsService/GetMarketNews": {
      "post": {
        "description": "Get market-wide news across all stocks",
        "operationId": "NewsService_GetMarketNews",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetMarketNewsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetMarketNewsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetMarketNews",
        "tags": [
          "shorts.v1alpha1.NewsService"
        ]
      }
    },
    "/shorts.v1alpha1.NewsService/GetRelatedNews": {
      "post": {
        "description": "Get news semantically related to a stock (or to a specific article)",
        "operationId": "NewsService_GetRelatedNews",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetRelatedNewsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetRelatedNewsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetRelatedNews",
        "tags": [
          "shorts.v1alpha1.NewsService"
        ]
      }
    },
    "/shorts.v1alpha1.NewsService/GetStockNews": {
      "post": {
        "description": "Get recent news articles for a specific stock",
        "operationId": "NewsService_GetStockNews",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStockNewsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetStockNewsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStockNews",
        "tags": [
          "shorts.v1alpha1.NewsService"
        ]
      }
    },
    "/shorts.v1alpha1.NewsService/ListEditorialTakes": {
      "post": {
        "description": "List recent published editorial takes (paginated).",
        "operationId": "NewsService_ListEditorialTakes",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListEditorialTakesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListEditorialTakesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListEditorialTakes",
        "tags": [
          "shorts.v1alpha1.NewsService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ComparePoliticians": {
      "post": {
        "description": "Neutral, symmetric comparison of two politician register summaries.",
        "operationId": "PoliticiansService_ComparePoliticians",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ComparePoliticiansRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ComparePoliticiansResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ComparePoliticians",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/GetDonationsOverview": {
      "post": {
        "description": "Party-group funding rollups for one financial year, plus the corpus\n counts and disclosure notes a funding surface must render.",
        "operationId": "PoliticiansService_GetDonationsOverview",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetDonationsOverviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetDonationsOverviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetDonationsOverview",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/GetParliamentOverview": {
      "post": {
        "description": "Parliament-wide counts and the as-at date. Cheap; drives the hub tiles.",
        "operationId": "PoliticiansService_GetParliamentOverview",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetParliamentOverviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetParliamentOverviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetParliamentOverview",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/GetPolitician": {
      "post": {
        "description": "One politician's profile: declared interests, property, and terms served.",
        "operationId": "PoliticiansService_GetPolitician",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetPoliticianRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetPoliticianResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetPolitician",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/GetPoliticianAnalytics": {
      "post": {
        "description": "COUNTS OF PEOPLE AND DECLARATIONS ONLY. There is no weight, size, exposure\n or value here and none may be added — the registers do not record any, so\n any such figure would be invented. A cell says \"N members of this party\n declared an interest in a company in this industry\", and nothing more.",
        "operationId": "PoliticiansService_GetPoliticianAnalytics",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetPoliticianAnalyticsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetPoliticianAnalyticsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "Aggregate shape of the register: which parties declare interests in which\n industries, and where members are from.",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/GetPoliticianExplorerProfile": {
      "post": {
        "description": "Count-based analytics for one politician's explorer profile.",
        "operationId": "PoliticiansService_GetPoliticianExplorerProfile",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetPoliticianExplorerProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetPoliticianExplorerProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetPoliticianExplorerProfile",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/GetPoliticianFunding": {
      "post": {
        "description": "The funding returns that NAME one member. Never party money.",
        "operationId": "PoliticiansService_GetPoliticianFunding",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetPoliticianFundingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetPoliticianFundingResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetPoliticianFunding",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/GetRegisterActivity": {
      "post": {
        "description": "COUNTS AND DATES ONLY. \"Most active\" is a count ordering, and is the\n strongest characterisation permitted beside a named member — nothing here\n may become \"unusual\", \"spike\", \"watch\" or a flag of any kind.",
        "operationId": "PoliticiansService_GetRegisterActivity",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetRegisterActivityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetRegisterActivityResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "Aggregate lodgement activity over a window: weekly event counts, the\n members with the most dated events, companies first declared in the window,\n and companies whose declarer count moved.",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/GetRegisterExplorer": {
      "post": {
        "description": "Aggregate register counts for the explorer hub.",
        "operationId": "PoliticiansService_GetRegisterExplorer",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetRegisterExplorerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetRegisterExplorerResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetRegisterExplorer",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListDistinctiveHoldings": {
      "post": {
        "description": "One member's currently-declared listed companies, each with how many\n members in total currently declare it. A count of one is the plain fact\n \"no other member currently declares this\"; it is not a label.",
        "operationId": "PoliticiansService_ListDistinctiveHoldings",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListDistinctiveHoldingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListDistinctiveHoldingsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListDistinctiveHoldings",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListPartyFunding": {
      "post": {
        "description": "One party group's funding across every financial year it lodged in.",
        "operationId": "PoliticiansService_ListPartyFunding",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListPartyFundingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListPartyFundingResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListPartyFunding",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListPoliticianStocks": {
      "post": {
        "description": "Parliament's most-declared ASX-listed companies, with a party split.",
        "operationId": "PoliticiansService_ListPoliticianStocks",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListPoliticianStocksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListPoliticianStocksResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListPoliticianStocks",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListPoliticianSummaries": {
      "post": {
        "description": "Filtered politician summaries for the explorer table.",
        "operationId": "PoliticiansService_ListPoliticianSummaries",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListPoliticianSummariesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListPoliticianSummariesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListPoliticianSummaries",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListPoliticians": {
      "post": {
        "description": "Browse/filter parliamentarians.",
        "operationId": "PoliticiansService_ListPoliticians",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListPoliticiansRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListPoliticiansResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListPoliticians",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListRegisterChanges": {
      "post": {
        "description": "Register additions and removals over time.",
        "operationId": "PoliticiansService_ListRegisterChanges",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListRegisterChangesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListRegisterChangesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListRegisterChanges",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListShortInterestOverlap": {
      "post": {
        "description": "The short percentage describes THE COMPANY (ASIC, market-wide). It is not\n and cannot be a property of anyone's holding — the registers record no\n quantities. Consumers must label it as the company's figure.",
        "operationId": "PoliticiansService_ListShortInterestOverlap",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListShortInterestOverlapRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListShortInterestOverlapResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "Declared interests in companies carrying short interest.",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListStatePoliticianHoldings": {
      "post": {
        "description": "Parliamentarians of one state and the listed companies they declare.\n Drives the card on /economy/{state}.",
        "operationId": "PoliticiansService_ListStatePoliticianHoldings",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListStatePoliticianHoldingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListStatePoliticianHoldingsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListStatePoliticianHoldings",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListStockPoliticians": {
      "post": {
        "description": "Which parliamentarians declare an interest in one ASX-listed company.\n Drives the card on /shorts/{code}.",
        "operationId": "PoliticiansService_ListStockPoliticians",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListStockPoliticiansRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListStockPoliticiansResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListStockPoliticians",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListSuburbPoliticians": {
      "post": {
        "description": "Which parliamentarians declare real estate in one ABS suburb.\n Drives the card on /housing/{state}/{suburb}.",
        "operationId": "PoliticiansService_ListSuburbPoliticians",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListSuburbPoliticiansRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListSuburbPoliticiansResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListSuburbPoliticians",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.PoliticiansService/ListTopDonors": {
      "post": {
        "description": "Payers into party branches for one financial year, ordered by the total\n they were declared to have paid.",
        "operationId": "PoliticiansService_ListTopDonors",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListTopDonorsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListTopDonorsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListTopDonors",
        "tags": [
          "shorts.v1alpha1.PoliticiansService"
        ]
      }
    },
    "/shorts.v1alpha1.ReportsService/GetWeeklyReport": {
      "post": {
        "description": "Get a weekly short report with narrative analysis",
        "operationId": "ReportsService_GetWeeklyReport",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetWeeklyReportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetWeeklyReportResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetWeeklyReport",
        "tags": [
          "shorts.v1alpha1.ReportsService"
        ]
      }
    },
    "/shorts.v1alpha1.ReportsService/ListReports": {
      "post": {
        "description": "List published short selling reports (weekly, monthly, yearly)",
        "operationId": "ReportsService_ListReports",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ListReportsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ListReportsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ListReports",
        "tags": [
          "shorts.v1alpha1.ReportsService"
        ]
      }
    },
    "/shorts.v1alpha1.ScreenerService/ScreenStocks": {
      "post": {
        "description": "Screen stocks using compound filters across shorts, price, fundamentals, director trades, and news",
        "operationId": "ScreenerService_ScreenStocks",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.ScreenStocksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.ScreenStocksResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "ScreenStocks",
        "tags": [
          "shorts.v1alpha1.ScreenerService"
        ]
      }
    },
    "/shorts.v1alpha1.SearchService/SearchStocks": {
      "post": {
        "description": "Search stocks by symbol or company name",
        "operationId": "SearchService_SearchStocks",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.SearchStocksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.SearchStocksResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "SearchStocks",
        "tags": [
          "shorts.v1alpha1.SearchService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetCompanyTaxProfile": {
      "post": {
        "description": "Get an ASX-listed entity's annual corporate-tax profile (ATO transparency data).",
        "operationId": "StockService_GetCompanyTaxProfile",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetCompanyTaxProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetCompanyTaxProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetCompanyTaxProfile",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetDirectorTrades": {
      "post": {
        "description": "Get director (insider) trades for a specific stock",
        "operationId": "StockService_GetDirectorTrades",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetDirectorTradesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetDirectorTradesResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetDirectorTrades",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetDividendHistory": {
      "post": {
        "description": "Get dividend history for a specific stock",
        "operationId": "StockService_GetDividendHistory",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetDividendHistoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetDividendHistoryResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetDividendHistory",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetEventTimeline": {
      "post": {
        "description": "Get a chronological feed of events for a stock (announcements, director trades, news, short spikes)",
        "operationId": "StockService_GetEventTimeline",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetEventTimelineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetEventTimelineResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetEventTimeline",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetPeerComparison": {
      "post": {
        "description": "Get peer comparison for a stock within its industry",
        "operationId": "StockService_GetPeerComparison",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetPeerComparisonRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetPeerComparisonResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetPeerComparison",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetStock": {
      "post": {
        "description": "Provides an overview of a specific stock based on PRODUCT_CODE.",
        "operationId": "StockService_GetStock",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStockRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/stocks.v1alpha1.Stock"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStock",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetStockData": {
      "post": {
        "description": "fetch time series data for a specific stock",
        "operationId": "StockService_GetStockData",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStockDataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/stocks.v1alpha1.TimeSeriesData"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStockData",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetStockDetails": {
      "post": {
        "description": "Provides a more in-depth breakdown of a particular stock's metadata.",
        "operationId": "StockService_GetStockDetails",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStockDetailsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/stocks.v1alpha1.StockDetails"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStockDetails",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetStockFinancialHighlights": {
      "post": {
        "description": "Get extracted financial highlights for specific stocks",
        "operationId": "StockService_GetStockFinancialHighlights",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStockFinancialHighlightsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetStockFinancialHighlightsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStockFinancialHighlights",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetStockGraph": {
      "post": {
        "description": "Get a stock's people (with their other companies) and narrative-similar companies",
        "operationId": "StockService_GetStockGraph",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStockGraphRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetStockGraphResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStockGraph",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetStockSignals": {
      "post": {
        "description": "Get a stock's reputation/risk signals (adverse: court/sanctions/complaints; positive: awards/press)",
        "operationId": "StockService_GetStockSignals",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStockSignalsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetStockSignalsResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStockSignals",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    },
    "/shorts.v1alpha1.StockService/GetStockVerdict": {
      "post": {
        "description": "Get a composite bear-vs-bull verdict for a single stock",
        "operationId": "StockService_GetStockVerdict",
        "parameters": [
          {
            "in": "header",
            "name": "Connect-Protocol-Version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "in": "header",
            "name": "Connect-Timeout-Ms",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/shorts.v1alpha1.GetStockVerdictRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/shorts.v1alpha1.GetStockVerdictResponse"
                }
              }
            },
            "description": "Success"
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            },
            "description": "Error"
          }
        },
        "summary": "GetStockVerdict",
        "tags": [
          "shorts.v1alpha1.StockService"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    },
    {}
  ],
  "servers": [
    {
      "description": "Production",
      "url": "https://api.shorted.com.au"
    }
  ],
  "x-rate-limit-headers": {
    "rejection": {
      "Retry-After": "Seconds to wait before retrying",
      "X-RateLimit-Access": "api or browser — paid browser access is unlimited, paid API access is not",
      "X-RateLimit-Bucket": "Edge rejections only: the traffic class that rejected",
      "X-RateLimit-Detail": "Compact JSON mirroring all of the above: kind, limit, used, remaining, reset_at, retry_after_seconds, tier, access, upgrade_url, message",
      "X-RateLimit-Kind": "Which limit fired: per_minute or monthly",
      "X-RateLimit-Scope": "Edge rejections only: edge-10s or edge-60s",
      "X-RateLimit-Tier": "anonymous | free | premium | pro | enterprise",
      "X-RateLimit-Upgrade-Url": "Absolute URL to raise the limit"
    },
    "success": {
      "X-RateLimit-Limit": "Per-minute ceiling for your tier",
      "X-RateLimit-Monthly-Limit": "Monthly quota for your tier",
      "X-RateLimit-Monthly-Remaining": "Requests left this month",
      "X-RateLimit-Monthly-Reset": "Unix seconds at the start of next month",
      "X-RateLimit-Monthly-Used": "Requests consumed this month",
      "X-RateLimit-Remaining": "Requests left in the current minute",
      "X-RateLimit-Reset": "Unix seconds when the minute window resets"
    }
  }
}
