Documentation Index Fetch the complete documentation index at: https://mintlify.com/giangartun/Tis-GOAT-Frontend/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Portfolio API exposes endpoints for reading and managing a user’s portfolio. Public discovery endpoints require no authentication. All other endpoints require a valid JWT issued by POST /api/usuario/login sent as an Authorization: Bearer <token> header.
GET /api/portafolios/publicos
List all portfolios that have been marked as publicly visible. Use this endpoint to power a discovery feed or directory of GOAT Portfolio users. No authentication is required.
Responses
Returns a JSON array. Each element represents one public portfolio card.
Unique identifier for the portfolio.
Public web link for this portfolio (may be null if not configured).
Summary of the portfolio owner. Full display name of the user.
The user’s stated profession or job title.
URL of the user’s profile photo (may be null).
User’s location string (may be null).
Subset of visible skills for the discovery card preview. Show habilidades item fields
Total number of visible projects on this portfolio.
Status Meaning 200Array of public portfolio card objects returned.
Example Request
curl https://api.goatportfolio.com/api/portafolios/publicos \
-H "Accept: application/json"
Example Response
[
{
"id_portafolio" : "01HXYZ987654321" ,
"enlace_pagi_web" : "https://goatportfolio.com/p/maria-gonzalez" ,
"usuario" : {
"nombre" : "María González" ,
"profesion" : "Full-Stack Developer" ,
"foto" : "https://cdn.goatportfolio.com/photos/maria.jpg" ,
"ubicacion" : "La Paz, Bolivia"
},
"habilidades" : [
{ "nombre" : "React" },
{ "nombre" : "Laravel" },
{ "nombre" : "TypeScript" }
],
"cantidad_proyectos" : 5
}
]
GET /api/portafolio/completo
Retrieve the complete portfolio data for the authenticated user, including profile info, skills, work and academic experience, projects, professional networks, and the active template. This is the primary endpoint used to render the portfolio view.
Authentication required — include Authorization: Bearer <token>.
Responses
Personal details of the authenticated user. Maternal surname (may be null).
Registered email address.
Short bio / about-me text (may be null).
Profile photo URL (may be null).
Account creation or profile date (may be null).
Portfolio configuration and active template information. Unique portfolio identifier.
ID of the currently selected template (may be null).
Custom public URL for the portfolio (may be null).
Whether the portfolio is publicly discoverable.
Details of the active template. Template name — one of "Bento", "Sidebar", or "Editorial".
Professional network links (LinkedIn, GitHub, etc.). Show redes_profesionales item fields
Platform name, e.g. "linkedin", "github".
Full URL to the user’s profile on that platform.
Whether this link is shown on the public portfolio.
All skills belonging to the portfolio. Show habilidades item fields
Proficiency percentage, 0–100.
Whether this skill is shown publicly.
Work experience entries. Show experiencias_laborales item fields
Description of responsibilities.
Start date (ISO 8601 date string).
End date, or null if current position.
Whether this entry appears publicly.
Academic / education entries. Show experiencias_academicas item fields
Degree or qualification title.
End date, or null if ongoing.
Whether this entry appears publicly.
Portfolio projects. Show proyectos item fields
Repository or project URL (may be null).
Cover image URL (may be null).
Array of technology tag objects, each with id_tecnologia and nombre.
Whether this project appears publicly.
Status Meaning 200Full portfolio data returned. 401Missing or invalid token — token removed from client storage.
Example Request
curl https://api.goatportfolio.com/api/portafolio/completo \
-H "Accept: application/json" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
Example Response
{
"usuario" : {
"id_usuario" : "01HXYZ123456789" ,
"nombre" : "María" ,
"apellido_paterno" : "González" ,
"apellido_materno" : "López" ,
"email" : "maria@example.com" ,
"biografia" : "Full-stack developer passionate about open source." ,
"foto" : "https://cdn.goatportfolio.com/photos/maria.jpg" ,
"fecha" : null
},
"portafolio" : {
"id_portafolio" : "01HXYZ987654321" ,
"id_plantilla" : "01KQR862E61WHCR4HK8PZVPF91" ,
"enlace_pagi_web" : "https://goatportfolio.com/p/maria-gonzalez" ,
"visible" : true ,
"plantilla" : {
"id_plantilla" : "01KQR862E61WHCR4HK8PZVPF91" ,
"nombre" : "Bento"
}
},
"redes_profesionales" : [
{
"id_redes_prof" : "01HREDES001" ,
"nombre_red" : "github" ,
"url_red" : "https://github.com/mariagonzalez" ,
"visible" : true
}
],
"habilidades" : [
{ "id_habilidad" : "01HHAB001" , "nombre" : "React" , "nivel" : 90 , "tipo" : "tecnica" , "visible" : true }
],
"experiencias_laborales" : [
{
"id_experiencia" : "01HEXP001" ,
"empresa" : "Acme Corp" ,
"cargo" : "Frontend Developer" ,
"descripcion" : "Built and maintained React applications." ,
"fecha_ini" : "2022-01-01" ,
"fecha_fin" : null ,
"visible" : true
}
],
"experiencias_academicas" : [
{
"id_experiencia_academica" : "01HACAD001" ,
"institucion" : "Universidad Mayor de San Andrés" ,
"titulo" : "Ingeniería en Sistemas" ,
"descripcion" : "Computer science and software engineering degree." ,
"fecha_ini" : "2018-02-01" ,
"fecha_fin" : "2022-12-01" ,
"visible" : true
}
],
"proyectos" : [
{
"id_proyecto" : "01HPROY001" ,
"nombre" : "E-Commerce Platform" ,
"descripcion" : "A full-stack online store built with React and Laravel." ,
"url_proyecto" : "https://github.com/mariagonzalez/ecommerce" ,
"imagen_url" : "https://cdn.goatportfolio.com/projects/ecommerce.png" ,
"tecnologias" : [
{ "id_tecnologia" : "01HTEC001" , "nombre" : "React" },
{ "id_tecnologia" : "01HTEC002" , "nombre" : "Laravel" }
],
"visible" : true
}
]
}
PATCH /api/portafolio/actualizar-plantilla
Update the portfolio’s active visual template. Choose from the three available layouts — Bento, Sidebar, or Editorial — by providing the template’s ID from the template catalog .
Authentication required — include Authorization: Bearer <token>.
Request Body
The id_plantilla of the desired template. Obtain valid IDs from GET /api/plantillas/catalogo.
Responses
Confirmation that the template was updated.
Status Meaning 200Template updated successfully. 401Unauthorized — missing or invalid token. 422Validation error — id_plantilla not provided or not found.
Example Request
curl -X PATCH https://api.goatportfolio.com/api/portafolio/actualizar-plantilla \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." \
-d '{ "id_plantilla": "01KQR8685VJ6E9KY278ABW3AZZ" }'
Example Response
{
"message" : "Template updated successfully."
}
GET /api/plantillas/catalogo
Retrieve the full list of available portfolio templates. No authentication is required. The three currently supported templates are Bento , Sidebar , and Editorial .
Responses
Array of available template objects. Show template item fields
Unique identifier for the template. Pass this value to PATCH /api/portafolio/actualizar-plantilla.
Template display name — one of "Bento", "Sidebar", or "Editorial".
Short description of the template’s layout style.
URL of a preview image or live demo for the template.
Status Meaning 200Template catalog returned.
Example Request
curl https://api.goatportfolio.com/api/plantillas/catalogo \
-H "Accept: application/json"
Example Response
{
"data" : [
{
"id_plantilla" : "01KQR862E61WHCR4HK8PZVPF91" ,
"nombre" : "Bento" ,
"descripcion" : "A modern bento-grid layout with featured project cards and skill highlights." ,
"url_vista" : "https://cdn.goatportfolio.com/templates/bento-preview.png"
},
{
"id_plantilla" : "01KQR8685VJ6E9KY278ABW3AZZ" ,
"nombre" : "Sidebar" ,
"descripcion" : "Two-column layout with a sticky profile sidebar and scrollable main content." ,
"url_vista" : "https://cdn.goatportfolio.com/templates/sidebar-preview.png"
},
{
"id_plantilla" : "01KQR869F2CJPHC6446XFVSJAD" ,
"nombre" : "Editorial" ,
"descripcion" : "Magazine-style editorial layout with large typography and a full-width hero." ,
"url_vista" : "https://cdn.goatportfolio.com/templates/editorial-preview.png"
}
]
}