Saltar al contenido principal

[Preview] Actualizar regla del programa

PATCH/admin/configuration/scheduling/programs/{programId}/rules/{ruleId}

Actualiza parcialmente una regla con expectedVersion e idempotencia, conserva semantica America/Bogota y rechaza superposiciones, rangos o capacidades invalidas.

curl --request PATCH \
  --url "${BASE_URL}/admin/configuration/scheduling/programs/c1000000-0000-4000-8000-000000000001/rules/c2000000-0000-4000-8000-000000000001" \
  --header 'Authorization: Bearer ${ACCESS_TOKEN}' \
  --header 'X-Correlation-Id: 10000000-0000-4000-8000-000000000100' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: synthetic-operation-0001' \
  --data '{
    "dailyCapacity": 10,
    "expectedVersion": 1
  }'

Request

Headers y parametros

NombreUbicacionRequeridoDescripcion
programIdpathSiUUID del programa dentro del alcance autenticado.
ruleIdpathSiUUID de la regla dentro del alcance autenticado.
X-Correlation-IdheaderNoUUID generado por el consumidor para trazabilidad; el servidor genera uno si se omite.
Idempotency-KeyheaderSiClave unica por service principal y operacion; reutilizarla con otro payload produce 409.

Payload

DTO cerrado con valores sinteticos y precondicion cuando aplica.

Content-Type: application/json

CampoTipoRequeridoDescripcion
activebooleanNo-
dailyCapacityintegerNo-
endsAtLocalstringNo-
expectedVersionintegerSi-
holidayDatesstring (date)[]No-
holidayPolicystringNoSKIP, INCLUDE, ONLY_EXCEPTIONS
recurrencestringNoWEEKLY
slotDurationMinutesintegerNo-
startsAtLocalstringNo-
validFromstring (date)No-
validTostring (date)No-
weekdaysinteger[]No-

Ejemplo

ejemplo del payload
{
  "dailyCapacity": 10,
  "expectedVersion": 1
}

Responses

200Resultado tipado de la operacion administrativa.

Content-Type: application/json

CampoTipoRequeridoDescripcion
activebooleanSi-
dailyCapacityintegerSi-
endsAtLocalstringSi-
holidayDatesstring (date)[]Si-
holidayPolicystringSiSKIP, INCLUDE, ONLY_EXCEPTIONS
idstring (uuid)Si-
programIdstring (uuid)Si-
recurrencestringSiWEEKLY
slotDurationMinutesintegerSi-
startsAtLocalstringSi-
validFromstring (date)Si-
validTostring (date)Si-
versionintegerSi-
weekdaysinteger[]Si-

Ejemplo

ejemplo de respuesta 200
{
  "active": true,
  "dailyCapacity": 10,
  "endsAtLocal": "12:00:00",
  "holidayDates": [],
  "holidayPolicy": "SKIP",
  "id": "c2000000-0000-4000-8000-000000000001",
  "programId": "c1000000-0000-4000-8000-000000000001",
  "recurrence": "WEEKLY",
  "slotDurationMinutes": 30,
  "startsAtLocal": "08:00:00",
  "validFrom": "2026-08-01",
  "validTo": "2026-12-31",
  "version": 2,
  "weekdays": [
    1,
    2,
    3,
    4,
    5
  ]
}
400Solicitud mal formada o parametro invalido.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 400
{
  "code": "INVALID_REQUEST",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "detail": "Revise los parametros enviados.",
  "status": 400,
  "title": "Solicitud invalida",
  "type": "https://magnosoft.com.co/problems/invalid-request"
}
401Token ausente, invalido, vencido o con audience incorrecta.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 401
{
  "code": "INVALID_ACCESS_TOKEN",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "status": 401,
  "title": "Autenticacion requerida",
  "type": "https://magnosoft.com.co/problems/unauthorized"
}
403Service principal autenticado sin el scope requerido.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 403
{
  "code": "INSUFFICIENT_SCOPE",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "status": 403,
  "title": "Permiso insuficiente",
  "type": "https://magnosoft.com.co/problems/forbidden"
}
404Recurso inexistente o no visible dentro del tenant autenticado.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 404
{
  "code": "RESOURCE_NOT_FOUND",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "status": 404,
  "title": "Recurso no encontrado",
  "type": "https://magnosoft.com.co/problems/not-found"
}
409Conflicto de concurrencia, capacidad o reutilizacion de idempotencia.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 409
{
  "code": "CONCURRENT_MODIFICATION",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "detail": "El recurso cambio; consulte su estado antes de reintentar.",
  "status": 409,
  "title": "Conflicto de estado",
  "type": "https://magnosoft.com.co/problems/conflict"
}
422JSON valido que incumple una regla de validacion del contrato.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 422
{
  "code": "VALIDATION_FAILED",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "errors": [
    {
      "code": "INVALID_DATE",
      "field": "serviceDate",
      "message": "Debe ser una fecha ISO 8601 valida."
    }
  ],
  "status": 422,
  "title": "Validacion fallida",
  "type": "https://magnosoft.com.co/problems/validation"
}
429Limite de solicitudes excedido para el service principal.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 429
{
  "code": "RATE_LIMIT_EXCEEDED",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "status": 429,
  "title": "Demasiadas solicitudes",
  "type": "https://magnosoft.com.co/problems/rate-limit"
}
500Falla interna segura sin detalles de implementacion.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 500
{
  "code": "INTERNAL_ERROR",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "status": 500,
  "title": "Error interno",
  "type": "https://magnosoft.com.co/problems/internal-error"
}