Leer proyecto

Devuelve un proyecto con sus asignaciones en modo lectura. Opcionalmente puede incluir la matriz mensual de horas asignadas por recurso.

GET /api/v1/projects/:id

Path parameters

Nombre Tipo Requerido Descripción
id integer ID del proyecto en Kordia.

Query parameters

Nombre Tipo Requerido Descripción
include string No Usa monthly_hours para incluir la matriz mensual de horas asignadas.
curl "https://app.example.com/api/v1/projects/10?include=monthly_hours" \
  -H "Authorization: Bearer $KORDIA_API_KEY" \
  -H "Accept: application/json"
const response = await fetch(
  "https://app.example.com/api/v1/projects/10?include=monthly_hours",
  { headers: { Authorization: `Bearer ${process.env.KORDIA_API_KEY}` } }
)

const project = (await response.json()).data
import os
import requests

response = requests.get(
    "https://app.example.com/api/v1/projects/10?include=monthly_hours",
    headers={"Authorization": f"Bearer {os.environ['KORDIA_API_KEY']}"},
)

project = response.json()["data"]
Req.get!(
  "https://app.example.com/api/v1/projects/10?include=monthly_hours",
  headers: [authorization: "Bearer #{System.fetch_env!("KORDIA_API_KEY")}"]
).body["data"]

Respuesta

{
  "data": {
    "id": 10,
    "external_id": "third-party-project-123",
    "title": "Proyecto Atlas",
    "start_date": "2026-06-01",
    "end_date": "2026-09-30",
    "budgeted_hours": 320,
    "budgeted_cost": "16000.00",
    "status": "active",
    "tags": [],
    "assignments": [
      {
        "id": 42,
        "project_id": 10,
        "project_title": "Proyecto Atlas",
        "resource_id": 7,
        "resource_name": "Ana García",
        "start_date": "2026-06-01",
        "end_date": "2026-06-30",
        "daily_hours": 4.0,
        "cost_per_hour": "50.00",
        "cost_source": "contract_default"
      }
    ],
    "monthly_hours": {
      "months": ["2026-06", "2026-07", "2026-08", "2026-09"],
      "resources": [
        {
          "resource_id": 7,
          "resource_name": "Ana García",
          "months": {
            "2026-06": 78.9,
            "2026-07": 80,
            "2026-08": 0,
            "2026-09": 0
          },
          "total_hours": 158.9
        }
      ],
      "totals": {
        "2026-06": 78.9,
        "2026-07": 80,
        "2026-08": 0,
        "2026-09": 0
      },
      "grand_total": 158.9
    }
  }
}

Notas sobre asignaciones

Las asignaciones se devuelven para sincronización externa, reporting o lectura operativa. No se pueden modificar por API.

Notas sobre horas mensuales

monthly_hours usa el mismo cálculo que la pantalla de asignaciones de Kordia: divide cada asignación por mes y aplica el convenio anual del contrato del recurso. Si no se pide include=monthly_hours, la respuesta no incluye esta matriz.