Saltar al contenido

SOPs

Procedimientos operativos estándar — cada uno con historial de versiones, fases (columnas) y pasos (tarjetas).

GET/api/v1/sops

Lista paginada de SOPs con resumen de su versión activa.

Parámetros de consulta

NombreTipoObligatorioDescripción
limitintegeropcionalNúmero de resultados (predeterminado 100, máximo 500).
cursorISO 8601opcionalCursor de paginación desde nextCursor.
nodeIduuidopcionalFiltrar a SOPs que pertenecen a este nodo de la organización.

Ejemplo de respuesta

Json
{
  "data": [
    {
      "id": "a3bb189e-8bf9-3888-9912-ace4e6543002",
      "sopNumber": "SOP-001",
      "orgNodeId": "550e8400-e29b-41d4-a716-446655440000",
      "category": "Onboarding",
      "reviewPeriodMonths": 12,
      "createdAt": "2025-03-05T09:00:00.000Z",
      "activeVersionId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
      "activeVersionTitle": "New Employee Onboarding v2",
      "activeVersionStatus": "active",
      "activeVersionMajor": 2,
      "activeVersionMinor": 0,
      "activeVersionEffectiveDate": "2025-04-01"
    }
  ],
  "nextCursor": null
}
GET/api/v1/sops/:id

SOP completo con versión activa, fases y pasos.

Parámetros de ruta

NombreTipoObligatorioDescripción
iduuidobligatorioID del SOP.

Ejemplo de respuesta

Json
{
  "data": {
    "id": "a3bb189e-8bf9-3888-9912-ace4e6543002",
    "sopNumber": "SOP-001",
    "orgNodeId": "550e8400-e29b-41d4-a716-446655440000",
    "category": "Onboarding",
    "reviewPeriodMonths": 12,
    "createdAt": "2025-03-05T09:00:00.000Z",
    "activeVersion": {
      "id": "c56a4180-65aa-42ec-a945-5fd21dec0538",
      "versionMajor": 2,
      "versionMinor": 0,
      "status": "active",
      "title": "New Employee Onboarding v2",
      "purpose": "Ensure every new hire has a consistent first-week experience.",
      "scope": "Applies to all full-time employees.",
      "effectiveDate": "2025-04-01",
      "approvedAt": "2025-03-28T14:00:00.000Z",
      "createdAt": "2025-03-20T10:00:00.000Z",
      "phases": [
        {
          "id": "phase-1-id",
          "title": "Day 1",
          "sortOrder": 0,
          "color": "#6366f1",
          "createdAt": "2025-03-20T10:00:00.000Z",
          "steps": [
            {
              "id": "step-1-id",
              "title": "Set up laptop and accounts",
              "description": "IT hands off laptop with standard image. Employee activates SSO.",
              "stepType": "action",
              "assignedRole": "IT",
              "sortOrder": 0,
              "estimatedDuration": "2 hours",
              "createdAt": "2025-03-20T10:00:00.000Z"
            }
          ]
        }
      ]
    }
  }
}

Objeto SOP

Campos de nivel superior

NombreTipoObligatorioDescripción
iduuidopcionalID único del SOP.
sopNumberstringopcionalIdentificador legible por humanos, p. ej. "SOP-001".
orgNodeIduuid | nullopcionalEl nodo del organigrama que es dueño de este SOP.
categorystring | nullopcionalEtiqueta de categoría opcional.
reviewPeriodMonthsintegeropcionalCon qué frecuencia (en meses) se debe revisar este SOP.
createdAtISO 8601opcionalCuándo se creó el SOP.
activeVersionSopVersion | nullopcionalLa versión activa actual (solo en el endpoint de detalle).

Campos de SopVersion

NombreTipoObligatorioDescripción
iduuidopcionalID de la versión.
versionMajorintegeropcionalNúmero de versión mayor.
versionMinorintegeropcionalNúmero de versión menor.
statusstringopcionaldraft | review | approved | active | retired
titlestringopcionalTítulo de esta versión.
purposestring | nullopcionalDeclaración de propósito.
scopestring | nullopcionalDeclaración de alcance.
effectiveDatedate | nullopcionalCuándo entró en vigencia esta versión.
approvedAtISO 8601 | nullopcionalCuándo se aprobó esta versión.
phasesPhase[]opcionalLista ordenada de fases (solo en el endpoint de detalle).

Campos de Fase

NombreTipoObligatorioDescripción
iduuidopcionalID de la fase.
titlestringopcionalTítulo de la fase (etiqueta de columna).
sortOrderintegeropcionalPosición entre fases.
colorstring | nullopcionalColor hexadecimal para esta columna de fase.
stepsStep[]opcionalLista ordenada de pasos en esta fase.

Campos de Paso

NombreTipoObligatorioDescripción
iduuidopcionalID del paso.
titlestringopcionalTítulo del paso.
descriptionstring | nullopcionalDescripción en Markdown.
stepTypestringopcionalaction | decision | approval | subprocess | reference
assignedRolestring | nullopcionalRol responsable de este paso.
sortOrderintegeropcionalPosición dentro de la fase.
estimatedDurationstring | nullopcionalEstimación de duración legible por humanos.

Ejemplos de código

# Todos los SOPs en la organización
curl "https://sopflow.io/api/v1/sops" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

# SOPs para un nodo específico de la organización
curl "https://sopflow.io/api/v1/sops?nodeId=NODE_ID" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

# Detalle completo del SOP (con fases + pasos)
curl "https://sopflow.io/api/v1/sops/SOP_ID" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

Modificar SOPs

Las modificaciones requieren el alcance write. Crear un SOP también crea una versión de borrador inicial; las fases y pasos se encuentran en una versión, así que agrégalos después de la creación.

POST/api/v1/sops

Crear una estructura de SOP más una versión de borrador inicial propiedad de ownerNodeId.

Campos del cuerpo

NombreTipoObligatorioDescripción
sopNumberstringobligatorio1–50 caracteres; único por espacio de trabajo (p. ej. SOP-001).
ownerNodeIduuid | nullobligatorioNodo del organigrama propietario. Pasa null para un SOP de catálogo sin asignación inicial.
titlestringobligatorioTítulo para la versión de borrador inicial.
purposestring | nullopcionalPor qué existe este SOP.
scopestring | nullopcionalQué cubre / qué no cubre.
categorystringopcionalHasta 100 caracteres.
reviewPeriodMonthsintegeropcional1–120, predeterminado 12.

Ejemplo de respuesta

Json
{
  "data": {
    "id": "...",
    "sopNumber": "SOP-005",
    "createdAt": "..."
  }
}
DELETE/api/v1/sops/:id

Descarta un SOP elegible. El contenido publicado o con evidencias tiene restricciones; la eliminación crea un registro recuperable en la papelera. Devuelve 204 al completarse.

Ejemplo de respuesta

Json
HTTP/1.1 204 No Content
POST/api/v1/sops/:id/versions/:versionId/transition

Mover una versión de SOP a través de la máquina de estados: draft → in_review → approved → active → retired (con under_revision disponible desde active). Las transiciones inválidas devuelven 422 invalid_transition.

Campos del cuerpo

NombreTipoObligatorioDescripción
toStatusstringobligatoriodraft | in_review | approved | active | retired | under_revision
commentstringopcionalComentario opcional del revisor, registrado en approval_records.

Ejemplo de respuesta

Json
{
  "data": {
    "id": "...",
    "status": "active",
    "effectiveDate": "2026-05-03"
  }
}

Fases

POST/api/v1/sops/:id/phases

Agregar una fase (columna Kanban) a la versión de borrador actual del SOP.

Campos del cuerpo

NombreTipoObligatorioDescripción
sopVersionIduuidobligatorioVersión a la que pertenece esta fase.
titlestringobligatorio—
colorstring | nullopcionalCódigo hexadecimal para el encabezado de la columna.
sortOrderintegeropcionalPosición entre hermanos; predeterminado último.

Ejemplo de respuesta

Json
{
  "data": { "id": "...", "title": "Plan", "sortOrder": 0, "color": "#dbeafe" }
}
PATCH/api/v1/phases/:id

Actualizar el título, color u orden de clasificación de una fase.

Ejemplo de respuesta

Json
{ "data": { "id": "...", "title": "Renamed" } }
DELETE/api/v1/phases/:id

Eliminar una fase y todos sus pasos.

Ejemplo de respuesta

Json
HTTP/1.1 204 No Content

Pasos

POST/api/v1/phases/:id/steps

Agregar un paso (tarjeta) a una fase.

Campos del cuerpo

NombreTipoObligatorioDescripción
phaseIduuidobligatorioFase a la que pertenece este paso.
titlestringobligatorioTítulo del paso.
descriptionstring | nullopcionalMarkdown permitido.
stepTypestringopcionalaction | decision | approval | subprocess | reference
assignedRolestring | nullopcionalRol responsable de este paso.
estimatedDurationstring | nullopcionalEstimación legible por humanos.
sortOrderintegeropcionalPosición dentro de la fase.

Ejemplo de respuesta

Json
{
  "data": { "id": "...", "title": "Run pre-deploy checks", "stepType": "action" }
}
PATCH/api/v1/steps/:id

Actualizar cualquier campo de paso. Solo se escriben las claves que proporciones.

Ejemplo de respuesta

Json
{ "data": { "id": "...", "title": "Updated step" } }
DELETE/api/v1/steps/:id

Eliminar un paso.

Ejemplo de respuesta

Json
HTTP/1.1 204 No Content

Consultar un procedimiento y su versión

Lista SOP, selecciona el ID y consulta el detalle. Inspecciona activeVersion y contempla que no exista una versión activa antes de presentar instrucciones vigentes. Distingue ID del SOP e ID de versión.

Para autoría, crea el borrador y añade fases y pasos mediante los endpoints documentados; sigue las transiciones permitidas. Prueba con un procedimiento dedicado de ejemplo.