feat: convert 52 API endpoints from POST to GET for edge caching (#468)

* feat: convert 52 API endpoints from POST to GET for edge caching

Convert all cacheable sebuf RPC endpoints to HTTP GET with query/path
parameters, enabling CDN edge caching to reduce costs. Flatten nested
request types (TimeRange, PaginationRequest, BoundingBox) into scalar
query params. Add path params for resource lookups (GetFredSeries,
GetHumanitarianSummary, GetCountryStockIndex, GetCountryIntelBrief,
GetAircraftDetails). Rewrite router with hybrid static/dynamic matching
for path param support.

Kept as POST: SummarizeArticle, ClassifyEvent, RecordBaselineSnapshot,
GetAircraftDetailsBatch, RegisterInterest.

Generated with sebuf v0.9.0 (protoc-gen-ts-client, protoc-gen-ts-server).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add rate_limited field to market response protos

The rateLimited field was hand-patched into generated files on main but
never declared in the proto definitions. Regenerating wiped it out,
breaking the build. Now properly defined in both ListEtfFlowsResponse
and ListMarketQuotesResponse protos.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: remove accidentally committed .planning files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sebastien Melki
2026-02-27 17:44:40 +02:00
committed by GitHub
parent 5f908c0929
commit 6669d373cf
169 changed files with 3806 additions and 1860 deletions

View File

@@ -4,18 +4,46 @@ info:
version: 1.0.0
paths:
/api/infrastructure/v1/list-internet-outages:
post:
get:
tags:
- InfrastructureService
summary: ListInternetOutages
description: ListInternetOutages retrieves detected internet outages from Cloudflare Radar.
operationId: ListInternetOutages
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ListInternetOutagesRequest'
required: true
parameters:
- name: start
in: query
description: Start of time range (inclusive), Unix epoch milliseconds.
required: false
schema:
type: string
format: int64
- name: end
in: query
description: End of time range (inclusive), Unix epoch milliseconds.
required: false
schema:
type: string
format: int64
- name: page_size
in: query
description: Maximum items per page.
required: false
schema:
type: integer
format: int32
- name: cursor
in: query
description: Cursor for next page.
required: false
schema:
type: string
- name: country
in: query
description: Optional country filter (ISO 3166-1 alpha-2).
required: false
schema:
type: string
responses:
"200":
description: Successful response
@@ -36,18 +64,19 @@ paths:
schema:
$ref: '#/components/schemas/Error'
/api/infrastructure/v1/list-service-statuses:
post:
get:
tags:
- InfrastructureService
summary: ListServiceStatuses
description: ListServiceStatuses retrieves operational status of monitored external services.
operationId: ListServiceStatuses
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ListServiceStatusesRequest'
required: true
parameters:
- name: status
in: query
description: Optional status filter. Returns only services in this state.
required: false
schema:
type: string
responses:
"200":
description: Successful response
@@ -68,18 +97,32 @@ paths:
schema:
$ref: '#/components/schemas/Error'
/api/infrastructure/v1/get-temporal-baseline:
post:
get:
tags:
- InfrastructureService
summary: GetTemporalBaseline
description: GetTemporalBaseline checks current activity count against stored baseline for anomaly detection.
operationId: GetTemporalBaseline
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetTemporalBaselineRequest'
required: true
parameters:
- name: type
in: query
description: 'Activity type: "military_flights", "vessels", "protests", "news", "ais_gaps", "satellite_fires".'
required: false
schema:
type: string
- name: region
in: query
description: Geographic region key, defaults to "global".
required: false
schema:
type: string
- name: count
in: query
description: Current observed count to compare against baseline.
required: false
schema:
type: number
format: double
responses:
"200":
description: Successful response
@@ -132,18 +175,12 @@ paths:
schema:
$ref: '#/components/schemas/Error'
/api/infrastructure/v1/get-cable-health:
post:
get:
tags:
- InfrastructureService
summary: GetCableHealth
description: GetCableHealth computes health status for submarine cables from NGA maritime warning signals.
operationId: GetCableHealth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetCableHealthRequest'
required: true
responses:
"200":
description: Successful response
@@ -199,41 +236,25 @@ components:
ListInternetOutagesRequest:
type: object
properties:
timeRange:
$ref: '#/components/schemas/TimeRange'
pagination:
$ref: '#/components/schemas/PaginationRequest'
start:
type: integer
format: int64
description: 'Start of time range (inclusive), Unix epoch milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript'
end:
type: integer
format: int64
description: 'End of time range (inclusive), Unix epoch milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript'
pageSize:
type: integer
format: int32
description: Maximum items per page.
cursor:
type: string
description: Cursor for next page.
country:
type: string
description: Optional country filter (ISO 3166-1 alpha-2).
description: ListInternetOutagesRequest specifies filters for retrieving internet outages.
TimeRange:
type: object
properties:
start:
type: integer
format: int64
description: 'Start of the time range (inclusive), as Unix epoch milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript'
end:
type: integer
format: int64
description: 'End of the time range (inclusive), as Unix epoch milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript'
description: |-
TimeRange represents a time interval defined by a start and end timestamp.
Used for filtering data within a specific time period.
PaginationRequest:
type: object
properties:
pageSize:
type: integer
maximum: 100
minimum: 1
format: int32
description: Maximum number of items to return per page (1 to 100).
cursor:
type: string
description: Opaque cursor for fetching the next page. Empty string for the first page.
description: PaginationRequest specifies cursor-based pagination parameters for list endpoints.
ListInternetOutagesResponse:
type: object
properties: