mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-25 17:14:57 +02:00
* feat(military): resolve ICAO→IATA callsign for Wingbits flights Server resolves ICAO airline prefix (e.g. UAE→EK) at response time using a static ~100-entry lookup table, populating new proto fields callsign_iata and airline_name. Schedule lookup falls back to the IATA callsign inside the same cachedFetchJson callback to recover schedules that ECS only indexes under the commercial callsign. Callsigns are normalized to uppercase before caching to prevent duplicate cache keys from mixed-case ECS responses. Client popup shows the IATA callsign and airline name above the route section. * fix(military): correct airline data errors and add handler tests Remove BOG (airport code, not airline ICAO), remove TVS/NOZ (incorrect Transavia mappings), add TRA→HV as correct Transavia ICAO code. Remove non-standard TKJ duplicate of THY. Add handler integration tests that verify the IATA schedule fallback path via globalThis.fetch mock, plus guards for empty/invalid icao24 inputs. * docs(military): add refresh comment to airline-codes header * fix(military): correct TGW and WIF airline mappings TGW is Scoot (TR), not Oman Air — add OMA for Oman Air (WY). WIF is Wideroe (WF), not Wizz Air Abu Dhabi — add WAD for Wizz Air Abu Dhabi (W4). Both errors caused wrong popup labels and broken schedule fallback lookups. * fix(military): correct AUB and IBK airline mappings Austrian Airlines uses AUA (not AUB), IATA OS. Iberia Express uses IBS (not IBK), IATA I2 (not NT). Both errors caused toIataCallsign() to return null for live traffic, leaving popup header empty and skipping schedule fallback. * fix(military): remove/correct five more bad airline ICAO entries Remove BCS (European Air Transport cargo, not OpenSkies). Remove SHI (Seoul Air International, no commercial IATA). Fix SHY: Sky Airlines Turkey (ZY), not Uzbekistan Airways. Remove WAD (Waddington RAF training unit, not Wizz Air Abu Dhabi). TGW/Scoot kept as-is — Scoot is the current brand name since 2012. * fix(military): fix SWG/WestJet mapping, add ASH/Mesa SWG is Sunwing (WG), not WestJet — add WJA for WestJet (WS). ASH is Mesa Airlines (YV) — was removed as SHI but correct ICAO never added.
1197 lines
49 KiB
YAML
1197 lines
49 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'
|
|
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.
|