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.

Overview

The Skills API manages the technical and soft skills displayed on a user’s portfolio. Skills are divided into two types: technical (tecnica) — grouped by category with a numeric proficiency level — and soft (blanda) — always stored at level 100 under the Habilidades Blandas category. All endpoints require a valid JWT issued by POST /api/usuario/login sent as Authorization: Bearer <token>.

GET /api/habilidad

Retrieve all skills associated with the authenticated user’s portfolio. Authentication required — include Authorization: Bearer <token>.

Responses

Returns a JSON array of skill objects.
id_habilidad
string
Unique identifier for the skill. Use this when deleting a skill.
nombre
string
Skill name, e.g. "React", "Liderazgo", "PostgreSQL".
tipo
string
Skill type. One of:
  • 'tecnica' — a hard/technical skill with a numeric proficiency level.
  • 'blanda' — a soft skill, always stored at level 100.
nivel
integer
Proficiency level as an integer from 0 to 100. For soft skills this is always 100.
visible
boolean
Whether this skill is displayed on the user’s public portfolio.
categoria
string
The category grouping for this skill (may be null for older records). See the valid categories note below for all accepted values.
StatusMeaning
200Array of skill objects returned.
401Unauthorized — missing or invalid token.

Example Request

curl https://api.goatportfolio.com/api/habilidad \
  -H "Accept: application/json" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."

Example Response

[
  {
    "id_habilidad": "01HHAB001",
    "nombre": "React",
    "tipo": "tecnica",
    "nivel": 90,
    "visible": true,
    "categoria": "Desarrollo Web Frontend"
  },
  {
    "id_habilidad": "01HHAB002",
    "nombre": "Liderazgo",
    "tipo": "blanda",
    "nivel": 100,
    "visible": true,
    "categoria": "Habilidades Blandas"
  }
]

POST /api/habilidad

Add a new skill to the authenticated user’s portfolio. For soft skills, nivel is automatically set to 100 by convention and categoria should always be 'Habilidades Blandas'. Authentication required — include Authorization: Bearer <token>.

Request Body

nombre
string
required
The skill name. For technical skills, choose from the curated list within the selected categoria. For soft skills, choose from the predefined soft-skill list (e.g. "Liderazgo", "Trabajo en equipo", "Comunicación").
tipo
string
required
Skill type. Must be one of:
  • 'tecnica' — a hard/technical skill.
  • 'blanda' — a soft skill.
nivel
integer
Proficiency level, 0100. For technical skills this is user-defined (e.g. 80 for 80%). For soft skills, always pass 100.
visible
boolean
Whether this skill should be displayed on the public portfolio. Defaults to true if omitted.
categoria
string
The skill category. For technical skills, must be one of the valid technical categories. For soft skills, pass 'Habilidades Blandas'.

Responses

habilidad
object
The newly created skill object with its server-assigned id_habilidad.
StatusMeaning
201Skill created successfully.
401Unauthorized — missing or invalid token.
422Validation error — check required fields and allowed values.

Example Request — Technical Skill

curl -X POST https://api.goatportfolio.com/api/habilidad \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." \
  -d '{
    "nombre": "React",
    "tipo": "tecnica",
    "nivel": 85,
    "visible": true,
    "categoria": "Desarrollo Web Frontend"
  }'

Example Request — Soft Skill

curl -X POST https://api.goatportfolio.com/api/habilidad \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." \
  -d '{
    "nombre": "Liderazgo",
    "tipo": "blanda",
    "nivel": 100,
    "visible": true,
    "categoria": "Habilidades Blandas"
  }'

Example Response

{
  "habilidad": {
    "id_habilidad": "01HHAB003",
    "nombre": "React",
    "tipo": "tecnica",
    "nivel": 85,
    "visible": true,
    "categoria": "Desarrollo Web Frontend"
  }
}
Valid categoria values for technical skillsWhen creating a skill with tipo: 'tecnica', the categoria field must be one of the following:
CategoryExample Skills
Lenguajes de ProgramaciónJava, Python, JavaScript, TypeScript, C, C++, PHP, Go, Swift, Kotlin, SQL, Rust
Desarrollo Web FrontendHTML5, CSS3, React, Vue.js, Angular, Next.js, Tailwind CSS, Bootstrap, SASS
Desarrollo Web BackendNode.js, Laravel, Django, Spring Boot, NestJS, FastAPI, ASP.NET Core, Express.js
Desarrollo MóvilFlutter, React Native, Kotlin, Swift, Android Studio, Ionic
Bases de DatosMySQL, PostgreSQL, MongoDB, Firebase Firestore, SQL Server, Redis, SQLite
Frameworks y LibreríasReact, Vue.js, Angular, Laravel, Django, Spring Boot, TensorFlow, PyTorch
DevOps / InfraestructuraDocker, Kubernetes, GitHub Actions, Jenkins, Terraform, Nginx, Linux Server
Cloud ComputingAWS, Microsoft Azure, Google Cloud Platform, Firebase, Vercel, Netlify
Seguridad InformáticaOWASP, Pentesting, Ethical Hacking, Kali Linux, Autenticación JWT
Inteligencia Artificial / Data SciencePandas, NumPy, Scikit-learn, TensorFlow, Machine Learning, Power BI, Tableau
Testing / QAPostman, Selenium, Cypress, JUnit, PyTest, Testing Automatizado, QA Analyst
Herramientas de DiseñoFigma, Adobe XD, Photoshop, Canva, UI Design, UX Design, Wireframing
For soft skills (tipo: 'blanda'), always set categoria to 'Habilidades Blandas'.

DELETE /api/habilidad/:id

Permanently remove a skill from the authenticated user’s portfolio. Authentication required — include Authorization: Bearer <token>.

Path Parameters

id
string
required
The id_habilidad of the skill to delete. Obtain this from GET /api/habilidad.

Responses

message
string
Confirmation that the skill was deleted.
StatusMeaning
200Skill deleted successfully.
401Unauthorized — missing or invalid token.
404Skill not found or does not belong to the authenticated user.

Example Request

curl -X DELETE https://api.goatportfolio.com/api/habilidad/01HHAB001 \
  -H "Accept: application/json" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."

Example Response

{
  "message": "Skill deleted successfully."
}

Build docs developers (and LLMs) love