Skip to main content

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:

  1. Parámetros pasados explícitamente.
  2. Variables de entorno con prefijo ARANDA_.
  3. Archivo .env en el directorio de trabajo.
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aranda_skills-0.1.0.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aranda_skills-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

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

Hashes for aranda_skills-0.1.0.tar.gz
Algorithm Hash digest
SHA256 389ba0831344967f9fd341055b3842f4a40a25e6cfdf34e119f253cc3e0eb58a
MD5 9a785e547ca5a1c6a7a20147c64aedb3
BLAKE2b-256 dfeeaeb9973b004d9a22fb5359036f3f7815be6c894f792e8faf49460c1fff40

See more details on using hashes here.

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

Hashes for aranda_skills-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f54c800b8f2571a115901e82df130aaa1b1706b017fa01ee6216fe663c33533
MD5 575ce61d27de7ba074e64ba6692a5a3a
BLAKE2b-256 bdb92d5a21ca44a74299a5cac1ecb533b16eb7a5d5c50b69517cb03e8b6033c5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page