{"openapi":"3.1.0","info":{"title":"OSINT Corporate API DR","version":"1.0.0"},"paths":{"/token":{"post":{"summary":"Login","operationId":"login_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/entity/{rnc}":{"get":{"summary":"Get Entity Profile","operationId":"get_entity_profile_entity__rnc__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/entity/{rnc}/upload-acta":{"post":{"summary":"Upload Acta","operationId":"upload_acta_entity__rnc__upload_acta_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_acta_entity__rnc__upload_acta_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadActaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ubo/{rnc}":{"get":{"summary":"Get Ultimate Beneficial Owner","operationId":"get_ultimate_beneficial_owner_ubo__rnc__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Depth"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conflicts":{"get":{"summary":"Get Conflicts","operationId":"get_conflicts_conflicts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rncs","in":"query","required":true,"schema":{"type":"string","title":"Rncs"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/testaferros":{"get":{"summary":"List Testaferros","description":"Top personas con patrón de testaferro: aparecen como representante/accionista\nen >= min_empresas distintas. Devuelve un score heurístico de sospecha.\n\nScore = N empresas (1pt c/u) + bonus si:\n  - RNCs consecutivos detectados (sugiere constitución masiva)\n  - Más del 50% de nombres de empresa contienen patrón \"GRUPO|INVERSIONES|CONSTRUCTORA|INVESTMENTS\"","operationId":"list_testaferros_testaferros_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"min_empresas","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Min Empresas"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/holdings/by-person/{person_name}":{"get":{"summary":"Holding By Person","description":"Devuelve TODAS las empresas vinculadas a una persona (o nombre similar).\nÚtil para ver el holding completo cuando ya identificaste a un testaferro.\nMatch case-insensitive sobre nombre normalizado.","operationId":"holding_by_person_holdings_by_person__person_name__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"person_name","in":"path","required":true,"schema":{"type":"string","title":"Person Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/entity/{rnc}/network":{"get":{"summary":"Entity Network","description":"Para un RNC dado, devuelve la RED COMPLETA de empresas vinculadas vía\npersonas comunes. Permite ver el holding al que pertenece la empresa.\n\ndepth=1 → empresas que comparten al menos un representante/accionista.\ndepth=2 → cadena: empresa → persona → empresa → persona → empresa.","operationId":"entity_network_entity__rnc__network_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Depth"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/holdings/clusters":{"get":{"summary":"Holdings Clusters","description":"Detecta automáticamente CLUSTERS de empresas vinculadas por personas comunes.\nCada cluster = una persona \"pivote\" + sus empresas. Equivalente a community\ndetection de tamaño bajo.\n\nSalida: top N pivotes por # de empresas controladas, con flags si la persona\nestá en sanciones/PEPs y % de RNCs consecutivos (señal de constitución masiva).","operationId":"holdings_clusters_holdings_clusters_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"min_empresas","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Min Empresas"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/entity/{rnc}/intelligence":{"get":{"summary":"Entity Intelligence","description":"Reporte OSINT 360° para debida diligencia. Una sola llamada agrega:\n- Identidad fiscal\n- Personas vinculadas (representantes/accionistas/controladores)\n- Holding (red de empresas vinculadas vía personas comunes)\n- Cadena UBO multi-hop (hasta 6 niveles)\n- Alertas: PEP, sancionados, conexiones offshore\n- Score de riesgo computado y nivel (BAJO/MEDIO/ALTO/CRÍTICO)\n\nOutput diseñado para consumo directo del cliente B2B\n(banco, bufete, auditor) como reporte de debida diligencia listo.","operationId":"entity_intelligence_entity__rnc__intelligence_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/entity/{rnc}/score-history":{"get":{"summary":"Entity Score History","description":"Historial de score de la empresa (cómo cambió en el tiempo).","operationId":"entity_score_history_entity__rnc__score_history_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/usage":{"get":{"summary":"Me Usage","description":"Dashboard del cliente B2B: consultas hechas, balance de créditos.","operationId":"me_usage_me_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/webhooks":{"get":{"summary":"Listar Webhooks","operationId":"listar_webhooks_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"summary":"Crear Webhook","description":"Registra un webhook que disparará POST a la URL del cliente cuando\nocurran eventos: bandera_critica, inhabilitacion, pepca, score_subio.","operationId":"crear_webhook_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/webhooks/{webhook_id}":{"delete":{"summary":"Borrar Webhook","operationId":"borrar_webhook_webhooks__webhook_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bulk-kyc":{"post":{"summary":"Bulk Kyc","description":"Análisis en lote: hasta 200 RNCs por request. Por cada uno devuelve\nscore, banderas rojas, contratos del Estado, inhabilitación, PEPCA.\nPensado para bancos/bufetes que tienen carteras de proveedores y\nnecesitan KYC masivo.","operationId":"bulk_kyc_bulk_kyc_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkKycRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/entity/{rnc}/intelligence/pdf-executive":{"get":{"summary":"Entity Intelligence Pdf Executive","description":"Reporte ejecutivo: 1 página con score, banderas rojas y resumen.\nPara enviar a un comité sin abrumar.","operationId":"entity_intelligence_pdf_executive_entity__rnc__intelligence_pdf_executive_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/entity/{rnc}/intelligence/pdf":{"get":{"summary":"Entity Intelligence Pdf","description":"Genera el Reporte 360° en PDF descargable, watermarkeado con client_id + ref,\ny registra cada generación en report_audit para trazabilidad B2B.","operationId":"entity_intelligence_pdf_entity__rnc__intelligence_pdf_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/funcionarios/pluriempleo":{"get":{"summary":"List Pluriempleo","description":"Funcionarios públicos cobrando en >= min_instituciones distintas en el período\nmás reciente (2026). Patrón de fraude: la Ley de Función Pública RD prohíbe\nnóminas múltiples del Estado salvo casos muy puntuales (docentes, médicos).\n\nDevuelve cédula + nombre + lista de instituciones + cargos + sueldos.","operationId":"list_pluriempleo_funcionarios_pluriempleo_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"min_instituciones","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Min Instituciones"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/funcionario/{cedula}":{"get":{"summary":"Get Funcionario","description":"Detalle de funcionario público por cédula:\n- Datos del padrón de nóminas (instituciones, cargos, sueldos)\n- Empresas privadas donde aparece como representante/accionista (cross-ref)\n- Flag de PEP/sanción si aplica","operationId":"get_funcionario_funcionario__cedula__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"cedula","in":"path","required":true,"schema":{"type":"string","title":"Cedula"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/task/{task_id}":{"get":{"summary":"Get Task Status","operationId":"get_task_status_task__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/credits/grant":{"post":{"summary":"Grant Credits","operationId":"grant_credits_admin_credits_grant_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantCreditsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/admin/credits/{client_id}":{"get":{"summary":"Get Credits","operationId":"get_credits_admin_credits__client_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/login":{"post":{"summary":"Admin Login","description":"Trade ADMIN_TOKEN env value for an admin JWT (24h expiry).","operationId":"admin_login_admin_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/overview":{"get":{"summary":"Admin Analytics Overview","description":"Resumen global: hits/uniq/humans/bots últimos N días.","operationId":"admin_analytics_overview_admin_analytics_overview_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/top-pages":{"get":{"summary":"Admin Top Pages","description":"Top URLs visitadas en últimos N días, agregando counts.","operationId":"admin_top_pages_admin_analytics_top_pages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/referrers":{"get":{"summary":"Admin Referrers","description":"Top dominios referrer.","operationId":"admin_referrers_admin_analytics_referrers_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/realtime":{"get":{"summary":"Admin Realtime","description":"Últimas N requests (feed live).","operationId":"admin_realtime_admin_analytics_realtime_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/top-entities":{"get":{"summary":"Admin Top Entities","description":"Top RNCs consultados (paths que matchean /empresa/{rnc} o /widget/empresa/{rnc}).","operationId":"admin_top_entities_admin_analytics_top_entities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/system":{"get":{"summary":"Admin System Stats","description":"Estadísticas generales del sistema: registros, cache, salud.","operationId":"admin_system_stats_admin_analytics_system_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/search":{"get":{"summary":"Search Entities","operationId":"search_entities_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rankings/top-contratistas":{"get":{"summary":"Ranking Top Contratistas","description":"Top empresas por monto adjudicado del Estado. Público (sin auth).","operationId":"ranking_top_contratistas_rankings_top_contratistas_get","parameters":[{"name":"anio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anio"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rankings/top-redes":{"get":{"summary":"Ranking Top Redes","description":"Top redes (comunidades Louvain) por monto adjudicado. Público.","operationId":"ranking_top_redes_rankings_top_redes_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rankings/top-capturas":{"get":{"summary":"Ranking Top Capturas","description":"Top instituciones+años con dominio absoluto: una empresa con >=70%\ndel erario. Sin auth — accesible para ciudadanía.","operationId":"ranking_top_capturas_rankings_top_capturas_get","parameters":[{"name":"anio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anio"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rankings/inhabilitados-recientes":{"get":{"summary":"Ranking Inhabilitados Recientes","description":"Empresas inhabilitadas por DGCP más recientes (con sanción vigente).","operationId":"ranking_inhabilitados_recientes_rankings_inhabilitados_recientes_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pepca/cross-case":{"get":{"summary":"Pepca Cross Case","description":"Personas y empresas que aparecen en VARIOS casos PEPCA simultáneos.\nLas que más se repiten son las más probables de ser cabecillas reales.\nPúblico — sin auth.","operationId":"pepca_cross_case_pepca_cross_case_get","parameters":[{"name":"min_casos","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Min Casos"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partidos/contratistas":{"get":{"summary":"Partidos Contratistas","description":"Por partido en el poder, top empresas que recibieron contratos.\nPermite ver si hay continuidad de contratistas entre gobiernos o cambio\nradical (señal de captura partidaria). Público.","operationId":"partidos_contratistas_partidos_contratistas_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/empresas/shell-pep":{"get":{"summary":"Empresas Shell Pep","description":"Empresas con officer PEP/sancionado pero SIN actividad económica\nsignificativa (sin contratos, sin red, sin actividad reportada en DGII).\nPatrón típico de empresa-fantasma para lavado o captura de campañas.\nPúblico.","operationId":"empresas_shell_pep_empresas_shell_pep_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sectores":{"get":{"summary":"Listar Sectores","description":"Buscar empresas por sector económico (Construcción, Salud, Educación,\netc.). Si sector es None, devuelve los sectores con más empresas.","operationId":"listar_sectores_sectores_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/empresa/{rnc}/similares":{"get":{"summary":"Empresas Similares","description":"Encuentra empresas similares basado en sector económico + tamaño +\nestado fiscal. Útil para due diligence comparativo.","operationId":"empresas_similares_empresa__rnc__similares_get","parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/casos-pepca":{"get":{"summary":"Listar Casos Pepca","description":"Lista los casos de PEPCA cargados al grafo. Público.","operationId":"listar_casos_pepca_api_casos_pepca_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/casos-pepca/{case_id}":{"get":{"summary":"Detalle Caso Pepca","description":"Detalle de un caso PEPCA: personas y empresas imputadas + fuentes.","operationId":"detalle_caso_pepca_api_casos_pepca__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auditorias":{"get":{"summary":"Listar Auditorias","description":"Auditorías publicadas por la Cámara de Cuentas RD. Público.","operationId":"listar_auditorias_auditorias_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/buscar":{"get":{"summary":"Buscar Unificado","description":"Búsqueda unificada amigable: empresa por nombre/RNC, persona por\nnombre/cédula. Sin auth — accesible para cualquier ciudadano.\n\nDevuelve resultados mixtos con tipo (empresa/persona), nombre, ID y\nseñal rápida (si tiene contratos del Estado, si es funcionario, si\nestá inhabilitada).","operationId":"buscar_unificado_buscar_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":15,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rankings/transparencia-institucional":{"get":{"summary":"Ranking Transparencia","description":"Índice de transparencia por institución y año. Combina:\n  - % de procesos por LICITACIÓN PÚBLICA (mayor = más transparente)\n  - Diversidad: # de empresas distintas que ganaron / # contratos\n    (mayor = mejor distribución)\n  - Penalización por concentración top1\nScore final 0-100, mayor = más transparente.","operationId":"ranking_transparencia_rankings_transparencia_institucional_get","parameters":[{"name":"anio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anio"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/anomalias/sobreprecios":{"get":{"summary":"Anomalias Sobreprecios","description":"Contratos cuyo valor es N veces la mediana de su categoría (objeto).\nDetecta posibles sobreprecios sin necesidad de conocer precios de mercado.\n\nobjeto: Bienes / Servicios / Obras (None = todos)\nmultiplicador_min: cuántas veces > mediana (default 5x)\nmonto_min_m: filtrar contratos pequeños (default RD$ 50M)","operationId":"anomalias_sobreprecios_anomalias_sobreprecios_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"objeto","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Objeto"}},{"name":"multiplicador_min","in":"query","required":false,"schema":{"type":"number","default":5.0,"title":"Multiplicador Min"}},{"name":"monto_min_m","in":"query","required":false,"schema":{"type":"number","default":50.0,"title":"Monto Min M"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/co-officers":{"get":{"summary":"Co Officers","description":"Pares de personas que aparecen JUNTAS como officers en >= N empresas\ndistintas. Detecta \"equipos testaferros\" — personas que se mueven\ncoordinadas constituyendo y operando empresas en conjunto.\n\nDevuelve por par: total empresas compartidas, monto adjudicado del\nEstado en esas empresas, muestra de empresas.","operationId":"co_officers_co_officers_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"min_empresas_juntas","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Min Empresas Juntas"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/puerta-giratoria":{"get":{"summary":"Puerta Giratoria","description":"Funcionarios públicos (registro MAP) que aparecen como officers en\nempresas privadas, y esas empresas contrataron con la MISMA institución\ndonde el funcionario trabaja/trabajó. Patrón clásico de conflicto de\ninterés: la persona está sentada en ambos lados de la mesa.\n\nCruza:\n  Person.es_funcionario_publico=true · Person.institucion_publica=X\n  Person→Entity (oficial) · Entity←Contract (codigo prefijo X)","operationId":"puerta_giratoria_puerta_giratoria_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"name":"min_monto_m","in":"query","required":false,"schema":{"type":"number","default":10.0,"title":"Min Monto M"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/comunidades":{"get":{"summary":"Listar Comunidades","description":"Comunidades del grafo (algoritmo Louvain): grupos de empresas\nentrelazadas por officers compartidos. Incluso cuando NO hay un\ntestaferro central, varias personas cruzadas pueden indicar una\nunidad económica de hecho.\n\nRetorna top comunidades por monto adjudicado del Estado.","operationId":"listar_comunidades_comunidades_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"min_empresas","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Min Empresas"}},{"name":"min_monto_m","in":"query","required":false,"schema":{"type":"number","default":100.0,"title":"Min Monto M"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/comunidad/{community_id}":{"get":{"summary":"Detalle Comunidad","description":"Detalle de una comunidad detectada: todas sus empresas, personas\npivote, instituciones donde han contratado, monto total.","operationId":"detalle_comunidad_comunidad__community_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"integer","title":"Community Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/institucion/{prefix}/concentracion":{"get":{"summary":"Institucion Concentracion","description":"Concentración del erario en una institución pública por año: quién se\nquedó qué porcentaje del monto adjudicado.\n\nDetecta CAPTURA INSTITUCIONAL: si una empresa o un holding se llevó\nmás del 40% de lo que esa institución adjudicó en el año, es señal de\ncontratación dirigida.\n\nCruza Contract por prefijo del codigo_contrato (institución) + año\nde fecha_adjudicacion.","operationId":"institucion_concentracion_institucion__prefix__concentracion_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string","title":"Prefix"}},{"name":"anio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anio"}},{"name":"top","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Top"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/capturas/top":{"get":{"summary":"Capturas Top","description":"Lista las instituciones+años donde una sola empresa se llevó más del\nX% del monto adjudicado. Detecta capturas institucionales sistemáticas.","operationId":"capturas_top_capturas_top_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"anio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anio"}},{"name":"min_monto_total_m","in":"query","required":false,"schema":{"type":"number","default":500.0,"title":"Min Monto Total M"}},{"name":"min_pct_top1","in":"query","required":false,"schema":{"type":"number","default":40.0,"title":"Min Pct Top1"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/entity/{rnc}/licitaciones":{"get":{"summary":"Entity Licitaciones","description":"Cruza los contratos adjudicados al RNC con los procesos de licitación\npublicados, agrupando por institución (prefijo del código) + año.\n\nDGCP no expone una relación 1:1 oficial Contract↔Process en el bulk\nabierto, pero el código del contrato (ej: MOPC-2021-00536) y el código\ndel proceso (ej: MOPC-CCC-PEPU-2021-XXXX) comparten institución y año,\nlo que permite analizar el patrón de licitación por bucket.\n\nPor cada bucket institución-año devuelve:\n  - contratos adjudicados (count + monto)\n  - procesos publicados por la misma institución en el mismo año\n    (total + por modalidad: Licitación Pública / Excepción / Subasta...)\n  - muestra de procesos por excepción (con URL al expediente público)\n  - señal de patrón: si la mayoría de procesos del bucket son por\n    excepción → mayor riesgo de captura/dirigida","operationId":"entity_licitaciones_entity__rnc__licitaciones_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rnc","in":"path","required":true,"schema":{"type":"string","title":"Rnc"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Xml","description":"Sitemap dinámico para SEO. Incluye páginas SEO server-rendered y secciones SPA.","operationId":"sitemap_xml_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/pricing":{"get":{"summary":"Get Pricing","description":"Catálogo público de planes comerciales. Sin auth.","operationId":"get_pricing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/register":{"post":{"summary":"Register","description":"Self-service signup. Crea api_client con plan elegido.\nDevuelve token JWT listo para usar. Si plan ≠ free, marcamos\n`pending_payment=true` y luego Stripe Checkout activa.","operationId":"register_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/checkout/{plan_id}":{"get":{"summary":"Checkout Redirect","description":"Redirige a Stripe Checkout. Por ahora retorna la URL del Stripe\nPayment Link configurado por env (STRIPE_LINK_<plan>). En producción,\nusar Stripe Checkout Session con metadata.client_id.","operationId":"checkout_redirect_checkout__plan_id__get","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/legal/{doc}":{"get":{"summary":"Legal Doc","description":"Devuelve documento legal en HTML simple.","operationId":"legal_doc_legal__doc__get","parameters":[{"name":"doc","in":"path","required":true,"schema":{"type":"string","title":"Doc"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sources":{"get":{"summary":"List Sources","description":"Catálogo público de fuentes oficiales usadas por Dominicanísimo. Cada\nfuente lleva URL verificable, organismo emisor, licencia y descripción.\nPermite reproducir nuestro pipeline de ingesta y auditar la atribución.","operationId":"list_sources_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/procesos/excepciones":{"get":{"summary":"Listar Procesos Excepciones","description":"Procesos de licitación por EXCEPCIÓN (sin competencia abierta). Patrones\nde captura: Proveedor único, Exclusividad, Urgencia, Emergencia. Incluye\nURL al expediente público en comprasdominicana.gob.do.\n\nQuery params:\n  tipo: filtra tipo_excepcion ('Proveedor único', 'Urgencia', etc.)\n  institucion: filtra por unidad de compra (LIKE)\n  anio: filtra por año (YYYY)\n  limit: 1-200","operationId":"listar_procesos_excepciones_procesos_excepciones_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tipo","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tipo"}},{"name":"institucion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institucion"}},{"name":"anio","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anio"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/impugnar":{"post":{"tags":["Legal Compliance (Habeas Data)"],"summary":"Submit Impugnacion","description":"Public endpoint for citizens to contest their associated mercantile records \nunder the Habeas Data law. No JWT required.","operationId":"submit_impugnacion_impugnar_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_impugnacion_impugnar_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImpugnacionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/resolve-impugnacion/{request_id}":{"post":{"tags":["Legal Compliance (Habeas Data)"],"summary":"Resolve Impugnacion","description":"Internal admin endpoint to process a Habeas Data request.\nExecutes Right-To-Be-Forgotten across all data layers if confirmed.","operationId":"resolve_impugnacion_admin_resolve_impugnacion__request_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_resolve_impugnacion_admin_resolve_impugnacion__request_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AdminLoginRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"AdminLoginRequest"},"Body_login_token_post":{"properties":{"api_key":{"type":"string","title":"Api Key"},"password":{"type":"string","title":"Password"}},"type":"object","required":["api_key","password"],"title":"Body_login_token_post"},"Body_resolve_impugnacion_admin_resolve_impugnacion__request_id__post":{"properties":{"action":{"type":"string","title":"Action","description":"'confirm' or 'reject'"}},"type":"object","required":["action"],"title":"Body_resolve_impugnacion_admin_resolve_impugnacion__request_id__post"},"Body_submit_impugnacion_impugnar_post":{"properties":{"cedula":{"type":"string","title":"Cedula"},"description":{"type":"string","title":"Description"},"document":{"type":"string","contentMediaType":"application/octet-stream","title":"Document"}},"type":"object","required":["cedula","description","document"],"title":"Body_submit_impugnacion_impugnar_post"},"Body_upload_acta_entity__rnc__upload_acta_post":{"properties":{"acta":{"type":"string","contentMediaType":"application/octet-stream","title":"Acta"},"origen":{"type":"string","title":"Origen","default":"otro"},"fecha_acta":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Fecha Acta"}},"type":"object","required":["acta"],"title":"Body_upload_acta_entity__rnc__upload_acta_post"},"BulkKycRequest":{"properties":{"rncs":{"items":{"type":"string"},"type":"array","title":"Rncs"}},"type":"object","required":["rncs"],"title":"BulkKycRequest"},"EntityResponse":{"properties":{"rnc":{"type":"string","title":"Rnc"},"name":{"type":"string","title":"Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"economic_activity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Economic Activity"},"registration_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Date"},"payment_regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Regime"},"local_admin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Local Admin"},"electronic_invoicer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Electronic Invoicer"},"contracts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Contracts","default":[]},"representatives":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Representatives","default":[]},"has_full_ownership_data":{"type":"boolean","title":"Has Full Ownership Data","default":false}},"type":"object","required":["rnc","name"],"title":"EntityResponse"},"GrantCreditsRequest":{"properties":{"client_id":{"type":"string","title":"Client Id"},"amount_dop":{"type":"number","title":"Amount Dop"}},"type":"object","required":["client_id","amount_dop"],"title":"GrantCreditsRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImpugnacionResponse":{"properties":{"request_id":{"type":"string","title":"Request Id"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["request_id","status","message"],"title":"ImpugnacionResponse"},"RegisterRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"nombre_completo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nombre Completo"},"plan":{"type":"string","title":"Plan","default":"free"},"empresa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Empresa"},"telefono":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telefono"}},"type":"object","required":["email","password"],"title":"RegisterRequest"},"UploadActaResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"sha256":{"type":"string","title":"Sha256"},"estimated_processing_seconds":{"type":"integer","title":"Estimated Processing Seconds"}},"type":"object","required":["task_id","sha256","estimated_processing_seconds"],"title":"UploadActaResponse"},"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"},"WebhookCreateRequest":{"properties":{"url":{"type":"string","title":"Url"},"events":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Events"},"rncs_filtro":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Rncs Filtro"}},"type":"object","required":["url"],"title":"WebhookCreateRequest"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"admin_token"}}}}}}