{"openapi":"3.1.0","info":{"title":"devnors-data API","description":"Devnors 数据平台 —— 官方开放数据检索服务（案件库先行）","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["health"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/ready":{"get":{"tags":["health"],"summary":"Ready","operationId":"ready_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ready Ready Get"}}}}}}},"/v1/cases/search":{"get":{"tags":["cases"],"summary":"Search Cases","operationId":"search_cases_v1_cases_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"检索词","default":"","title":"Q"},"description":"检索词"},{"name":"cause","in":"query","required":false,"schema":{"type":"string","default":"","title":"Cause"}},{"name":"court_level","in":"query","required":false,"schema":{"type":"string","default":"","title":"Court Level"}},{"name":"region","in":"query","required":false,"schema":{"type":"string","default":"","title":"Region"}},{"name":"case_type","in":"query","required":false,"schema":{"type":"string","description":"案件类型（刑事/民事/行政/执行/国家赔偿）分面过滤","default":"","title":"Case Type"},"description":"案件类型（刑事/民事/行政/执行/国家赔偿）分面过滤"},{"name":"year_start","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year Start"}},{"name":"year_end","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year End"}},{"name":"top_k","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Top K"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"浅翻页偏移（对应 ES from）","default":0,"title":"Offset"},"description":"浅翻页偏移（对应 ES from）"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"深翻页游标；传入即走 search_after（超 1w 条稳定翻页）。首页传空串","title":"Cursor"},"description":"深翻页游标；传入即走 search_after（超 1w 条稳定翻页）。首页传空串"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cases/stats":{"get":{"tags":["cases"],"summary":"Case Stats","operationId":"case_stats_v1_cases_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cases/more_like_this":{"post":{"tags":["cases"],"summary":"More Like This","operationId":"more_like_this_v1_cases_more_like_this_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoreLikeThisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cases/{case_ref}":{"get":{"tags":["cases"],"summary":"Get Case","operationId":"get_case_v1_cases__case_ref__get","parameters":[{"name":"case_ref","in":"path","required":true,"schema":{"type":"string","title":"Case Ref"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaseHit"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/data/query":{"post":{"tags":["data-query"],"summary":"Data Query","operationId":"data_query_v1_data_query_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataQueryIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/cases/ingest":{"post":{"tags":["admin"],"summary":"Ingest Cases","description":"接收 NDJSON 批次，幂等灌库到别名。返回累计计数（seen/written/errors/skipped）。","operationId":"ingest_cases_v1_admin_cases_ingest_post","parameters":[{"name":"allow_non_official","in":"query","required":false,"schema":{"type":"boolean","description":"放行非官方源记录（默认 False，缺官方 source_url 会被跳过，见 §1）","default":false,"title":"Allow Non Official"},"description":"放行非官方源记录（默认 False，缺官方 source_url 会被跳过，见 §1）"},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"本批写入后 refresh 索引（远程分批推默认关，由客户端按阈值触发）","default":false,"title":"Refresh"},"description":"本批写入后 refresh 索引（远程分批推默认关，由客户端按阈值触发）"},{"name":"x-ingest-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Cases V1 Admin Cases Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/cases/refresh":{"post":{"tags":["admin"],"summary":"Refresh Cases","description":"手动 refresh 索引；远程 push 每 N 条或全部完成后调用。","operationId":"refresh_cases_v1_admin_cases_refresh_post","parameters":[{"name":"stats","in":"query","required":false,"schema":{"type":"boolean","description":"同时刷新 stats 预计算 doc（仅全部推完时建议开）","default":false,"title":"Stats"},"description":"同时刷新 stats 预计算 doc（仅全部推完时建议开）"},{"name":"x-ingest-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Cases V1 Admin Cases Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/dashboard/users":{"get":{"tags":["admin-panel"],"summary":"Panel User Dashboard","operationId":"panel_user_dashboard_v1_admin_panel_dashboard_users_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel User Dashboard V1 Admin Panel Dashboard Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/api-calls/stats":{"get":{"tags":["admin-panel"],"summary":"Panel Api Call Stats","description":"API 调用汇总：成功率 / 失败率 + 今日 + 用户排名 + endpoint / error_code。","operationId":"panel_api_call_stats_v1_admin_panel_api_calls_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"top_users","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Top Users"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Api Call Stats V1 Admin Panel Api Calls Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/legal-tags":{"get":{"tags":["admin-panel"],"summary":"Panel Legal Tags","description":"法律标签库：案件类型 / 文书类型 / 审理程序 / 法院级别（分组返回）。","operationId":"panel_legal_tags_v1_admin_panel_legal_tags_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Legal Tags V1 Admin Panel Legal Tags Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-panel"],"summary":"Panel Create Legal Tag","operationId":"panel_create_legal_tag_v1_admin_panel_legal_tags_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalTagCreateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Create Legal Tag V1 Admin Panel Legal Tags Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/legal-tags/{term_id}":{"delete":{"tags":["admin-panel"],"summary":"Panel Delete Legal Tag","operationId":"panel_delete_legal_tag_v1_admin_panel_legal_tags__term_id__delete","parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"integer","title":"Term Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Delete Legal Tag V1 Admin Panel Legal Tags  Term Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/legal-tags/seed":{"post":{"tags":["admin-panel"],"summary":"Panel Seed Legal Tags","operationId":"panel_seed_legal_tags_v1_admin_panel_legal_tags_seed_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Seed Legal Tags V1 Admin Panel Legal Tags Seed Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/regions":{"get":{"tags":["admin-panel"],"summary":"Panel List Regions","operationId":"panel_list_regions_v1_admin_panel_regions_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel List Regions V1 Admin Panel Regions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-panel"],"summary":"Panel Create Region","operationId":"panel_create_region_v1_admin_panel_regions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionCreateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Create Region V1 Admin Panel Regions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/regions/{region_id}":{"patch":{"tags":["admin-panel"],"summary":"Panel Update Region","operationId":"panel_update_region_v1_admin_panel_regions__region_id__patch","parameters":[{"name":"region_id","in":"path","required":true,"schema":{"type":"integer","title":"Region Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Update Region V1 Admin Panel Regions  Region Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-panel"],"summary":"Panel Delete Region","operationId":"panel_delete_region_v1_admin_panel_regions__region_id__delete","parameters":[{"name":"region_id","in":"path","required":true,"schema":{"type":"integer","title":"Region Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Delete Region V1 Admin Panel Regions  Region Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/regions/seed":{"post":{"tags":["admin-panel"],"summary":"Panel Seed Regions","operationId":"panel_seed_regions_v1_admin_panel_regions_seed_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Seed Regions V1 Admin Panel Regions Seed Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/users/providers":{"get":{"tags":["admin-panel"],"summary":"Panel User Providers","operationId":"panel_user_providers_v1_admin_panel_users_providers_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel User Providers V1 Admin Panel Users Providers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/users":{"get":{"tags":["admin-panel"],"summary":"Panel List Users","operationId":"panel_list_users_v1_admin_panel_users_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Pagesize"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string","default":"","title":"Keyword"}},{"name":"provider","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Provider"}},{"name":"role","in":"query","required":false,"schema":{"type":"string","default":"","title":"Role"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel List Users V1 Admin Panel Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/login":{"post":{"tags":["admin-panel"],"summary":"Panel Login","operationId":"panel_login_v1_admin_panel_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/site-config":{"get":{"tags":["admin-panel"],"summary":"Panel Site Config","description":"公开站点名（对齐 task /platform/site-config，供 SPA 顶栏）。","operationId":"panel_site_config_v1_admin_panel_site_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Panel Site Config V1 Admin Panel Site Config Get"}}}}}}},"/v1/admin/panel/me":{"get":{"tags":["admin-panel"],"summary":"Panel Me","operationId":"panel_me_v1_admin_panel_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Me V1 Admin Panel Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/overview":{"get":{"tags":["admin-panel"],"summary":"Panel Overview","operationId":"panel_overview_v1_admin_panel_overview_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Overview V1 Admin Panel Overview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/refresh-stats":{"post":{"tags":["admin-panel"],"summary":"Panel Refresh Stats","operationId":"panel_refresh_stats_v1_admin_panel_refresh_stats_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Refresh Stats V1 Admin Panel Refresh Stats Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/cases/facets":{"get":{"tags":["admin-panel"],"summary":"Panel Case Facets","description":"案例查询筛选项 —— 优先取「法律标签库 + 城市管理」，OpenSearch 分面兜底。","operationId":"panel_case_facets_v1_admin_panel_cases_facets_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Case Facets V1 Admin Panel Cases Facets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/cases/search":{"get":{"tags":["admin-panel"],"summary":"Panel Case Search","description":"管理后台案例查询 —— ``source=api`` 调法研；``source=opensearch`` 走本站索引。","operationId":"panel_case_search_v1_admin_panel_cases_search_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"opensearch","title":"Source"}},{"name":"cause","in":"query","required":false,"schema":{"type":"string","default":"","title":"Cause"}},{"name":"case_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Case Type"}},{"name":"court","in":"query","required":false,"schema":{"type":"string","default":"","title":"Court"}},{"name":"court_level","in":"query","required":false,"schema":{"type":"string","default":"","title":"Court Level"}},{"name":"doc_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Doc Type"}},{"name":"province","in":"query","required":false,"schema":{"type":"string","default":"","title":"Province"}},{"name":"trial_procedure","in":"query","required":false,"schema":{"type":"string","default":"","title":"Trial Procedure"}},{"name":"year_start","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year Start"}},{"name":"year_end","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year End"}},{"name":"judge_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Judge Year"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"case_no","in":"query","required":false,"schema":{"type":"string","default":"","title":"Case No"}},{"name":"title","in":"query","required":false,"schema":{"type":"string","default":"","title":"Title"}},{"name":"parties","in":"query","required":false,"schema":{"type":"string","default":"","title":"Parties"}},{"name":"judgment_reason","in":"query","required":false,"schema":{"type":"string","default":"","title":"Judgment Reason"}},{"name":"judgment_result","in":"query","required":false,"schema":{"type":"string","default":"","title":"Judgment Result"}},{"name":"focus","in":"query","required":false,"schema":{"type":"string","default":"","title":"Focus"}},{"name":"applicable_law","in":"query","required":false,"schema":{"type":"string","default":"","title":"Applicable Law"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Page Size"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"judgment","title":"Sort"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Case Search V1 Admin Panel Cases Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/cases/detail":{"post":{"tags":["admin-panel"],"summary":"Panel Case Detail","description":"案例结构化详情：DB 优先，缺失回源法研详情接口并落库（幂等）。","operationId":"panel_case_detail_v1_admin_panel_cases_detail_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PanelCaseDetailBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Case Detail V1 Admin Panel Cases Detail Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/case-details":{"get":{"tags":["admin-panel"],"summary":"Panel List Case Details","description":"详情库列表 —— 已落库的法研结构化案例详情（DB 缓存），按更新时间倒序分页。","operationId":"panel_list_case_details_v1_admin_panel_case_details_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Pagesize"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string","default":"","title":"Keyword"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel List Case Details V1 Admin Panel Case Details Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/case-details/{doc_id}":{"delete":{"tags":["admin-panel"],"summary":"Panel Delete Case Detail","description":"从详情库删除一条（按 doc_id）。","operationId":"panel_delete_case_detail_v1_admin_panel_case_details__doc_id__delete","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Delete Case Detail V1 Admin Panel Case Details  Doc Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/case-details/{doc_id}/reset":{"post":{"tags":["admin-panel"],"summary":"Panel Reset Case Detail","description":"重置详情内容 —— 调法研详情 API 重新查询并覆盖落库（幂等）。\n\n``debug=true`` 时把法研原始返回 payload 一并回传（``log`` 字段），仅供页面临时展示，不存储。","operationId":"panel_reset_case_detail_v1_admin_panel_case_details__doc_id__reset_post","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PanelCaseDetailResetBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Reset Case Detail V1 Admin Panel Case Details  Doc Id  Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/cases/document":{"delete":{"tags":["admin-panel"],"summary":"Panel Delete Case","description":"从 OpenSearch 别名按案号删除一条（管理后台确认后调用）。","operationId":"panel_delete_case_v1_admin_panel_cases_document_delete","parameters":[{"name":"case_no","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":256,"title":"Case No"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Delete Case V1 Admin Panel Cases Document Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/panel/cases/ingest":{"post":{"tags":["admin-panel"],"summary":"Panel Ingest Cases","description":"三方 API 当前页一键入库（幂等 upsert；须带官方 source_url）。","operationId":"panel_ingest_cases_v1_admin_panel_cases_ingest_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PanelIngestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Panel Ingest Cases V1 Admin Panel Cases Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CaseHit":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"case_no":{"type":"string","title":"Case No","default":""},"court_name":{"type":"string","title":"Court Name","default":""},"court_level":{"type":"string","title":"Court Level","default":""},"cause_of_action":{"type":"string","title":"Cause Of Action","default":""},"cause_l1":{"type":"string","title":"Cause L1","default":""},"cause_l2":{"type":"string","title":"Cause L2","default":""},"cause_l3":{"type":"string","title":"Cause L3","default":""},"case_type":{"type":"string","title":"Case Type","default":""},"trial_procedure":{"type":"string","title":"Trial Procedure","default":""},"trial_stage":{"type":"string","title":"Trial Stage","default":""},"doc_type":{"type":"string","title":"Doc Type","default":""},"region":{"type":"string","title":"Region","default":""},"province":{"type":"string","title":"Province","default":""},"city":{"type":"string","title":"City","default":""},"judgment_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Judgment Year"},"judgment_date":{"type":"string","title":"Judgment Date","default":""},"judgment_result":{"type":"string","title":"Judgment Result","default":""},"court_opinion":{"type":"string","title":"Court Opinion","default":""},"summary":{"type":"string","title":"Summary","default":""},"applied_laws":{"items":{},"type":"array","title":"Applied Laws"},"case_level":{"type":"string","title":"Case Level","default":""},"guiding_no":{"type":"string","title":"Guiding No","default":""},"ruling_gist":{"type":"string","title":"Ruling Gist","default":""},"keywords":{"items":{},"type":"array","title":"Keywords"},"full_text":{"type":"string","title":"Full Text","default":""},"score":{"type":"number","title":"Score","default":0.0},"source":{"type":"string","title":"Source","default":""}},"type":"object","title":"CaseHit"},"DataQueryIn":{"properties":{"domain":{"type":"string","title":"Domain","description":"数据域，如 legal"},"type":{"type":"string","title":"Type","description":"数据类型，如 case / law_article / law_catalog"},"query":{"type":"string","title":"Query","description":"检索词","default":""},"filters":{"additionalProperties":true,"type":"object","title":"Filters","description":"结构化过滤（按域约定）"},"top_k":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Top K","default":20}},"type":"object","required":["domain","type"],"title":"DataQueryIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LegalTagCreateBody":{"properties":{"kind":{"type":"string","maxLength":32,"minLength":1,"title":"Kind"},"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"},"code":{"type":"string","maxLength":128,"minLength":1,"title":"Code"}},"type":"object","required":["kind","name","code"],"title":"LegalTagCreateBody"},"LoginBody":{"properties":{"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password"},"account":{"type":"string","title":"Account","default":""},"phone":{"type":"string","title":"Phone","default":""}},"type":"object","required":["password"],"title":"LoginBody","description":"兼容 task admin：表单字段为 phone；也接受 account。"},"LoginResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"token":{"type":"string","title":"Token"},"user":{"additionalProperties":true,"type":"object","title":"User"}},"type":"object","required":["token","user"],"title":"LoginResponse","description":"形状对齐 task admin 的 { ok, user }，并附带 Bearer token。"},"MoreLikeThisRequest":{"properties":{"case":{"additionalProperties":true,"type":"object","title":"Case"},"top_k":{"type":"integer","title":"Top K","default":10}},"type":"object","required":["case"],"title":"MoreLikeThisRequest"},"PanelCaseDetailBody":{"properties":{"doc_id":{"type":"string","maxLength":128,"title":"Doc Id","default":""},"case_no":{"type":"string","maxLength":256,"title":"Case No","default":""}},"type":"object","title":"PanelCaseDetailBody","description":"查看详情：优先 ``doc_id``（法研 uniqid）；缺失时用 ``case_no`` 回源解析。"},"PanelCaseDetailResetBody":{"properties":{"debug":{"type":"boolean","title":"Debug","default":false}},"type":"object","title":"PanelCaseDetailResetBody","description":"重置详情内容：回源法研详情接口重新查询并覆盖落库；debug 时附返回日志（不落库）。"},"PanelIngestBody":{"properties":{"records":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":100,"minItems":1,"title":"Records"}},"type":"object","required":["records"],"title":"PanelIngestBody","description":"一键入库：当前页法研命中附带的归一化前 records（整页批量）。"},"RegionCreateBody":{"properties":{"parentId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parentid"},"code":{"type":"string","maxLength":128,"minLength":1,"title":"Code"},"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"},"enabled":{"type":"boolean","title":"Enabled","default":true},"sortOrder":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sortorder"},"hotScore":{"type":"integer","title":"Hotscore","default":0}},"type":"object","required":["code","name"],"title":"RegionCreateBody"},"RegionUpdateBody":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Code"},"name":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Name"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"sortOrder":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sortorder"},"hotScore":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hotscore"}},"type":"object","title":"RegionUpdateBody"},"SearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"total":{"type":"integer","title":"Total"},"hits":{"items":{"$ref":"#/components/schemas/CaseHit"},"type":"array","title":"Hits"},"total_hits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Hits"},"offset":{"type":"integer","title":"Offset","default":0},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["query","total","hits"],"title":"SearchResponse"},"StatsResponse":{"properties":{"total":{"type":"integer","title":"Total","default":0},"by_year":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Year"},"top_causes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Causes"},"by_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Type"},"by_trial_procedure":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Trial Procedure"},"by_doc_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Doc Type"},"by_case_level":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Case Level"},"by_court_level":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Court Level"},"top_regions":{"additionalProperties":{"type":"integer"},"type":"object","title":"Top Regions"},"causes_by_type":{"additionalProperties":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"type":"object","title":"Causes By Type"},"stage_by_type":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"Stage By Type"},"by_province":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Province"},"city_by_province":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"City By Province"},"causel1_by_type":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"Causel1 By Type"},"l2_by_causel1":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"L2 By Causel1"},"l3_by_causel2":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"L3 By Causel2"},"ingest_by_day":{"additionalProperties":{"type":"integer"},"type":"object","title":"Ingest By Day"}},"type":"object","title":"StatsResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}