Kargatzen...

API Publikoa v1

PMST.si — Kanpoko integrazioetarako REST APIaren dokumentazioa.

Autentifikazioa
La API soporta dos métodos de autenticación:
1. JWT Bearer Token: Authorization: Bearer <token>
2. API Key: X-API-Key: <api_key>
Rate Limiting
200 peticiones por hora por IP. Al superar el límite se devuelve HTTP 429.
Headers de respuesta: X-RateLimit-Limit, X-RateLimit-Remaining.

Aurkibidea

URL oinarria

https://pmst.si/api/v1

Autenticación

POST /auth/login

Autentifikatu erabiltzailea eta lortu JWT tokena + refresh tokena.

Eskaeraren gorputza

EremuaMotaBeharrezkoaDeskribapena
posta elektronikokateaderrigorrezkoaErabiltzailearen posta elektronikoa
pasahitzastringderrigorrezkoaErabiltzailearen pasahitza

Eskaera adibidea

curl -X POST https://pmst.si/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "usuario@empresa.com", "password": "mi_password"}'

Erantzun adibidea (200)

{
    "success": true,
    "data": {
        "token": "eyJhbGciOiJIUzI1NiIs...",
        "refresh": "eyJhbGciOiJIUzI1NiIs...",
        "token_type": "Bearer",
        "expires_in": 3600,
        "user": {
            "id": 42,
            "email": "usuario@empresa.com",
            "nombre": "Juan García",
            "rol": "empresa"
        }
    },
    "timestamp": 1719398400
}

POST /auth/refresh

Berritu JWT tokena refresh tokena erabiliz.

EremuaMotaBeharrezkoaDeskribapena
refresh_tokenstringderrigorrezkoaLoginean lortutako freskatzeko tokena

Eskaera adibidea

curl -X POST https://pmst.si/api/v1/auth/refresh \
  -H "Content-Type: application/json" \
  -d '{"refresh_token": "eyJhbGciOiJIUzI1NiIs..."}'

Erantzun adibidea (200)

{
    "success": true,
    "data": {
        "token": "eyJhbGciOiJIUzI1NiIs...",
        "refresh": "eyJhbGciOiJIUzI1NiIs...",
        "token_type": "Bearer",
        "expires_in": 3600
    },
    "timestamp": 1719398400
}
Nota: El access token expira en 1 hora. El refresh token expira en 7 días. Usa el endpoint POST /auth/refresh antes de que expire el access token.

Enpresak

GET /empresas

Autentifikatutako erabiltzaileari elkartutako enpresak zerrendatu.

Kontsulta-parametroak

ParametroaMotaBeharrezkoaDeskribapena
pageintaukerakoaOrrialdea (lehenetsia: 1)
limitintaukerakoaEmaitzak orrialdeko (lehenetsia: 25, gehienez: 100)

Eskaera adibidea

curl -X GET "https://pmst.si/api/v1/empresas?page=1&limit=10" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Erantzun adibidea (200)

{
    "success": true,
    "data": {
        "empresas": [
            {
                "iId": 8,
                "sName": "EMPRESA EJEMPLO SL",
                "sCIF": "B12345678",
                "sSector": "Servicios",
                "iNumLangileak": 15,
                "dtCreatedAt": "2024-01-15 10:00:00"
            }
        ],
        "pagination": {
            "total": 1,
            "page": 1,
            "limit": 10,
            "pages": 1
        }
    },
    "timestamp": 1719398400
}

GET /enpresak/{id}

Enpresa baten xehetasun osoa lortu.

Bidearen parametroak

ParametroaMotaBeharrezkoaDeskribapena
idintbeharrezkoaEnpresaren ID

Eskaera adibidea

curl -X GET "https://pmst.si/api/v1/empresas/8" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Erantzun adibidea (200)

{
    "success": true,
    "data": {
        "empresa": {
            "iId": 8,
            "sName": "EMPRESA EJEMPLO SL",
            "sCIF": "B12345678",
            "sSector": "Servicios",
            "iNumTrabajadores": 15,
            "dtCreatedAt": "2024-01-15 10:00:00",
            "sAddress": "Calle Mayor 1",
            "sPostalCode": "28001",
            "sCity": "Madrid",
            "sProvince": "Madrid"
        }
    },
    "timestamp": 1719398400
}
Errores comunes: 404 Empresa no encontrada, 403 Acceso denegado.

Trabajadores

GET /langileak?enpresa={id}

Enpresa jakin bateko langileak zerrendatu.

Kontsultako parametroak

ParametroaMotaBeharrezkoaDeskribapena
enpresaintbeharrezkoaEnpresaren IDa
pageintaukerakoaOrria (lehenetsia: 1)
limitintaukerakoaEmaitzak orrialdeko (lehenetsia: 25, gehienez: 100)

Eskaera-adibidea

curl -X GET "https://pmst.si/api/v1/trabajadores?empresa=8&page=1&limit=25" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Erantzun-adibidea (200)

{
    "success": true,
    "data": {
        "trabajadores": [
            {
                "iId": 101,
                "sName": "María",
                "sLastName": "López García",
                "sEmail": "mlopez@empresa.com",
                "sPhone": "684762300",
                "sDepartment": "Recursos Humanos",
                "sPuesto": "Técnica de prevención",
                "bActive": 1,
                "dtCreatedAt": "2024-03-01 09:00:00"
            }
        ],
        "pagination": {
            "total": 15,
            "page": 1,
            "limit": 25,
            "pages": 1
        }
    },
    "timestamp": 1719398400
}

Estatistikak

GET /estatistikak/dashboard?enpresa={id}

Enpresa bateko dashboardaren estatistikak eskuratzea.

ParametroaMotaBeharrezkoaDeskribapena
enpresaintbeharrezkoaEnpresaren ID

Eskaeraren adibidea

curl -X GET "https://pmst.si/api/v1/estadisticas/dashboard?empresa=8" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Erantzunaren adibidea (200)

{
    "success": true,
    "data": {
        "trabajadores": 15,
        "formularios_completados": 42,
        "formularios_pendientes": 8,
        "co2_estimado_toneladas": 12.5,
        "clc_asociadas": 3,
        "fecha_actualizacion": "2025-06-26 12:00:00"
    },
    "timestamp": 1719398400
}

Formularioak

POST /inprimakiak/erantzun

Formulario baten erantzunak bidali.

EremuaMotaBeharrezkoaDeskribapena
iIdInprimakiintbeharrezkoaFormularioaren IDa
erantzunakarraybeharrezkoaiIdPregunta eta sRespuesta dituzten objektuen array

Adibidea Request

curl -X POST "https://pmst.si/api/v1/formularios/responder" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{
    "iIdForm": 5,
    "respuestas": [
        {"iIdPregunta": 1, "sRespuesta": "Coche compartido"},
        {"iIdPregunta": 2, "sRespuesta": "Transporte público"},
        {"iIdPregunta": 3, "sRespuesta": "3-5 días a la semana"}
    ]
}'

Erantzunaren adibidea (200)

{
    "success": true,
    "data": {
        "iIdAnswer": 128,
        "sStatus": "completado",
        "dtDate": "2025-06-26 12:00:00"
    },
    "timestamp": 1719398400
}

Jakinarazpenak

GET /jakinarazpenak

Autentifikatutako erabiltzailearen jakinarazpenak zerrendatu.

ParametroaMotaBeharrezkoaDeskribapena
pageintaukerazkoaOrria (lehenetsia: 1)
limitintaukerazkoaEmaitzak orriko (lehenetsia: 25, gehienez: 100)

Eskaera adibidea

curl -X GET "https://pmst.si/api/v1/notificaciones?limit=10" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Erantzun adibidea (200)

{
    "success": true,
    "data": {
        "notificaciones": [
            {
                "iId": 15,
                "sTitle": "Nuevo formulario asignado",
                "sMessage": "Se ha asignado el formulario de diagnóstico de movilidad.",
                "sType": "info",
                "bRead": 0,
                "dtSent": "2025-06-26 10:30:00"
            }
        ],
        "no_leidas": 3,
        "pagination": {
            "total": 12,
            "page": 1,
            "limit": 10,
            "pages": 2
        }
    },
    "timestamp": 1719398400
}

POST /jakinarazpenak/mark-read

Notifikazioa(k) irakurritzat markatu.

EremuaMotaBeharrezkoaDeskribapena
idinthorietako batMarkatu beharreko notifikazioaren IDa
allboolhorietako battrue bada, marka itzazu guztiak irakurritako gisa

Eskaera adibidea

curl -X POST "https://pmst.si/api/v1/notificaciones/mark-read" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{"all": true}'

Erantzun adibidea (200)

{
    "success": true,
    "data": {
        "marked": 3,
        "message": "3 notifications marked as read"
    },
    "timestamp": 1719398400
}

API gakoak

Kudeatu API gakoak kanpoko sarbide iraunkorrerako JWT gabe.

GET /api-keys

Autentifikatutako erabiltzailearen API gakoak zerrendatu.

POST /api-keys

Sortu API gako berria.

EremuaMotaBeharrezkoaDeskribapena
izenastringbeharrezkoaGakoaren izen deskribatzailea
baimenakstringaukerakoaKoma bidez bereizitako balioak: read, write, admin (lehenetsia: read)
egunak_iraungitzeintaukerakoaIraungipenera arteko egunak (lehenetsia: 365, 0 = iraungitzerik gabe)
DELETE /api-keys/{id}

API key bat indargabetu (desaktibatu).

Adibidea: API Key sortu

curl -X POST "https://pmst.si/api/v1/api-keys" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{"nombre": "Mi Integración", "permisos": "read,write", "dias_expira": 90}'

Erantzunaren adibidea (200)

{
    "success": true,
    "data": {
        "message": "API key generated successfully. Save it now — it won't be shown again.",
        "api_key": {
            "iId": 1,
            "sApiKey": "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4",
            "sName": "Mi Integración",
            "sPermissions": "read,write",
            "dtCreada": "2025-06-26 12:00:00",
            "dtExpires": "2025-09-24 12:00:00"
        }
    },
    "timestamp": 1719398400
}
Importante: La API key completa solo se muestra una vez al generarse. Guárdala de forma segura. Las keys se envían via header X-API-Key.

API Key-ren erabilera

curl -X GET "https://pmst.si/api/v1/empresas" \
  -H "X-API-Key: A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4"

Errore-erantzunak

KodeaEsanahiaDeskribapena
400Eskaera okerraBeharrezko parametroak falta dira edo baliogabeak dira
401Baimendu gabeToken JWT baliogabea/iraungitua edo API key baliogabea
403DebekatutaEskatutako baliabiderako baimenik gabeko erabiltzailea
404Ez da aurkituEz da baliabidea aurkitu
405Metodoa ez da onartzenEndpointeko HTTP metodoa ez da onartzen
429Eskaera gehiegiRate limiting-aren muga gainditu da
500Barne-erroreaZerbitzariaren barne-errorea

Errore-erantzunaren egitura

{
    "success": false,
    "error": "Error message describing what went wrong",
    "timestamp": 1719398400
}

Hasiera azkarra

# 1. Autenticarse
curl -X POST https://pmst.si/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "admin@pmst.si", "password": "tu_password"}'

# 2. Usar el token para acceder a endpoints
TOKEN="eyJhbGciOiJIUzI1NiIs..."

curl -X GET https://pmst.si/api/v1/empresas \
  -H "Authorization: Bearer $TOKEN"

# 3. Consultar estadísticas
curl -X GET "https://pmst.si/api/v1/estadisticas/dashboard?empresa=8" \
  -H "Authorization: Bearer $TOKEN"

# 4. Refrescar token cuando expire
curl -X POST https://pmst.si/api/v1/auth/refresh \
  -H "Content-Type: application/json" \
  -d '{"refresh_token": "eyJhbGciOiJIUzI1NiIs..."}'

Laguntza

Para problemas o dudas con la API, contacta: contacto@pmst.si

ConsultingMovilidad.com laguntzailea
Kaixo, PMST.si-eko laguntzaile birtuala naiz. Mugikortasun planak, DGT araudiak, inprimakiak, txostenak eta plataformaren erabileran lagundu dezaket. Nola lagundu dezaket?