API del perfil

Consulta el perfil público, habilidades, experiencia, educación, contacto, casos de estudio y resultados como recursos REST separados.

Endpoints públicos de solo lectura. No requieren autenticación. GET devuelve JSON, HEAD devuelve las mismas cabeceras sin cuerpo y OPTIONS permite la verificación previa de CORS.

Cabeceras de solicitud

Accept-Languagestring · Opcional
Opcional. Elige en o es. Se admiten variantes regionales y pesos de preferencia, por ejemplo es-PE, en;q=0.8. Se usa en si ninguna preferencia admitida coincide.
If-None-Matchstring · Opcional
Opcional. Envía un ETag anterior para recibir 304 si el recurso no cambió.

GET/api/v1/profile

Obtén el nombre, el título profesional y el resumen.

Parámetros

Sin parámetros de ruta ni de consulta.

Solicitud

curl "https://gedy.dev/api/v1/profile" \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

{
  "name": "Gedy Palomino",
  "headline": "Desarrollador de software Senior | Cloud e IA",
  "summary": "Desarrollador de software senior con más de 7 años construyendo y operando sistemas backend, cloud y orientados a eventos. Trabajo en diseño de APIs, automatización, infraestructura y servicios escalables, con experiencia sólida en Linux, bases de datos, autenticación, criptografía y seguridad. Actualmente uso IA y agentes LLM para acelerar flujos de desarrollo, automatizar tareas complejas e integrar herramientas. Aprendo rápido, disfruto construir, y siempre estoy explorando nuevas formas de resolver problemas con software."
}

GET/api/v1/skills

Lista habilidades técnicas agrupadas por especialidad.

Parámetros

qConsulta · string · Opcional
Busca nombres de habilidades y títulos de grupos; devuelve los grupos completos que coinciden. Cadena opcional de 1 a 100 caracteres tras eliminar espacios en los extremos. Coincidencia parcial sin distinguir mayúsculas. Omítela para obtener todos los registros. Los parámetros vacíos, repetidos o desconocidos devuelven 400.

Solicitud

curl "https://gedy.dev/api/v1/skills?q=cloud" \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

[
  {
    "title": "Backend y Cloud",
    "summary": "Servicios tipados, APIs, sistemas distribuidos e infraestructura reproducible.",
    "skills": [
      "TypeScript/JavaScript",
      "Python",
      "Lua",
      "Go",
      "SQL",
      "Diseño de APIs",
      "Microservicios",
      "Arquitectura orientada a eventos",
      "Arquitectura serverless",
      "Administración de sistemas Linux",
      "Docker y CI/CD",
      "Infraestructura como código"
    ]
  }
]

GET/api/v1/experience

Lista puestos, empresas, períodos y logros.

Parámetros

companyConsulta · string · Opcional
Filtra por nombre de empresa. Cadena opcional de 1 a 100 caracteres tras eliminar espacios en los extremos. Coincidencia parcial sin distinguir mayúsculas. Omítela para obtener todos los registros. Los parámetros vacíos, repetidos o desconocidos devuelven 400.

Solicitud

curl "https://gedy.dev/api/v1/experience?company=Encora%20Inc." \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

[
  {
    "id": "encora",
    "role": "Ingeniero de Software",
    "company": "Encora Inc.",
    "companyUrl": "https://www.encora.com/",
    "context": "Consultoría: comercio electrónico empresarial",
    "period": "Jul 2023 – Actualidad",
    "highlights": [
      "Responsable de los microservicios de productos y usuarios para Alicorp, la mayor empresa de bienes de consumo del Perú, dando soporte a 2 tenants de backend, 4 aplicaciones cliente, 35 distribuidoras, ~3K productos, ~150K usuarios.",
      "Implementé flujos de autenticación de usuarios, búsqueda de productos, navegación, precios y promociones para ~3K productos y ~1,250 promociones activas, incluyendo combinaciones en promociones de precio mínimo/máximo, combos y métodos de pago.",
      "Implementé procedimientos almacenados y migraciones; optimicé consultas críticas sobre grandes conjuntos de datos relacionales, mejorando el tiempo promedio de ejecución en ~50%.",
      "Optimicé APIs y flujos críticos, reduciendo la latencia en horas pico de hasta 6s a menos de 1s, y bajando el uso de CPU/RAM de base de datos de ~85% a ~30% mediante índices, uso de caché en Redis y Node.js Worker Threads.",
      "Mejoré la confiabilidad en producción con telemetría en New Relic y logs estructurados, reduciendo incidentes y rollbacks en repositorios bajo mi responsabilidad.",
      "Conduje entrevistas técnicas a candidatos para puestos de desarrollo senior, liderando la evaluación técnica y entregando recomendaciones de contratación a stakeholders."
    ]
  }
]

GET/api/v1/experience/{id}

Obtén un registro por su ID.

Parámetros

idRuta · string · Obligatorio
Obligatorio. Usa un id devuelto por el endpoint de colección. Distingue mayúsculas y minúsculas.

Solicitud

curl "https://gedy.dev/api/v1/experience/encora" \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

{
  "id": "encora",
  "role": "Ingeniero de Software",
  "company": "Encora Inc.",
  "companyUrl": "https://www.encora.com/",
  "context": "Consultoría: comercio electrónico empresarial",
  "period": "Jul 2023 – Actualidad",
  "highlights": [
    "Responsable de los microservicios de productos y usuarios para Alicorp, la mayor empresa de bienes de consumo del Perú, dando soporte a 2 tenants de backend, 4 aplicaciones cliente, 35 distribuidoras, ~3K productos, ~150K usuarios.",
    "Implementé flujos de autenticación de usuarios, búsqueda de productos, navegación, precios y promociones para ~3K productos y ~1,250 promociones activas, incluyendo combinaciones en promociones de precio mínimo/máximo, combos y métodos de pago.",
    "Implementé procedimientos almacenados y migraciones; optimicé consultas críticas sobre grandes conjuntos de datos relacionales, mejorando el tiempo promedio de ejecución en ~50%.",
    "Optimicé APIs y flujos críticos, reduciendo la latencia en horas pico de hasta 6s a menos de 1s, y bajando el uso de CPU/RAM de base de datos de ~85% a ~30% mediante índices, uso de caché en Redis y Node.js Worker Threads.",
    "Mejoré la confiabilidad en producción con telemetría en New Relic y logs estructurados, reduciendo incidentes y rollbacks en repositorios bajo mi responsabilidad.",
    "Conduje entrevistas técnicas a candidatos para puestos de desarrollo senior, liderando la evaluación técnica y entregando recomendaciones de contratación a stakeholders."
  ]
}

GET/api/v1/education

Lista títulos académicos e instituciones.

Parámetros

Sin parámetros de ruta ni de consulta.

Solicitud

curl "https://gedy.dev/api/v1/education" \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

[
  {
    "degree": "Ingeniería de Sistemas",
    "credential": "Bachiller",
    "institution": "Universidad Nacional de San Cristóbal de Huamanga",
    "institutionUrl": ""
  }
]

GET/api/v1/contact

Obtén datos públicos de contacto y enlaces.

Parámetros

Sin parámetros de ruta ni de consulta.

Solicitud

curl "https://gedy.dev/api/v1/contact" \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

{
  "contacts": [
    {
      "kind": "email",
      "label": "email",
      "text": "gedy.palomino@gmail.com",
      "url": "mailto:gedy.palomino@gmail.com"
    }
  ],
  "links": [
    {
      "kind": "linkedin",
      "text": "linkedin.com/in/gedy-palomino",
      "url": "https://www.linkedin.com/in/gedy-palomino/"
    },
    {
      "kind": "github",
      "text": "github.com/gedzeppelin",
      "url": "https://github.com/gedzeppelin/"
    }
  ]
}

GET/api/v1/case-studies

Lista casos de estudio publicados y sus resultados.

Parámetros

organizationConsulta · string · Opcional
Filtra por nombre de organización. Cadena opcional de 1 a 100 caracteres tras eliminar espacios en los extremos. Coincidencia parcial sin distinguir mayúsculas. Omítela para obtener todos los registros. Los parámetros vacíos, repetidos o desconocidos devuelven 400.

Solicitud

curl "https://gedy.dev/api/v1/case-studies?organization=Proyecto%20open%20source" \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

[
  {
    "id": "dossier-resume-as-code",
    "title": "Dossier: CV como código",
    "mobileTitle": "Dossier",
    "summary": "Un paquete de Python tipado que valida el CV y genera Markdown o PDF.",
    "organization": "Proyecto open source",
    "context": "Herramientas para CV",
    "problem": "El mismo CV genera Markdown y PDF, así que ambos formatos deben seguir el mismo schema.",
    "intervention": "Construí un paquete de Python y una CLI que validan el CV, exportan JSON Schema y generan Markdown o LuaLaTeX/PDF.",
    "result": "Ambos renderizadores usan los modelos validados y omiten las secciones deshabilitadas.",
    "resultItems": [
      "Pydantic rechaza campos desconocidos antes de renderizar.",
      "La CLI exporta JSON Schema desde los modelos de runtime.",
      "Markdown y LuaLaTeX/PDF leen el mismo modelo validado."
    ]
  }
]

GET/api/v1/case-studies/{id}

Obtén un registro por su ID.

Parámetros

idRuta · string · Obligatorio
Obligatorio. Usa un id devuelto por el endpoint de colección. Distingue mayúsculas y minúsculas.

Solicitud

curl "https://gedy.dev/api/v1/case-studies/dossier-resume-as-code" \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

{
  "id": "dossier-resume-as-code",
  "title": "Dossier: CV como código",
  "mobileTitle": "Dossier",
  "summary": "Un paquete de Python tipado que valida el CV y genera Markdown o PDF.",
  "organization": "Proyecto open source",
  "context": "Herramientas para CV",
  "problem": "El mismo CV genera Markdown y PDF, así que ambos formatos deben seguir el mismo schema.",
  "intervention": "Construí un paquete de Python y una CLI que validan el CV, exportan JSON Schema y generan Markdown o LuaLaTeX/PDF.",
  "result": "Ambos renderizadores usan los modelos validados y omiten las secciones deshabilitadas.",
  "resultItems": [
    "Pydantic rechaza campos desconocidos antes de renderizar.",
    "La CLI exporta JSON Schema desde los modelos de runtime.",
    "Markdown y LuaLaTeX/PDF leen el mismo modelo validado."
  ]
}

GET/api/v1/metrics

Lista métricas de resultados publicadas.

Parámetros

Sin parámetros de ruta ni de consulta.

Solicitud

curl "https://gedy.dev/api/v1/metrics" \
  -H "Accept: application/json" \
  -H "Accept-Language: es"

Respuesta 200 · application/json

[
  {
    "id": "years",
    "value": "7+",
    "label": "Años creando software en producción",
    "summary": "Trabajo en backend, cloud, aplicaciones móviles e IA."
  },
  {
    "id": "open-source",
    "value": "OSS",
    "label": "Proyectos open source",
    "summary": "Algunas herramientas que construyo están en GitHub."
  },
  {
    "id": "ai-automation",
    "value": "15+",
    "label": "Automatizaciones y agentes de IA",
    "summary": "Más de 15 automatizaciones y flujos con agentes de código."
  }
]