Saltar al contenido principal

wiki-API-Ref

Ver en Git


API Ref

APIs

Objeto QUOTA_OWNER_VIEW. Esta vista es para los dueños de las cuotas: administradores de espacios o usuarios personales.

{
"original_quota": 100.0,
"consumed_quota": 12.0,
"divisible": true,
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": "2024-01-01T00:00:00Z",
"credit": "Pack 10 ensayos",
"credit_name": "ENSAYOS",
"assignaments": [
{
"original_quota": 10.0,
"consumed_quota": 0.0,
"commited": true,
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": null,
"user_id": 123
}
]
}

Objeto QUOTA_CONSUMER_VIEW Esta vista es para los usuarios de espacios.

{
"original_quota": 100.0,
"consumed_quota": 12.0,
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": "2024-01-01T00:00:00Z",
"credit": "Pack 10 ensayos",
"credit_name": "ENSAYOS"
}

Quota Management

Cuotas para consumo del usuario

Este endpoint permite ver las cuotas disponibles para el consumo del usuario. Es la consulta que hace cualquier usuario para saber las cuotas que tiene disponibles para usar. En el caso de los usuarios personales son sus cuotas compradas, y en el caso de los usuarios de espacio las que tengan disponible según la configuración del espacio.

GET /credits/quotas

Se puede filtrar por credit_name: GET /credits/quotas ? credit_name=ENSAYOS

Respuesta:

{
"data": {"quotas": [<QUOTA_CONSUMER_VIEW>]}
}

Cuotas del espacio

Este endpoint, sólo disponible para administradores del espacio, permite ver las cuotas disponibles y las asignaciones de cada una. Es la consulta que hacen los administradores del espacio para ver las cuotas compradas y cómo están asignadas.

GET /credits/quotas/admin

Respuesta:

{
"data": {"quotas": [<QUOTA_OWNER_VIEW>]}
}

Asignar cuota

Este endpoint, sólo disponible para administradores del espacio, permite asignar una cuota divisible a algún usuario del espacio

POST /credits/quotas/admin/assignaments
Body: application/json

Schema:

{
"type": "object",
"properties": {
"credit_name": {"type": "string", "minLength": 1},
"amount": {"type": "number", "minimum": 0},
"user_id": {"type": "integer", "minimum": 0},
"commited": {"type": "boolean"}
},
"required": ["credit_name", "amount", "user_id"],
"additionalProperties": false
}

Posibles errores:

  • UnauthorizedUserError: si el usuario no es admin.
  • QuotaNotAvailableError: si no hay cuotas disponibles para asignar
  • QuotaAlreadyAssignedError: si ya existe un usuario asignado (por más que haya consumido todos los créditos)
  • NotEnoughQuotaError: Si se intenta crear una asignación commited y no hay suficiente cuota para reservar los créditos

Desasignar cuota

Este endpoint, sólo disponible para administradores del espacio, permite eliminar una asignación de cuota a un usuario del espacio.

En caso que la asignación sea commited, se devolverán los cŕeditos reservados no utilizados a la cuota.

DELETE /credits/quotas/admin/assignaments
Body: application/json
~~~son

Schema:

{
"type": "object",
"properties": {
"credit_name": {"type": "string", "minLength": 1},
"user_id": {"type": "integer", "minimum": 0}
},
"required": ["credit_name", "user_id"],
"additionalProperties": false
}

Posibles errores:

  • UnauthorizedUserError: si el usuario no es admin.
  • QuotaNotAvailableError: si no hay asignaciones para el usuario solicitado.

Consumptions

Validación

Se verifica si el usuario que realiza la consulta puede consumir cierta cantidad de un determinado credit_name

POST /credits/consumptions/validation
Body: application/json

Schema:

{
"type": "object",
"properties": {
"credit_name": {"type": "string", "minLength": 1},
"amount": {"type": "number", "minimum": 0}
},
"required": ["credit_name", "amount"],
"additionalProperties": false
}

Respuestas:

{"info": "valid consumption", "data": {}}

o

{"info": "valid consumption", "data": {"quota": <QUOTA_CONSUMER_VIEW>}}

Posibles errores:

  • NotEnoughQuotaError: si el usuario no posee cuota suficiente

A grandes rasgos, el resultado de esta consulta se puede validar sólo con ver si respondió con HTTP status 200 o no. Si el código es 200, el consumo es válido, sino, no.

Si embargo, hay 2 respuestas de código 200 posibles.

  • Si el usuario dispone de cuota, en la respuesta se incluye información sobre la cuota.
  • Si el consumo no aplica, es decir que no se contabiliza para este usuario y credit_name, entonces no hay cuota que devolver y la respuesta no incluye información extra.

Consumir

Endpoint para registrar el consumo de cierta cantidad de un determinado credit_name. Se realiza además la misma verificación que en el endpoint de validación.

POST /credits/consumptions
Body: application/json

Schema:

{
"type": "object",
"properties": {
"credit_name": {"type": "string", "minLength": 1},
"amount": {"type": "number", "minimum": 0}
},
"required": ["credit_name", "amount"],
"additionalProperties": false
}

Respuesta:

{"info": "cuota available"}

Posibles errores:

  • NotEnoughQuotaError: si el usuario no posee cuota suficiente