Skip to main content

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.

Experience endpoints let users build out the academic and professional history sections of their portfolio. Both academic and work experience support uploading evidence files (certificates, transcripts, letters) that are stored and returned alongside the experience entry. All endpoints require an Authorization: Bearer <token> header.

Academic Experience

Create an academic experience entry

Authorization
string
required
Bearer token — Authorization: Bearer <token>
POST /api/experiencia-academica
Content-Type: application/json
Authorization: Bearer <token>
Request body
id_portafolio
string
required
The ID of the portfolio this entry belongs to.
institucion
string
required
Name of the institution (university, college, bootcamp, etc.).
titulo
string
required
Degree, certificate, or qualification title earned or being pursued.
descripcion
string
Optional free-text description of the program, achievements, or relevant coursework.
fecha_ini
string
required
Start date in YYYY-MM-DD format.
fecha_fin
string | null
End date in YYYY-MM-DD format. Pass null if the program is ongoing.
visible
boolean
Whether this entry is publicly visible on the portfolio. Defaults to true.
Example request body
{
  "id_portafolio": "42",
  "institucion": "Universidad Mayor de San Simón",
  "titulo": "Licenciatura en Ingeniería de Sistemas",
  "descripcion": "Carrera enfocada en desarrollo de software, redes y bases de datos.",
  "fecha_ini": "2019-02-01",
  "fecha_fin": null,
  "visible": true
}
Example curl
curl -X POST https://api.goatportfolio.com/api/experiencia-academica \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "id_portafolio": "42",
    "institucion": "Universidad Mayor de San Simón",
    "titulo": "Licenciatura en Ingeniería de Sistemas",
    "descripcion": "Carrera enfocada en desarrollo de software, redes y bases de datos.",
    "fecha_ini": "2019-02-01",
    "fecha_fin": null,
    "visible": true
  }'
Success response — 200 OK
data
object
The newly created academic experience object.
{
  "data": {
    "id_experiencia_academica": "17",
    "institucion": "Universidad Mayor de San Simón",
    "titulo": "Licenciatura en Ingeniería de Sistemas",
    "descripcion": "Carrera enfocada en desarrollo de software, redes y bases de datos.",
    "fecha_ini": "2019-02-01",
    "fecha_fin": null,
    "visible": true
  }
}
Error response If validation fails the API returns 422 with a message string or an errors object whose values are arrays of error strings.
{
  "message": "El campo fecha_ini es obligatorio."
}

List academic experience for a portfolio

GET /api/experiencia-academica/:id_portafolio
Authorization: Bearer <token>
id_portafolio
string
required
The portfolio ID whose academic experience entries should be returned.
Success response — 200 OK Returns an array of academic experience objects. Each object includes an evidencias array listing all uploaded evidence files attached to that entry.
[*]
object
Academic experience entry.
[
  {
    "id_experiencia_academica": "17",
    "id_portafolio": "42",
    "institucion": "Universidad Mayor de San Simón",
    "titulo": "Licenciatura en Ingeniería de Sistemas",
    "descripcion": "Carrera enfocada en desarrollo de software, redes y bases de datos.",
    "fecha_ini": "2019-02-01",
    "fecha_fin": null,
    "visible": true,
    "created_at": "2024-03-10T14:22:00.000000Z",
    "evidencias": [
      {
        "id_evidencia": "5",
        "tipo": "pdf",
        "url_evidencia": "https://cdn.goatportfolio.com/evidencias/certificado.pdf",
        "nombre_archivo": "certificado.pdf",
        "foto_url": null,
        "tamano_bytes": 204800,
        "fecha_subida": "2024-03-10T14:25:00.000000Z",
        "preview_url": null
      }
    ]
  }
]

Delete an academic experience entry

DELETE /api/experiencia-academica/:id
Authorization: Bearer <token>
id
string
required
The id_experiencia_academica of the entry to delete.
Success response — 200 OK Returns a confirmation message.
{ "message": "Experiencia académica eliminada correctamente." }

Upload an evidence file

POST /api/evidencias/subir
Authorization: Bearer <token>
Content-Type: multipart/form-data
Attach a file (PDF, image, etc.) as evidence for an existing academic experience entry. The returned evidence object is appended to the evidencias array of the parent entry.
archivo
file
required
The file to upload. Accepted formats include PDF and common image types.
id_academica
string
required
The id_experiencia_academica of the entry this evidence belongs to.
Example curl
curl -X POST https://api.goatportfolio.com/api/evidencias/subir \
  -H "Authorization: Bearer <token>" \
  -F "archivo=@/path/to/certificado.pdf" \
  -F "id_academica=17"
Success response — 200 OK Returns the newly created evidence object.
id_evidencia
string
Unique evidence ID.
tipo
string
File type (e.g. "pdf", "image").
url_evidencia
string
Public URL to access the uploaded file.
nombre_archivo
string
Original file name.
foto_url
string | null
Thumbnail URL for image files, null otherwise.
tamano_bytes
number
File size in bytes.
fecha_subida
string
ISO 8601 upload timestamp.
preview_url
string | null
Preview URL if available, otherwise null.
{
  "id_evidencia": "5",
  "tipo": "pdf",
  "url_evidencia": "https://cdn.goatportfolio.com/evidencias/certificado.pdf",
  "nombre_archivo": "certificado.pdf",
  "foto_url": null,
  "tamano_bytes": 204800,
  "fecha_subida": "2024-03-10T14:25:00.000000Z",
  "preview_url": null
}
The client uploads evidence files one at a time. If the experience entry was created successfully but an evidence upload fails, the entry itself is preserved — only the failed file is missing. Re-upload the file using the same id_academica.

Work Experience

Create a work experience entry

POST /api/experiencia-laboral
Content-Type: application/json
Authorization: Bearer <token>
Request body
id_portafolio
string
required
The ID of the portfolio this entry belongs to.
empresa
string
required
Company or organization name.
cargo
string
required
Job title or role held.
descripcion
string
Optional description of responsibilities, achievements, or technologies used.
fecha_ini
string
required
Start date in YYYY-MM-DD format.
fecha_fin
string | null
End date in YYYY-MM-DD format. Pass null if the position is current.
visible
boolean
Whether this entry is publicly visible on the portfolio. Defaults to true.
Example request body
{
  "id_portafolio": "42",
  "empresa": "Empresa ABC S.R.L.",
  "cargo": "Frontend Developer",
  "descripcion": "Desarrollo de interfaces con React y TypeScript. Integración con APIs REST.",
  "fecha_ini": "2022-07-01",
  "fecha_fin": null,
  "visible": true
}
Example curl
curl -X POST https://api.goatportfolio.com/api/experiencia-laboral \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "id_portafolio": "42",
    "empresa": "Empresa ABC S.R.L.",
    "cargo": "Frontend Developer",
    "descripcion": "Desarrollo de interfaces con React y TypeScript. Integración con APIs REST.",
    "fecha_ini": "2022-07-01",
    "fecha_fin": null,
    "visible": true
  }'
Success response — 200 OK Returns the newly created work experience object.
id_experiencia
string
Unique identifier for the created entry.
id_portafolio
string
Parent portfolio ID.
empresa
string
Company name.
cargo
string
Job title or role.
descripcion
string
Description text.
fecha_ini
string
Start date.
fecha_fin
string | null
End date or null if current.
visible
boolean
Visibility flag.
{
  "id_experiencia": "9",
  "id_portafolio": "42",
  "empresa": "Empresa ABC S.R.L.",
  "cargo": "Frontend Developer",
  "descripcion": "Desarrollo de interfaces con React y TypeScript. Integración con APIs REST.",
  "fecha_ini": "2022-07-01",
  "fecha_fin": null,
  "visible": true
}

List work experience for a portfolio

GET /api/experiencia-laboral/:id_portafolio
Authorization: Bearer <token>
id_portafolio
string
required
The portfolio ID whose work experience entries should be returned.
Success response — 200 OK Returns an array of work experience objects. Each object includes an evidencias array of uploaded evidence files.
[*]
object
Work experience entry.
[
  {
    "id_experiencia": "9",
    "id_portafolio": "42",
    "empresa": "Empresa ABC S.R.L.",
    "cargo": "Frontend Developer",
    "descripcion": "Desarrollo de interfaces con React y TypeScript. Integración con APIs REST.",
    "fecha_ini": "2022-07-01",
    "fecha_fin": null,
    "visible": true,
    "created_at": "2024-06-01T10:00:00.000000Z",
    "evidencias": []
  }
]

Delete a work experience entry

DELETE /api/experiencia-laboral/:id
Authorization: Bearer <token>
id
string
required
The id_experiencia of the entry to delete.
Success response — 200 OK
{ "message": "Experiencia laboral eliminada correctamente." }

Build docs developers (and LLMs) love