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,38 @@ info:
|
||||
version: 1.0.0
|
||||
paths:
|
||||
/api/research/v1/list-arxiv-papers:
|
||||
post:
|
||||
get:
|
||||
tags:
|
||||
- ResearchService
|
||||
summary: ListArxivPapers
|
||||
description: ListArxivPapers retrieves recent papers from arXiv.
|
||||
operationId: ListArxivPapers
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListArxivPapersRequest'
|
||||
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: category
|
||||
in: query
|
||||
description: arXiv category filter (e.g., "cs.AI"). Empty returns all tracked categories.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
- name: query
|
||||
in: query
|
||||
description: Search query for paper titles and abstracts.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -36,18 +56,38 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/research/v1/list-trending-repos:
|
||||
post:
|
||||
get:
|
||||
tags:
|
||||
- ResearchService
|
||||
summary: ListTrendingRepos
|
||||
description: ListTrendingRepos retrieves trending repositories from GitHub.
|
||||
operationId: ListTrendingRepos
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListTrendingReposRequest'
|
||||
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: language
|
||||
in: query
|
||||
description: Programming language filter (e.g., "python", "typescript").
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
- name: period
|
||||
in: query
|
||||
description: Trending period (e.g., "daily", "weekly"). Defaults to "daily".
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -68,18 +108,32 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/research/v1/list-hackernews-items:
|
||||
post:
|
||||
get:
|
||||
tags:
|
||||
- ResearchService
|
||||
summary: ListHackernewsItems
|
||||
description: ListHackernewsItems retrieves top stories from Hacker News.
|
||||
operationId: ListHackernewsItems
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListHackernewsItemsRequest'
|
||||
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: feed_type
|
||||
in: query
|
||||
description: 'Feed type: "top", "new", "best", "ask", "show". Defaults to "top".'
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -100,18 +154,39 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/research/v1/list-tech-events:
|
||||
post:
|
||||
get:
|
||||
tags:
|
||||
- ResearchService
|
||||
summary: ListTechEvents
|
||||
description: ListTechEvents retrieves tech events from Techmeme ICS, dev.events RSS, and curated sources.
|
||||
operationId: ListTechEvents
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ListTechEventsRequest'
|
||||
required: true
|
||||
parameters:
|
||||
- name: type
|
||||
in: query
|
||||
description: 'Event type filter: "all", "conferences", "earnings", "ipo", "other". Empty = all.'
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
- name: mappable
|
||||
in: query
|
||||
description: Only events with non-virtual coordinates.
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
- name: limit
|
||||
in: query
|
||||
description: Max events to return (0 = unlimited).
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
format: int32
|
||||
- name: days
|
||||
in: query
|
||||
description: Events within N days from now (0 = unlimited).
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
format: int32
|
||||
responses:
|
||||
"200":
|
||||
description: Successful response
|
||||
@@ -167,8 +242,13 @@ components:
|
||||
ListArxivPapersRequest:
|
||||
type: object
|
||||
properties:
|
||||
pagination:
|
||||
$ref: '#/components/schemas/PaginationRequest'
|
||||
pageSize:
|
||||
type: integer
|
||||
format: int32
|
||||
description: Maximum items per page (1-100).
|
||||
cursor:
|
||||
type: string
|
||||
description: Cursor for next page.
|
||||
category:
|
||||
type: string
|
||||
description: arXiv category filter (e.g., "cs.AI"). Empty returns all tracked categories.
|
||||
@@ -176,19 +256,6 @@ components:
|
||||
type: string
|
||||
description: Search query for paper titles and abstracts.
|
||||
description: ListArxivPapersRequest specifies filters for retrieving arXiv papers.
|
||||
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.
|
||||
ListArxivPapersResponse:
|
||||
type: object
|
||||
properties:
|
||||
@@ -248,8 +315,13 @@ components:
|
||||
ListTrendingReposRequest:
|
||||
type: object
|
||||
properties:
|
||||
pagination:
|
||||
$ref: '#/components/schemas/PaginationRequest'
|
||||
pageSize:
|
||||
type: integer
|
||||
format: int32
|
||||
description: Maximum items per page (1-100).
|
||||
cursor:
|
||||
type: string
|
||||
description: Cursor for next page.
|
||||
language:
|
||||
type: string
|
||||
description: Programming language filter (e.g., "python", "typescript").
|
||||
@@ -302,8 +374,13 @@ components:
|
||||
ListHackernewsItemsRequest:
|
||||
type: object
|
||||
properties:
|
||||
pagination:
|
||||
$ref: '#/components/schemas/PaginationRequest'
|
||||
pageSize:
|
||||
type: integer
|
||||
format: int32
|
||||
description: Maximum items per page (1-100).
|
||||
cursor:
|
||||
type: string
|
||||
description: Cursor for next page.
|
||||
feedType:
|
||||
type: string
|
||||
description: 'Feed type: "top", "new", "best", "ask", "show". Defaults to "top".'
|
||||
|
||||
Reference in New Issue
Block a user