Ver un módulo
GET https://seerepo.com/api/v1/repos/:repo/world
Devuelve un módulo del mapa: qué hace, sus partes (cada una con su frase de una línea y, si se abre, la ruta para entrar), los módulos con los que se conecta y los servicios de fuera. Empieza en / y sigue las rutas. Nunca devuelve código.
En / dice además cómo corre el producto, leído de su código: un import que nunca se llama no cuenta, y un enlace para una persona no es una llamada. Lo que el repo no dice no se inventa.
Petición
| Parámetro | Dónde | Descripción |
|---|---|---|
repo |
path | El id del repo, o owner/name con la barra escrita %2F. |
path |
query | La ruta del módulo, como /checkout. Por defecto, /. |
curl "https://seerepo.com/api/v1/repos/6ad79fd8e89233277ded17c9/world?path=/checkout" \
-H "Authorization: Bearer $SEEREPO_KEY"
Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
data.repo |
object | El repo: su id y su owner/name. |
data.parent |
string|null | El módulo de arriba; null en /. |
data.cables[] |
object | Los lazos entre sus partes: de dónde, a dónde, el verbo y cuántos. |
data.path |
string | La ruta del módulo. |
data.name |
string | Su nombre. |
data.phrase |
string | Qué hace, en una frase. |
data.crumbs[] |
object | Los módulos de arriba, desde /. |
data.parts[].name |
string | El nombre de una parte. |
data.parts[].type |
string | Qué es: world, screen, action, machine, scheduled, data, people, machines, clock… |
data.parts[].phrase |
string | Qué hace, en una línea. Vacío en un repo gratis, salvo en la parte que más cambia, cuya ficha viene entera. |
data.parts[].path |
string | Solo si se abre: la ruta para entrar. |
data.parts[].file |
string | Solo para una parte que es un archivo: su ruta. |
data.tests.byUrl |
object | Solo en /: las rutas que las pruebas llaman por su dirección, routes y called. Es un piso, y no es cobertura. No viene si no se leyeron rutas en el repo. |
data.tests |
object | Lo que importan los archivos de prueba aquí: files, named (importados directamente), reached (a través de esos) y parts[] con path, name, files, named y reached de cada módulo, los menos primero. En /, también folders: tests, los archivos de prueba frente al código por carpeta (thinnest[], con path, tests y files, los más flojos primero) y los que viven en una carpeta aparte (apart[]). No es cobertura: una prueba que solo llama a una URL no se sigue. No está en un repo gratis. |
data.comesFrom[] / data.goesTo[] |
object | Los módulos con los que se conecta, con el verbo (enters, uses, reads, writes to, calls, triggers: entra a, usa, lee, guarda en, llama a, dispara), cuántos lazos y su ruta. |
data.services[] |
object | Los servicios de fuera (Stripe, Supabase…), en /. |
data.halfMade |
object | Solo en /, y solo cuando más del ceiling % (30) de los archivos del mapa queda en cajas que no diseñó («+N más», lo que hay dentro, una caja por letras): files, under y share. El mapa está a medias: sus nombres son la parte diseñada. Llega con el próximo escaneo de cada repo. |
data.runs |
object | Solo en /: cómo corre el producto. Vacío en una librería, que no corre. |
data.runs.traced |
boolean | True si los servicios de cada proceso se siguieron por lo que de verdad nombra; false en un lenguaje que aún no lo tiene, donde van por archivos enteros. |
data.runs.entries[] |
object | Quién entra: personas, agentes, avisos o tareas programadas, con cuántos y a qué proceso. |
data.runs.processes[] |
object | Qué corre: su id, su tipo (web, app, worker, job, edge), el archivo que lo dice, su nombre y qué hace. |
data.runs.homes[] |
object | Dónde viven, si el repo lo dice: Docker, Vercel, Cloudflare… |
data.runs.deploys[] |
object | Qué los despliega, si el repo lo dice. |
data.runs.services[] |
object | Qué usa: su nombre, cómo se sabe (how), qué procesos lo usan (usedBy), el archivo y la línea, qué hace y solid: false si el código solo lo sugiere. |
data.moduleRuns |
object | Solo dentro de un módulo: quién entra (entries) y qué usa (uses), con la ruta de cada módulo vecino. |
Ejemplo
{
"status": "success",
"data": {
"repo": {
"id": "6ad79fd8e89233277ded17c9",
"fullName": "ana/tienda"
},
"path": "/checkout",
"parent": "/",
"name": "Checkout",
"phrase": "Takes the payment.",
"parts": [
{
"id": "pay",
"name": "Pricing page",
"type": "screen",
"side": "product",
"phrase": "Where the plans are picked.",
"file": "app/pricing/page.tsx",
"webRoute": "/pricing"
},
{
"id": "hook",
"name": "Stripe webhook",
"type": "action",
"side": "product",
"phrase": "Turns the plan on once Stripe confirms.",
"file": "app/api/stripe/route.ts"
}
],
"comesFrom": [
{
"world": "Engine",
"verb": "uses",
"n": 2,
"path": "/engine"
}
],
"goesTo": [],
"services": []
}
}
Autenticación
Una clave de API como Authorization: Bearer sr_…. Ver Autenticación.
Errores
| Código | code |
Cuándo |
|---|---|---|
| 400 | bad_path |
La ruta no empieza por /. |
| 402 | plan_required |
Un módulo dentro de un repo del vistazo gratis: solo su primer nivel. |
| 404 | no_world |
No hay módulo en esa ruta, o el repo no tiene mapa (por ejemplo, SeeRepo no encontró código que pueda leer en él). |
Además de los de todos los endpoints (401, 404, 429), ver Errores.