mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-25 17:14:57 +02:00
* feat(military): USPTO PatentsView defense/dual-use patent seeder (#2047) * fix(military): correct PatentsView API field names, sort param, and total semantics - Use nested dot-notation field names required by PatentsView v1 API: assignees.assignee_organization (was flat assignee_organization) cpc_at_issue.cpc_subclass_id (was non-existent cpc_subgroup_id) - Split sort into separate s= param; fix per_page -> size in o= param (sort inside o= and per_page are both rejected by PatentsView v1) - Fix listDefensePatents total to reflect full seeded dataset size, not the post-filter count (proto doc: "Total number of filings in the seeded dataset") * feat(defense-patents): add DefensePatentsPanel — R&D Signal frontend Panel displays weekly USPTO defense/dual-use patent filings from seed. Five tabs: All | Comms (H04B) | Semiconductors (H01L) | Ammunition (F42B) | AI (G06N) | Biotech (C12N). Shows assignee, title, CPC tag, date, USPTO link. Wired into panel-layout.ts and registered as 'defense-patents' in panels.ts. * fix(defense-patents): TTL 3x interval, recordCount, maxStaleMin 2x, wire into App.ts - CACHE_TTL: 7d → 21d (3× weekly interval) so key survives missed runs - recordCount: add (d) => d?.patents?.length ?? 0 so seed logs correct count - health.js maxStaleMin: 10080 → 20160 (2× 7-day interval per gold standard) - App.ts: import DefensePatentsPanel, add primeTask (initial load) and scheduleRefresh at 24h interval (daily poll for weekly data)
1300 lines
53 KiB
YAML
1300 lines
53 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: MilitaryService API
|
|
version: 1.0.0
|
|
paths:
|
|
/api/military/v1/list-military-flights:
|
|
get:
|
|
tags:
|
|
- MilitaryService
|
|
summary: ListMilitaryFlights
|
|
description: ListMilitaryFlights retrieves tracked military aircraft from OpenSky and Wingbits.
|
|
operationId: ListMilitaryFlights
|
|
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
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListMilitaryFlightsResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/api/military/v1/get-theater-posture:
|
|
get:
|
|
tags:
|
|
- MilitaryService
|
|
summary: GetTheaterPosture
|
|
description: GetTheaterPosture retrieves military posture assessments for geographic theaters.
|
|
operationId: GetTheaterPosture
|
|
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
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetTheaterPostureResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/api/military/v1/get-aircraft-details:
|
|
get:
|
|
tags:
|
|
- MilitaryService
|
|
summary: GetAircraftDetails
|
|
description: GetAircraftDetails retrieves Wingbits aircraft enrichment data for a single ICAO24 hex.
|
|
operationId: GetAircraftDetails
|
|
parameters:
|
|
- name: icao24
|
|
in: query
|
|
description: ICAO 24-bit hex address (lowercase).
|
|
required: false
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAircraftDetailsResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/api/military/v1/get-aircraft-details-batch:
|
|
post:
|
|
tags:
|
|
- MilitaryService
|
|
summary: GetAircraftDetailsBatch
|
|
description: GetAircraftDetailsBatch retrieves Wingbits aircraft enrichment data for multiple ICAO24 hexes.
|
|
operationId: GetAircraftDetailsBatch
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAircraftDetailsBatchRequest'
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAircraftDetailsBatchResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/api/military/v1/get-wingbits-status:
|
|
get:
|
|
tags:
|
|
- MilitaryService
|
|
summary: GetWingbitsStatus
|
|
description: GetWingbitsStatus checks whether the Wingbits enrichment API is configured.
|
|
operationId: GetWingbitsStatus
|
|
responses:
|
|
"200":
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetWingbitsStatusResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/api/military/v1/get-usni-fleet-report:
|
|
get:
|
|
tags:
|
|
- MilitaryService
|
|
summary: GetUSNIFleetReport
|
|
description: GetUSNIFleetReport retrieves the latest parsed USNI Fleet Tracker report.
|
|
operationId: GetUSNIFleetReport
|
|
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
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetUSNIFleetReportResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/api/military/v1/list-military-bases:
|
|
get:
|
|
tags:
|
|
- MilitaryService
|
|
summary: ListMilitaryBases
|
|
description: ListMilitaryBases retrieves military bases within a bounding box, with server-side clustering.
|
|
operationId: ListMilitaryBases
|
|
parameters:
|
|
- name: ne_lat
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
format: double
|
|
- name: ne_lon
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
format: double
|
|
- name: sw_lat
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
format: double
|
|
- name: sw_lon
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
format: double
|
|
- name: zoom
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
format: int32
|
|
- name: type
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: kind
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: country
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListMilitaryBasesResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/api/military/v1/get-wingbits-live-flight:
|
|
get:
|
|
tags:
|
|
- MilitaryService
|
|
summary: GetWingbitsLiveFlight
|
|
description: GetWingbitsLiveFlight retrieves real-time position data from the Wingbits ECS network for a single aircraft.
|
|
operationId: GetWingbitsLiveFlight
|
|
parameters:
|
|
- name: icao24
|
|
in: query
|
|
description: ICAO 24-bit hex address (lowercase, 6 characters).
|
|
required: false
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetWingbitsLiveFlightResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
/api/military/v1/list-defense-patents:
|
|
get:
|
|
tags:
|
|
- MilitaryService
|
|
summary: ListDefensePatents
|
|
description: ListDefensePatents retrieves recent defense/dual-use patent filings from USPTO PatentsView.
|
|
operationId: ListDefensePatents
|
|
parameters:
|
|
- name: cpc_code
|
|
in: query
|
|
description: CPC category filter (e.g. "H04B", "F42B"). Empty returns all categories.
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: assignee
|
|
in: query
|
|
description: Assignee keyword filter (case-insensitive substring match). Empty returns all.
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: limit
|
|
in: query
|
|
description: Maximum results to return (default 20, max 100).
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
format: int32
|
|
responses:
|
|
"200":
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListDefensePatentsResponse'
|
|
"400":
|
|
description: Validation error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ValidationError'
|
|
default:
|
|
description: Error response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Error'
|
|
components:
|
|
schemas:
|
|
Error:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
description: Error message (e.g., 'user not found', 'database connection failed')
|
|
description: Error is returned when a handler encounters an error. It contains a simple error message that the developer can customize.
|
|
FieldViolation:
|
|
type: object
|
|
properties:
|
|
field:
|
|
type: string
|
|
description: The field path that failed validation (e.g., 'user.email' for nested fields). For header validation, this will be the header name (e.g., 'X-API-Key')
|
|
description:
|
|
type: string
|
|
description: Human-readable description of the validation violation (e.g., 'must be a valid email address', 'required field missing')
|
|
required:
|
|
- field
|
|
- description
|
|
description: FieldViolation describes a single validation error for a specific field.
|
|
ValidationError:
|
|
type: object
|
|
properties:
|
|
violations:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/FieldViolation'
|
|
description: List of validation violations
|
|
required:
|
|
- violations
|
|
description: ValidationError is returned when request validation fails. It contains a list of field violations describing what went wrong.
|
|
ListMilitaryFlightsRequest:
|
|
type: object
|
|
properties:
|
|
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:
|
|
- MILITARY_OPERATOR_UNSPECIFIED
|
|
- MILITARY_OPERATOR_USAF
|
|
- MILITARY_OPERATOR_USN
|
|
- MILITARY_OPERATOR_USMC
|
|
- MILITARY_OPERATOR_USA
|
|
- MILITARY_OPERATOR_RAF
|
|
- MILITARY_OPERATOR_RN
|
|
- MILITARY_OPERATOR_FAF
|
|
- MILITARY_OPERATOR_GAF
|
|
- MILITARY_OPERATOR_PLAAF
|
|
- MILITARY_OPERATOR_PLAN
|
|
- MILITARY_OPERATOR_VKS
|
|
- MILITARY_OPERATOR_IAF
|
|
- MILITARY_OPERATOR_NATO
|
|
- MILITARY_OPERATOR_OTHER
|
|
description: MilitaryOperator represents the military branch or force operating an asset.
|
|
aircraftType:
|
|
type: string
|
|
enum:
|
|
- MILITARY_AIRCRAFT_TYPE_UNSPECIFIED
|
|
- MILITARY_AIRCRAFT_TYPE_FIGHTER
|
|
- MILITARY_AIRCRAFT_TYPE_BOMBER
|
|
- MILITARY_AIRCRAFT_TYPE_TRANSPORT
|
|
- MILITARY_AIRCRAFT_TYPE_TANKER
|
|
- MILITARY_AIRCRAFT_TYPE_AWACS
|
|
- MILITARY_AIRCRAFT_TYPE_RECONNAISSANCE
|
|
- MILITARY_AIRCRAFT_TYPE_HELICOPTER
|
|
- MILITARY_AIRCRAFT_TYPE_DRONE
|
|
- MILITARY_AIRCRAFT_TYPE_PATROL
|
|
- MILITARY_AIRCRAFT_TYPE_SPECIAL_OPS
|
|
- MILITARY_AIRCRAFT_TYPE_VIP
|
|
- MILITARY_AIRCRAFT_TYPE_UNKNOWN
|
|
description: MilitaryAircraftType represents the classification of a military aircraft.
|
|
description: ListMilitaryFlightsRequest specifies filters for retrieving military flight data.
|
|
ListMilitaryFlightsResponse:
|
|
type: object
|
|
properties:
|
|
flights:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MilitaryFlight'
|
|
clusters:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MilitaryFlightCluster'
|
|
pagination:
|
|
$ref: '#/components/schemas/PaginationResponse'
|
|
description: ListMilitaryFlightsResponse contains military flights and clusters.
|
|
MilitaryFlight:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
minLength: 1
|
|
description: Unique flight identifier.
|
|
callsign:
|
|
type: string
|
|
description: Aircraft callsign.
|
|
hexCode:
|
|
type: string
|
|
description: ICAO 24-bit hex address.
|
|
registration:
|
|
type: string
|
|
description: Aircraft registration number.
|
|
aircraftType:
|
|
type: string
|
|
enum:
|
|
- MILITARY_AIRCRAFT_TYPE_UNSPECIFIED
|
|
- MILITARY_AIRCRAFT_TYPE_FIGHTER
|
|
- MILITARY_AIRCRAFT_TYPE_BOMBER
|
|
- MILITARY_AIRCRAFT_TYPE_TRANSPORT
|
|
- MILITARY_AIRCRAFT_TYPE_TANKER
|
|
- MILITARY_AIRCRAFT_TYPE_AWACS
|
|
- MILITARY_AIRCRAFT_TYPE_RECONNAISSANCE
|
|
- MILITARY_AIRCRAFT_TYPE_HELICOPTER
|
|
- MILITARY_AIRCRAFT_TYPE_DRONE
|
|
- MILITARY_AIRCRAFT_TYPE_PATROL
|
|
- MILITARY_AIRCRAFT_TYPE_SPECIAL_OPS
|
|
- MILITARY_AIRCRAFT_TYPE_VIP
|
|
- MILITARY_AIRCRAFT_TYPE_UNKNOWN
|
|
description: MilitaryAircraftType represents the classification of a military aircraft.
|
|
aircraftModel:
|
|
type: string
|
|
description: Specific aircraft model (e.g., "F-35A", "C-17A").
|
|
operator:
|
|
type: string
|
|
enum:
|
|
- MILITARY_OPERATOR_UNSPECIFIED
|
|
- MILITARY_OPERATOR_USAF
|
|
- MILITARY_OPERATOR_USN
|
|
- MILITARY_OPERATOR_USMC
|
|
- MILITARY_OPERATOR_USA
|
|
- MILITARY_OPERATOR_RAF
|
|
- MILITARY_OPERATOR_RN
|
|
- MILITARY_OPERATOR_FAF
|
|
- MILITARY_OPERATOR_GAF
|
|
- MILITARY_OPERATOR_PLAAF
|
|
- MILITARY_OPERATOR_PLAN
|
|
- MILITARY_OPERATOR_VKS
|
|
- MILITARY_OPERATOR_IAF
|
|
- MILITARY_OPERATOR_NATO
|
|
- MILITARY_OPERATOR_OTHER
|
|
description: MilitaryOperator represents the military branch or force operating an asset.
|
|
operatorCountry:
|
|
type: string
|
|
description: Country operating the aircraft (ISO 3166-1 alpha-2).
|
|
location:
|
|
$ref: '#/components/schemas/GeoCoordinates'
|
|
altitude:
|
|
type: number
|
|
format: double
|
|
description: Altitude in feet.
|
|
heading:
|
|
type: number
|
|
format: double
|
|
description: Heading in degrees.
|
|
speed:
|
|
type: number
|
|
format: double
|
|
description: Speed in knots.
|
|
verticalRate:
|
|
type: number
|
|
format: double
|
|
description: Vertical rate in feet per minute.
|
|
onGround:
|
|
type: boolean
|
|
description: Whether the aircraft is on the ground.
|
|
squawk:
|
|
type: string
|
|
description: Transponder squawk code.
|
|
origin:
|
|
type: string
|
|
description: ICAO code of the origin airport.
|
|
destination:
|
|
type: string
|
|
description: ICAO code of the destination airport.
|
|
lastSeenAt:
|
|
type: integer
|
|
format: int64
|
|
description: 'Last seen time, as Unix epoch milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript'
|
|
firstSeenAt:
|
|
type: integer
|
|
format: int64
|
|
description: 'First seen time, as Unix epoch milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript'
|
|
confidence:
|
|
type: string
|
|
enum:
|
|
- MILITARY_CONFIDENCE_UNSPECIFIED
|
|
- MILITARY_CONFIDENCE_LOW
|
|
- MILITARY_CONFIDENCE_MEDIUM
|
|
- MILITARY_CONFIDENCE_HIGH
|
|
description: MilitaryConfidence represents confidence in asset identification.
|
|
isInteresting:
|
|
type: boolean
|
|
description: Whether flagged for unusual activity.
|
|
note:
|
|
type: string
|
|
description: Analyst note.
|
|
enrichment:
|
|
$ref: '#/components/schemas/FlightEnrichment'
|
|
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:
|
|
manufacturer:
|
|
type: string
|
|
description: Aircraft manufacturer.
|
|
owner:
|
|
type: string
|
|
description: Registered owner.
|
|
operatorName:
|
|
type: string
|
|
description: Operator name.
|
|
typeCode:
|
|
type: string
|
|
description: ICAO type code.
|
|
builtYear:
|
|
type: string
|
|
description: Year the aircraft was built.
|
|
confirmedMilitary:
|
|
type: boolean
|
|
description: Whether confirmed as military.
|
|
militaryBranch:
|
|
type: string
|
|
description: Military branch designation.
|
|
description: FlightEnrichment contains additional data from Wingbits aircraft database.
|
|
MilitaryFlightCluster:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Unique cluster identifier.
|
|
name:
|
|
type: string
|
|
description: Descriptive name of the cluster.
|
|
location:
|
|
$ref: '#/components/schemas/GeoCoordinates'
|
|
flightCount:
|
|
type: integer
|
|
format: int32
|
|
description: Number of flights in the cluster.
|
|
flights:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MilitaryFlight'
|
|
dominantOperator:
|
|
type: string
|
|
enum:
|
|
- MILITARY_OPERATOR_UNSPECIFIED
|
|
- MILITARY_OPERATOR_USAF
|
|
- MILITARY_OPERATOR_USN
|
|
- MILITARY_OPERATOR_USMC
|
|
- MILITARY_OPERATOR_USA
|
|
- MILITARY_OPERATOR_RAF
|
|
- MILITARY_OPERATOR_RN
|
|
- MILITARY_OPERATOR_FAF
|
|
- MILITARY_OPERATOR_GAF
|
|
- MILITARY_OPERATOR_PLAAF
|
|
- MILITARY_OPERATOR_PLAN
|
|
- MILITARY_OPERATOR_VKS
|
|
- MILITARY_OPERATOR_IAF
|
|
- MILITARY_OPERATOR_NATO
|
|
- MILITARY_OPERATOR_OTHER
|
|
description: MilitaryOperator represents the military branch or force operating an asset.
|
|
activityType:
|
|
type: string
|
|
enum:
|
|
- MILITARY_ACTIVITY_TYPE_UNSPECIFIED
|
|
- MILITARY_ACTIVITY_TYPE_EXERCISE
|
|
- MILITARY_ACTIVITY_TYPE_PATROL
|
|
- MILITARY_ACTIVITY_TYPE_TRANSPORT
|
|
- MILITARY_ACTIVITY_TYPE_DEPLOYMENT
|
|
- MILITARY_ACTIVITY_TYPE_TRANSIT
|
|
- MILITARY_ACTIVITY_TYPE_UNKNOWN
|
|
description: MilitaryActivityType represents the assessed type of military activity.
|
|
description: MilitaryFlightCluster represents a geographic cluster of military flights.
|
|
PaginationResponse:
|
|
type: object
|
|
properties:
|
|
nextCursor:
|
|
type: string
|
|
description: Cursor for fetching the next page. Empty string indicates no more pages.
|
|
totalCount:
|
|
type: integer
|
|
format: int32
|
|
description: Total count of items matching the query, if known. Zero if the total is unknown.
|
|
description: PaginationResponse contains pagination metadata returned alongside list results.
|
|
GetTheaterPostureRequest:
|
|
type: object
|
|
properties:
|
|
theater:
|
|
type: string
|
|
description: Theater name (e.g., "indo-pacific", "european", "middle-east"). Empty for all theaters.
|
|
description: GetTheaterPostureRequest specifies the theater to assess.
|
|
GetTheaterPostureResponse:
|
|
type: object
|
|
properties:
|
|
theaters:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TheaterPosture'
|
|
description: GetTheaterPostureResponse contains theater posture assessments.
|
|
TheaterPosture:
|
|
type: object
|
|
properties:
|
|
theater:
|
|
type: string
|
|
description: Theater name (e.g., "Indo-Pacific", "European", "Middle East").
|
|
postureLevel:
|
|
type: string
|
|
description: Overall posture assessment.
|
|
activeFlights:
|
|
type: integer
|
|
format: int32
|
|
description: Number of active flights in the theater.
|
|
trackedVessels:
|
|
type: integer
|
|
format: int32
|
|
description: Number of tracked vessels in the theater.
|
|
activeOperations:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: Notable ongoing operations.
|
|
assessedAt:
|
|
type: integer
|
|
format: int64
|
|
description: 'Assessment timestamp, as Unix epoch milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript'
|
|
description: TheaterPosture represents an assessed military posture for a geographic theater.
|
|
GetAircraftDetailsRequest:
|
|
type: object
|
|
properties:
|
|
icao24:
|
|
type: string
|
|
minLength: 1
|
|
description: ICAO 24-bit hex address (lowercase).
|
|
required:
|
|
- icao24
|
|
description: GetAircraftDetailsRequest looks up a single aircraft by ICAO 24-bit hex.
|
|
GetAircraftDetailsResponse:
|
|
type: object
|
|
properties:
|
|
details:
|
|
$ref: '#/components/schemas/AircraftDetails'
|
|
configured:
|
|
type: boolean
|
|
description: Whether the Wingbits API is configured.
|
|
description: GetAircraftDetailsResponse contains the aircraft enrichment data.
|
|
AircraftDetails:
|
|
type: object
|
|
properties:
|
|
icao24:
|
|
type: string
|
|
description: ICAO 24-bit hex address.
|
|
registration:
|
|
type: string
|
|
description: Aircraft registration number.
|
|
manufacturerIcao:
|
|
type: string
|
|
description: ICAO manufacturer code.
|
|
manufacturerName:
|
|
type: string
|
|
description: Full manufacturer name.
|
|
model:
|
|
type: string
|
|
description: Aircraft model.
|
|
typecode:
|
|
type: string
|
|
description: ICAO type designator code.
|
|
serialNumber:
|
|
type: string
|
|
description: Manufacturer serial number.
|
|
icaoAircraftType:
|
|
type: string
|
|
description: ICAO aircraft type designator.
|
|
operator:
|
|
type: string
|
|
description: Operator name.
|
|
operatorCallsign:
|
|
type: string
|
|
description: Operator callsign.
|
|
operatorIcao:
|
|
type: string
|
|
description: Operator ICAO code.
|
|
owner:
|
|
type: string
|
|
description: Registered owner.
|
|
built:
|
|
type: string
|
|
description: Build date.
|
|
engines:
|
|
type: string
|
|
description: Engine description.
|
|
categoryDescription:
|
|
type: string
|
|
description: ICAO category description.
|
|
description: AircraftDetails contains Wingbits aircraft enrichment data.
|
|
GetAircraftDetailsBatchRequest:
|
|
type: object
|
|
properties:
|
|
icao24s:
|
|
type: array
|
|
items:
|
|
type: string
|
|
maxItems: 20
|
|
minItems: 1
|
|
description: ICAO 24-bit hex addresses (lowercase). Max 20.
|
|
maxItems: 20
|
|
minItems: 1
|
|
description: GetAircraftDetailsBatchRequest looks up multiple aircraft by ICAO 24-bit hex.
|
|
GetAircraftDetailsBatchResponse:
|
|
type: object
|
|
properties:
|
|
results:
|
|
type: object
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/AircraftDetails'
|
|
description: Map of icao24 -> aircraft details for found aircraft.
|
|
fetched:
|
|
type: integer
|
|
format: int32
|
|
description: Number of aircraft successfully fetched from upstream.
|
|
requested:
|
|
type: integer
|
|
format: int32
|
|
description: Number of aircraft requested.
|
|
configured:
|
|
type: boolean
|
|
description: Whether the Wingbits API is configured.
|
|
description: GetAircraftDetailsBatchResponse contains the batch lookup results.
|
|
ResultsEntry:
|
|
type: object
|
|
properties:
|
|
key:
|
|
type: string
|
|
value:
|
|
$ref: '#/components/schemas/AircraftDetails'
|
|
GetWingbitsStatusRequest:
|
|
type: object
|
|
description: GetWingbitsStatusRequest checks whether the Wingbits enrichment API is configured.
|
|
GetWingbitsStatusResponse:
|
|
type: object
|
|
properties:
|
|
configured:
|
|
type: boolean
|
|
description: Whether the Wingbits API key is configured on the server.
|
|
description: GetWingbitsStatusResponse indicates whether Wingbits is available.
|
|
GetUSNIFleetReportRequest:
|
|
type: object
|
|
properties:
|
|
forceRefresh:
|
|
type: boolean
|
|
description: When true, bypass cache and fetch fresh data from USNI.
|
|
description: GetUSNIFleetReportRequest requests the latest USNI Fleet Tracker report.
|
|
GetUSNIFleetReportResponse:
|
|
type: object
|
|
properties:
|
|
report:
|
|
$ref: '#/components/schemas/USNIFleetReport'
|
|
cached:
|
|
type: boolean
|
|
description: Whether the response was served from cache.
|
|
stale:
|
|
type: boolean
|
|
description: Whether the cached data is stale (served after a fetch failure).
|
|
error:
|
|
type: string
|
|
description: Error message, if any.
|
|
description: GetUSNIFleetReportResponse returns the parsed USNI Fleet Tracker report.
|
|
USNIFleetReport:
|
|
type: object
|
|
properties:
|
|
articleUrl:
|
|
type: string
|
|
description: URL of the source article.
|
|
articleDate:
|
|
type: string
|
|
description: Publication date of the article.
|
|
articleTitle:
|
|
type: string
|
|
description: Title of the article.
|
|
battleForceSummary:
|
|
$ref: '#/components/schemas/BattleForceSummary'
|
|
vessels:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/USNIVessel'
|
|
strikeGroups:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/USNIStrikeGroup'
|
|
regions:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: Unique region names mentioned in the article.
|
|
parsingWarnings:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: Warnings generated during parsing.
|
|
timestamp:
|
|
type: integer
|
|
format: int64
|
|
description: 'Time the report was generated, as Unix epoch milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript'
|
|
description: USNIFleetReport is the full parsed output of a USNI Fleet Tracker article.
|
|
BattleForceSummary:
|
|
type: object
|
|
properties:
|
|
totalShips:
|
|
type: integer
|
|
minimum: 0
|
|
format: int32
|
|
description: Total ships in the battle force.
|
|
deployed:
|
|
type: integer
|
|
minimum: 0
|
|
format: int32
|
|
description: Number of ships currently deployed.
|
|
underway:
|
|
type: integer
|
|
minimum: 0
|
|
format: int32
|
|
description: Number of ships currently underway.
|
|
description: BattleForceSummary contains fleet-wide ship count statistics.
|
|
USNIVessel:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
description: Vessel name (e.g., "USS Abraham Lincoln").
|
|
hullNumber:
|
|
type: string
|
|
minLength: 1
|
|
description: Hull designation (e.g., "CVN-72", "DDG-51").
|
|
vesselType:
|
|
type: string
|
|
description: Vessel type classification (e.g., "carrier", "destroyer", "submarine").
|
|
region:
|
|
type: string
|
|
description: Region name where the vessel is operating.
|
|
regionLat:
|
|
type: number
|
|
format: double
|
|
description: Approximate latitude for the region.
|
|
regionLon:
|
|
type: number
|
|
format: double
|
|
description: Approximate longitude for the region.
|
|
deploymentStatus:
|
|
type: string
|
|
description: Deployment status (e.g., "deployed", "underway", "in-port", "unknown").
|
|
homePort:
|
|
type: string
|
|
description: Home port, if identified from the article text.
|
|
strikeGroup:
|
|
type: string
|
|
description: Strike group assignment, if any.
|
|
activityDescription:
|
|
type: string
|
|
description: Brief activity description parsed from article prose.
|
|
articleUrl:
|
|
type: string
|
|
description: URL of the USNI article this vessel was parsed from.
|
|
articleDate:
|
|
type: string
|
|
description: Publication date of the USNI article.
|
|
required:
|
|
- name
|
|
- hullNumber
|
|
description: USNIVessel represents a single vessel parsed from a USNI Fleet Tracker article.
|
|
USNIStrikeGroup:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Strike group name (e.g., "Abraham Lincoln Carrier Strike Group").
|
|
carrier:
|
|
type: string
|
|
description: Carrier name and hull (e.g., "USS Abraham Lincoln (CVN-72)").
|
|
airWing:
|
|
type: string
|
|
description: Assigned air wing (e.g., "Carrier Air Wing Nine").
|
|
destroyerSquadron:
|
|
type: string
|
|
description: Assigned destroyer squadron.
|
|
escorts:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: Escort vessels in the strike group.
|
|
description: USNIStrikeGroup represents a carrier strike group parsed from the article.
|
|
ListMilitaryBasesRequest:
|
|
type: object
|
|
properties:
|
|
neLat:
|
|
type: number
|
|
format: double
|
|
neLon:
|
|
type: number
|
|
format: double
|
|
swLat:
|
|
type: number
|
|
format: double
|
|
swLon:
|
|
type: number
|
|
format: double
|
|
zoom:
|
|
type: integer
|
|
format: int32
|
|
type:
|
|
type: string
|
|
kind:
|
|
type: string
|
|
country:
|
|
type: string
|
|
ListMilitaryBasesResponse:
|
|
type: object
|
|
properties:
|
|
bases:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MilitaryBaseEntry'
|
|
clusters:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MilitaryBaseCluster'
|
|
totalInView:
|
|
type: integer
|
|
format: int32
|
|
truncated:
|
|
type: boolean
|
|
MilitaryBaseEntry:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
latitude:
|
|
type: number
|
|
format: double
|
|
longitude:
|
|
type: number
|
|
format: double
|
|
kind:
|
|
type: string
|
|
countryIso2:
|
|
type: string
|
|
type:
|
|
type: string
|
|
tier:
|
|
type: integer
|
|
format: int32
|
|
catAirforce:
|
|
type: boolean
|
|
catNaval:
|
|
type: boolean
|
|
catNuclear:
|
|
type: boolean
|
|
catSpace:
|
|
type: boolean
|
|
catTraining:
|
|
type: boolean
|
|
branch:
|
|
type: string
|
|
status:
|
|
type: string
|
|
MilitaryBaseCluster:
|
|
type: object
|
|
properties:
|
|
latitude:
|
|
type: number
|
|
format: double
|
|
longitude:
|
|
type: number
|
|
format: double
|
|
count:
|
|
type: integer
|
|
format: int32
|
|
dominantType:
|
|
type: string
|
|
expansionZoom:
|
|
type: integer
|
|
format: int32
|
|
GetWingbitsLiveFlightRequest:
|
|
type: object
|
|
properties:
|
|
icao24:
|
|
type: string
|
|
minLength: 1
|
|
description: ICAO 24-bit hex address (lowercase, 6 characters).
|
|
required:
|
|
- icao24
|
|
description: GetWingbitsLiveFlightRequest fetches live Wingbits ECS data for a single aircraft.
|
|
GetWingbitsLiveFlightResponse:
|
|
type: object
|
|
properties:
|
|
flight:
|
|
$ref: '#/components/schemas/WingbitsLiveFlight'
|
|
description: GetWingbitsLiveFlightResponse contains the live flight data, if available.
|
|
WingbitsLiveFlight:
|
|
type: object
|
|
properties:
|
|
icao24:
|
|
type: string
|
|
description: ICAO 24-bit hex address.
|
|
callsign:
|
|
type: string
|
|
description: Live callsign.
|
|
lat:
|
|
type: number
|
|
format: double
|
|
description: Latitude in decimal degrees.
|
|
lon:
|
|
type: number
|
|
format: double
|
|
description: Longitude in decimal degrees.
|
|
altitude:
|
|
type: number
|
|
format: double
|
|
description: Altitude in feet.
|
|
speed:
|
|
type: number
|
|
format: double
|
|
description: Ground speed in knots.
|
|
heading:
|
|
type: number
|
|
format: double
|
|
description: Track/heading in degrees.
|
|
verticalRate:
|
|
type: number
|
|
format: double
|
|
description: Vertical rate in feet per minute (positive = climb, negative = descent).
|
|
registration:
|
|
type: string
|
|
description: Aircraft registration number.
|
|
model:
|
|
type: string
|
|
description: Aircraft model (e.g. "PC-12/45").
|
|
operator:
|
|
type: string
|
|
description: Operator name.
|
|
onGround:
|
|
type: boolean
|
|
description: True if the aircraft is on the ground.
|
|
lastSeen:
|
|
type: string
|
|
format: int64
|
|
description: Unix timestamp of the last position update.
|
|
depIata:
|
|
type: string
|
|
description: |-
|
|
Schedule — from ecs-api.wingbits.com/v1/flights/schedule/{callsign}
|
|
Departure airport IATA code (e.g. "FJR").
|
|
arrIata:
|
|
type: string
|
|
description: Arrival airport IATA code (e.g. "BOM").
|
|
depTimeUtc:
|
|
type: string
|
|
description: Scheduled departure time UTC (ISO 8601).
|
|
arrTimeUtc:
|
|
type: string
|
|
description: Scheduled arrival time UTC (ISO 8601).
|
|
depEstimatedUtc:
|
|
type: string
|
|
description: Estimated departure time UTC (ISO 8601).
|
|
arrEstimatedUtc:
|
|
type: string
|
|
description: Estimated arrival time UTC (ISO 8601).
|
|
depDelayedMin:
|
|
type: integer
|
|
format: int32
|
|
description: Departure delay in minutes (negative = early).
|
|
arrDelayedMin:
|
|
type: integer
|
|
format: int32
|
|
description: Arrival delay in minutes (negative = early).
|
|
flightStatus:
|
|
type: string
|
|
description: Flight status string (e.g. "en-route", "landed", "scheduled").
|
|
flightDurationMin:
|
|
type: integer
|
|
format: int32
|
|
description: Scheduled flight duration in minutes.
|
|
arrTerminal:
|
|
type: string
|
|
description: Arrival terminal (e.g. "2").
|
|
photoUrl:
|
|
type: string
|
|
description: |-
|
|
Photo — from api.planespotters.net/pub/photos/hex/{icao24}
|
|
Aircraft photo URL (large thumbnail ~497x280).
|
|
photoLink:
|
|
type: string
|
|
description: Permalink to the photo page on planespotters.net.
|
|
photoCredit:
|
|
type: string
|
|
description: Photographer credit name.
|
|
callsignIata:
|
|
type: string
|
|
description: |-
|
|
Airline — resolved server-side from the ICAO callsign prefix.
|
|
IATA-equivalent callsign (e.g. "EK528" for ICAO "UAE528"). Empty if no mapping.
|
|
airlineName:
|
|
type: string
|
|
description: Airline name (e.g. "Emirates"). Empty if no mapping.
|
|
description: WingbitsLiveFlight contains real-time flight position data from the Wingbits ECS network.
|
|
ListDefensePatentsRequest:
|
|
type: object
|
|
properties:
|
|
cpcCode:
|
|
type: string
|
|
description: CPC category filter (e.g. "H04B", "F42B"). Empty returns all categories.
|
|
assignee:
|
|
type: string
|
|
description: Assignee keyword filter (case-insensitive substring match). Empty returns all.
|
|
limit:
|
|
type: integer
|
|
format: int32
|
|
description: Maximum results to return (default 20, max 100).
|
|
description: ListDefensePatentsRequest filters defense/dual-use patent filings.
|
|
ListDefensePatentsResponse:
|
|
type: object
|
|
properties:
|
|
patents:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/DefensePatentFiling'
|
|
total:
|
|
type: integer
|
|
format: int32
|
|
description: Total number of filings in the seeded dataset.
|
|
fetchedAt:
|
|
type: string
|
|
description: ISO 8601 timestamp when data was seeded.
|
|
description: ListDefensePatentsResponse contains recent defense/dual-use patent filings.
|
|
DefensePatentFiling:
|
|
type: object
|
|
properties:
|
|
patentId:
|
|
type: string
|
|
description: USPTO patent ID.
|
|
title:
|
|
type: string
|
|
description: Patent title.
|
|
date:
|
|
type: string
|
|
description: Filing date (YYYY-MM-DD).
|
|
assignee:
|
|
type: string
|
|
description: Primary assignee organization name.
|
|
cpcCode:
|
|
type: string
|
|
description: CPC classification code (e.g. "H04B", "F42B").
|
|
cpcDesc:
|
|
type: string
|
|
description: CPC class description.
|
|
abstract:
|
|
type: string
|
|
description: Patent abstract (truncated to 500 chars).
|
|
url:
|
|
type: string
|
|
description: USPTO patent URL.
|
|
description: DefensePatentFiling is a single patent filing from a defense/dual-use organization.
|