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 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>
1 line
6.4 KiB
JSON
1 line
6.4 KiB
JSON
{"components":{"schemas":{"Error":{"description":"Error is returned when a handler encounters an error. It contains a simple error message that the developer can customize.","properties":{"message":{"description":"Error message (e.g., 'user not found', 'database connection failed')","type":"string"}},"type":"object"},"FieldViolation":{"description":"FieldViolation describes a single validation error for a specific field.","properties":{"description":{"description":"Human-readable description of the validation violation (e.g., 'must be a valid email address', 'required field missing')","type":"string"},"field":{"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')","type":"string"}},"required":["field","description"],"type":"object"},"FireDetection":{"description":"FireDetection represents a satellite-detected active fire from NASA FIRMS.","properties":{"brightness":{"description":"Brightness temperature in Kelvin.","format":"double","type":"number"},"confidence":{"description":"FireConfidence represents the confidence level of a fire detection.","enum":["FIRE_CONFIDENCE_UNSPECIFIED","FIRE_CONFIDENCE_LOW","FIRE_CONFIDENCE_NOMINAL","FIRE_CONFIDENCE_HIGH"],"type":"string"},"dayNight":{"description":"Day or night detection (\"D\" or \"N\").","type":"string"},"detectedAt":{"description":"Time the fire was detected, as Unix epoch milliseconds.. Warning: Values \u003e 2^53 may lose precision in JavaScript","format":"int64","type":"integer"},"frp":{"description":"Fire radiative power in MW.","format":"double","type":"number"},"id":{"description":"Unique detection identifier.","maxLength":100,"minLength":1,"type":"string"},"location":{"$ref":"#/components/schemas/GeoCoordinates"},"region":{"description":"Monitored region name (e.g., \"Ukraine\", \"Russia\", \"Iran\").","type":"string"},"satellite":{"description":"Satellite that detected the fire (e.g., \"MODIS\", \"VIIRS\", \"LANDSAT\").","type":"string"}},"required":["id"],"type":"object"},"GeoCoordinates":{"description":"GeoCoordinates represents a geographic location using WGS84 coordinates.","properties":{"latitude":{"description":"Latitude in decimal degrees (-90 to 90).","format":"double","maximum":90,"minimum":-90,"type":"number"},"longitude":{"description":"Longitude in decimal degrees (-180 to 180).","format":"double","maximum":180,"minimum":-180,"type":"number"}},"type":"object"},"ListFireDetectionsRequest":{"description":"ListFireDetectionsRequest specifies filters for retrieving fire detections from NASA FIRMS.","properties":{"cursor":{"description":"Cursor for next page.","type":"string"},"end":{"description":"End of time range (inclusive), Unix epoch milliseconds.. Warning: Values \u003e 2^53 may lose precision in JavaScript","format":"int64","type":"integer"},"neLat":{"description":"North-east latitude of bounding box.","format":"double","type":"number"},"neLon":{"description":"North-east longitude of bounding box.","format":"double","type":"number"},"pageSize":{"description":"Maximum items per page (1-100).","format":"int32","type":"integer"},"start":{"description":"Start of time range (inclusive), Unix epoch milliseconds.. Warning: Values \u003e 2^53 may lose precision in JavaScript","format":"int64","type":"integer"},"swLat":{"description":"South-west latitude of bounding box.","format":"double","type":"number"},"swLon":{"description":"South-west longitude of bounding box.","format":"double","type":"number"}},"type":"object"},"ListFireDetectionsResponse":{"description":"ListFireDetectionsResponse contains the list of fire detections matching the request filters.","properties":{"fireDetections":{"items":{"$ref":"#/components/schemas/FireDetection"},"type":"array"},"pagination":{"$ref":"#/components/schemas/PaginationResponse"}},"type":"object"},"PaginationResponse":{"description":"PaginationResponse contains pagination metadata returned alongside list results.","properties":{"nextCursor":{"description":"Cursor for fetching the next page. Empty string indicates no more pages.","type":"string"},"totalCount":{"description":"Total count of items matching the query, if known. Zero if the total is unknown.","format":"int32","type":"integer"}},"type":"object"},"ValidationError":{"description":"ValidationError is returned when request validation fails. It contains a list of field violations describing what went wrong.","properties":{"violations":{"description":"List of validation violations","items":{"$ref":"#/components/schemas/FieldViolation"},"type":"array"}},"required":["violations"],"type":"object"}}},"info":{"title":"WildfireService API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/wildfire/v1/list-fire-detections":{"get":{"description":"ListFireDetections retrieves satellite-detected active fires from NASA FIRMS.","operationId":"ListFireDetections","parameters":[{"description":"Start of time range (inclusive), Unix epoch milliseconds.","in":"query","name":"start","required":false,"schema":{"format":"int64","type":"string"}},{"description":"End of time range (inclusive), Unix epoch milliseconds.","in":"query","name":"end","required":false,"schema":{"format":"int64","type":"string"}},{"description":"Maximum items per page (1-100).","in":"query","name":"page_size","required":false,"schema":{"format":"int32","type":"integer"}},{"description":"Cursor for next page.","in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"description":"North-east latitude of bounding box.","in":"query","name":"ne_lat","required":false,"schema":{"format":"double","type":"number"}},{"description":"North-east longitude of bounding box.","in":"query","name":"ne_lon","required":false,"schema":{"format":"double","type":"number"}},{"description":"South-west latitude of bounding box.","in":"query","name":"sw_lat","required":false,"schema":{"format":"double","type":"number"}},{"description":"South-west longitude of bounding box.","in":"query","name":"sw_lon","required":false,"schema":{"format":"double","type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFireDetectionsResponse"}}},"description":"Successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}},"description":"Validation error"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error response"}},"summary":"ListFireDetections","tags":["WildfireService"]}}}} |