mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-26 01:24:59 +02:00
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:
@@ -4,18 +4,66 @@ info:
|
||||
version: 1.0.0
|
||||
paths:
|
||||
/api/military/v1/list-military-flights:
|
||||
post:
|
||||
get:
|
||||
tags:
|
||||
- MilitaryService
|
||||
summary: ListMilitaryFlights
|
||||
description: ListMilitaryFlights retrieves tracked military aircraft from OpenSky and Wingbits.
|
||||
operationId: ListMilitaryFlights
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListMilitaryFlightsRequest'
|
||||
required: true
|
||||
parameters:
|
||||
- name: page_size
|
||||
in: query
|
||||
description: Maximum items per page (1-100).
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
format: int32
|
||||
- name: cursor
|
||||
in: query
|
||||
description: Cursor for next page.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
- name: ne_lat
|
||||
in: query
|
||||
description: North-east corner latitude of bounding box.
|
||||
required: false
|
||||
schema:
|
||||
type: number
|
||||
format: double
|
||||
- name: ne_lon
|
||||
in: query
|
||||
description: North-east corner longitude of bounding box.
|
||||
required: false
|
||||
schema:
|
||||
type: number
|
||||
format: double
|
||||
- name: sw_lat
|
||||
in: query
|
||||
description: South-west corner latitude of bounding box.
|
||||
required: false
|
||||
schema:
|
||||
type: number
|
||||
format: double
|
||||
- name: sw_lon
|
||||
in: query
|
||||
description: South-west corner longitude of bounding box.
|
||||
required: false
|
||||
schema:
|
||||
type: number
|
||||
format: double
|
||||
- name: operator
|
||||
in: query
|
||||
description: Optional operator filter.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
- name: aircraft_type
|
||||
in: query
|
||||
description: Optional aircraft type filter.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -36,18 +84,19 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/military/v1/get-theater-posture:
|
||||
post:
|
||||
get:
|
||||
tags:
|
||||
- MilitaryService
|
||||
summary: GetTheaterPosture
|
||||
description: GetTheaterPosture retrieves military posture assessments for geographic theaters.
|
||||
operationId: GetTheaterPosture
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/GetTheaterPostureRequest'
|
||||
required: true
|
||||
parameters:
|
||||
- name: theater
|
||||
in: query
|
||||
description: Theater name (e.g., "indo-pacific", "european", "middle-east"). Empty for all theaters.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -67,19 +116,20 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/military/v1/get-aircraft-details:
|
||||
post:
|
||||
/api/military/v1/get-aircraft-details/{icao24}:
|
||||
get:
|
||||
tags:
|
||||
- MilitaryService
|
||||
summary: GetAircraftDetails
|
||||
description: GetAircraftDetails retrieves Wingbits aircraft enrichment data for a single ICAO24 hex.
|
||||
operationId: GetAircraftDetails
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/GetAircraftDetailsRequest'
|
||||
required: true
|
||||
parameters:
|
||||
- name: icao24
|
||||
in: path
|
||||
description: ICAO 24-bit hex address (lowercase).
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -132,18 +182,12 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/military/v1/get-wingbits-status:
|
||||
post:
|
||||
get:
|
||||
tags:
|
||||
- MilitaryService
|
||||
summary: GetWingbitsStatus
|
||||
description: GetWingbitsStatus checks whether the Wingbits enrichment API is configured.
|
||||
operationId: GetWingbitsStatus
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/GetWingbitsStatusRequest'
|
||||
required: true
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -164,18 +208,19 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/military/v1/get-usni-fleet-report:
|
||||
post:
|
||||
get:
|
||||
tags:
|
||||
- MilitaryService
|
||||
summary: GetUSNIFleetReport
|
||||
description: GetUSNIFleetReport retrieves the latest parsed USNI Fleet Tracker report.
|
||||
operationId: GetUSNIFleetReport
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/GetUSNIFleetReportRequest'
|
||||
required: true
|
||||
parameters:
|
||||
- name: force_refresh
|
||||
in: query
|
||||
description: When true, bypass cache and fetch fresh data from USNI.
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -231,10 +276,29 @@ components:
|
||||
ListMilitaryFlightsRequest:
|
||||
type: object
|
||||
properties:
|
||||
pagination:
|
||||
$ref: '#/components/schemas/PaginationRequest'
|
||||
boundingBox:
|
||||
$ref: '#/components/schemas/BoundingBox'
|
||||
pageSize:
|
||||
type: integer
|
||||
format: int32
|
||||
description: Maximum items per page (1-100).
|
||||
cursor:
|
||||
type: string
|
||||
description: Cursor for next page.
|
||||
neLat:
|
||||
type: number
|
||||
format: double
|
||||
description: North-east corner latitude of bounding box.
|
||||
neLon:
|
||||
type: number
|
||||
format: double
|
||||
description: North-east corner longitude of bounding box.
|
||||
swLat:
|
||||
type: number
|
||||
format: double
|
||||
description: South-west corner latitude of bounding box.
|
||||
swLon:
|
||||
type: number
|
||||
format: double
|
||||
description: South-west corner longitude of bounding box.
|
||||
operator:
|
||||
type: string
|
||||
enum:
|
||||
@@ -272,45 +336,6 @@ components:
|
||||
- MILITARY_AIRCRAFT_TYPE_UNKNOWN
|
||||
description: MilitaryAircraftType represents the classification of a military aircraft.
|
||||
description: ListMilitaryFlightsRequest specifies filters for retrieving military flight data.
|
||||
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.
|
||||
BoundingBox:
|
||||
type: object
|
||||
properties:
|
||||
northEast:
|
||||
$ref: '#/components/schemas/GeoCoordinates'
|
||||
southWest:
|
||||
$ref: '#/components/schemas/GeoCoordinates'
|
||||
description: |-
|
||||
BoundingBox represents a rectangular geographic area defined by its corners.
|
||||
Used for spatial queries to filter results within a geographic region.
|
||||
GeoCoordinates:
|
||||
type: object
|
||||
properties:
|
||||
latitude:
|
||||
type: number
|
||||
maximum: 90
|
||||
minimum: -90
|
||||
format: double
|
||||
description: Latitude in decimal degrees (-90 to 90).
|
||||
longitude:
|
||||
type: number
|
||||
maximum: 180
|
||||
minimum: -180
|
||||
format: double
|
||||
description: Longitude in decimal degrees (-180 to 180).
|
||||
description: GeoCoordinates represents a geographic location using WGS84 coordinates.
|
||||
ListMilitaryFlightsResponse:
|
||||
type: object
|
||||
properties:
|
||||
@@ -440,6 +465,22 @@ components:
|
||||
required:
|
||||
- id
|
||||
description: MilitaryFlight represents a tracked military aircraft from OpenSky or Wingbits.
|
||||
GeoCoordinates:
|
||||
type: object
|
||||
properties:
|
||||
latitude:
|
||||
type: number
|
||||
maximum: 90
|
||||
minimum: -90
|
||||
format: double
|
||||
description: Latitude in decimal degrees (-90 to 90).
|
||||
longitude:
|
||||
type: number
|
||||
maximum: 180
|
||||
minimum: -180
|
||||
format: double
|
||||
description: Longitude in decimal degrees (-180 to 180).
|
||||
description: GeoCoordinates represents a geographic location using WGS84 coordinates.
|
||||
FlightEnrichment:
|
||||
type: object
|
||||
properties:
|
||||
|
||||
Reference in New Issue
Block a user