Cliente Python para consumir las skills de la API de Aranda ASMS
Project description
aranda-skills
Cliente Python para consumir las skills de la API de Aranda ASMS como simples funciones. El desarrollador no maneja URLs, headers ni tokens en cada llamada: configura una vez y llama funciones.
Cada skill del directorio skills/ está expuesta como una función del paquete
aranda_skills.
Instalación
pip install aranda-skills
Desde el repositorio (modo editable, para desarrollo):
pip install -e .
Configuración
La conexión (URL base, token, SSL, timeout) se resuelve en este orden de prioridad:
- Parámetros pasados explícitamente.
- Variables de entorno con prefijo
ARANDA_. - Archivo
.enven el directorio de trabajo. - Valores por defecto.
Opción A — variables de entorno / .env
ARANDA_BASE_URL=https://proyectos.arandasoft.com/asmsapi/api/v9
ARANDA_TOKEN=Bearer eyJ0...
# Opcionales:
ARANDA_VERIFY_SSL=false
ARANDA_TIMEOUT=30
No hace falta nada más; las funciones funcionan directamente:
import aranda_skills as aranda
proyectos = aranda.get_projects()
Opción B — en código
import aranda_skills as aranda
aranda.configure(
base_url="https://proyectos.arandasoft.com/asmsapi/api/v9",
token="Bearer eyJ0...", # el prefijo "Bearer " es opcional
)
proyectos = aranda.get_projects()
Uso
import aranda_skills as aranda
aranda.configure(token="Bearer eyJ0...")
# Catálogos
aranda.get_item_types()
aranda.get_urgency()
aranda.get_impact()
aranda.get_registry_types()
# Navegación de configuración
proyectos = aranda.get_projects()
servicios = aranda.get_services(project_id=1, item_type=1)
categorias = aranda.get_categories_by_service(item_type=1, service_id=4)
modelo = aranda.get_model(item_type=1, category_id=17, service_id=4)
estados = aranda.get_states(model_id=2, item_type=1)
# Personas
companias = aranda.get_companies(project_id=1, item_type=1)
clientes = aranda.get_customers(project_id=1, item_type=1, company_id=3, service_id=4)
grupos = aranda.get_groups_by_state(service_id=4, state_id=110)
resp = aranda.get_responsible(group_id=10, project_id=1)
# Crear un caso
caso = aranda.create_item(
author_id=682,
category_id=17,
company_id=3,
customer_id=494,
description="No hay conexión a internet en piso 3",
item_type=1, # 1=Incidente, 2=Problema, 3=Cambio, 4=Requerimiento
model_id=2,
project_id=1,
service_id=4,
state_id=2,
subject="Sin internet",
urgency_id=5, # opcional
)
Múltiples instancias / multi-tenant
Si necesitas hablar con varias instancias de Aranda a la vez, crea clientes
independientes y pásalos con client=:
from aranda_skills import ArandaClient, get_projects
cli_a = ArandaClient(base_url="https://instancia-a/...", token="token-a")
cli_b = ArandaClient(base_url="https://instancia-b/...", token="token-b")
get_projects(client=cli_a)
get_projects(client=cli_b)
# Como context manager (cierra la conexión al salir):
with ArandaClient(token="...") as cli:
get_projects(client=cli)
Manejo de errores
from aranda_skills import ArandaAPIError, ArandaConfigError
import aranda_skills as aranda
try:
aranda.get_projects()
except ArandaConfigError:
... # falta el token o la configuración
except ArandaAPIError as e:
print(e.status_code, e.body) # la API respondió con error HTTP
Skills disponibles
| Función | Descripción |
|---|---|
get_item_types() |
Tipos de caso disponibles |
get_registry_types() |
Catálogo de tipos de registro |
get_urgency() |
Catálogo de urgencia |
get_impact() |
Catálogo de impacto |
get_projects(console_type=None) |
Proyectos del usuario |
get_services(project_id, item_type, ...) |
Servicios de un proyecto |
get_categories_by_service(item_type, service_id) |
Categorías de un servicio |
get_model(item_type, category_id, service_id) |
Modelo de flujo de trabajo |
get_states(model_id, item_type, state_id=None, item_id=None) |
Estados / transiciones |
get_companies(project_id, item_type) |
Compañías de un proyecto |
get_customers(project_id, item_type, company_id, service_id, ...) |
Clientes finales |
get_groups_by_state(service_id, state_id) |
Grupos de especialistas |
get_responsible(group_id, project_id) |
Especialistas de un grupo |
get_reasons_for_state(state_id) |
Razones para un estado |
get_additional_fields(category_id, item_type, model_id, state_id, ...) |
Campos personalizados |
search_cis(project_id, item_type, service_id, ...) |
Elementos de Configuración (CIs) |
create_item(...) |
Crea un caso |
Todas aceptan el argumento opcional client=ArandaClient(...).
Desarrollo
pip install -e ".[dev]"
pytest -q
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aranda_skills-0.1.0.tar.gz.
File metadata
- Download URL: aranda_skills-0.1.0.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
389ba0831344967f9fd341055b3842f4a40a25e6cfdf34e119f253cc3e0eb58a
|
|
| MD5 |
9a785e547ca5a1c6a7a20147c64aedb3
|
|
| BLAKE2b-256 |
dfeeaeb9973b004d9a22fb5359036f3f7815be6c894f792e8faf49460c1fff40
|
File details
Details for the file aranda_skills-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aranda_skills-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f54c800b8f2571a115901e82df130aaa1b1706b017fa01ee6216fe663c33533
|
|
| MD5 |
575ce61d27de7ba074e64ba6692a5a3a
|
|
| BLAKE2b-256 |
bdb92d5a21ca44a74299a5cac1ecb533b16eb7a5d5c50b69517cb03e8b6033c5
|