wiki-API-Ref
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 asignarQuotaAlreadyAssignedError: si ya existe un usuario asignado (por más que haya consumido todos los créditos)NotEnoughQuotaError: Si se intenta crear una asignacióncommitedy 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