Skip to main content

Python SDK and CLI tool for Activesoft Siga automation

Project description

Activesoft Siga CLI

A Python SDK and CLI tool for automating interactions with the Activesoft Siga API. This tool simplifies retrieval of student data (including enrollment and presence permissions), responsible party data, class lists, and sending messages.

Installation

Install via pip:

pip install activesoft-cli

Or from source:

git clone https://github.com/tsuriu/activesoft-cli.git
cd activesoft-cli
pip install .

CLI Usage

The package includes a command-line interface activesoft-cli.

Configuration

You can provide credentials via flags or environment variables:

  • --username / SIGA_USERNAME
  • --password / SIGA_PASSWORD
  • --instituicao / SIGA_INSTITUICAO

The CLI automatically saves your session (cookies) to a local JSON file: ~/.activesoft_siga_<instituicao>_<username>.json

Subsequent commands will reuse this session, avoiding full re-authentication. If the session expires, the CLI will automatically attempt to re-login.

[!TIP] Multi-User Support: The session is isolated by username and instituicao. This allows running multiple instances for different users on the same machine without session interference.

You can also specify a custom session path when using the SDK:

client = SigaClient(..., session_path="/path/to/session.json")

Commands

Student Management (students)

Lists students or retrieves complete profile details for a specific student, including associated classes (turmas) and presence management/exit permissions.

# List students (defaults to 10)
activesoft-cli students --limit 20

# Fetch complete profile for a specific student ID
# Returns a merged JSON with student data, enrollment (turmas), and presence permissions
activesoft-cli students --id 4907

Class Management (turmas)

Lists available classes/groups.

# List classes (defaults to 10)
activesoft-cli turmas --limit 5 --periodo 14

Responsible Parties (responsaveis)

Lists responsible parties or retrieves specific details.

# List responsible parties (defaults to 21)
activesoft-cli responsaveis --limit 10

# Fetch details for a specific responsible party ID
activesoft-cli responsaveis --id 10188

Messaging (send-message)

Sends a message through the Siga system.

activesoft-cli send-message \
  --student-id 4907 \
  --destinatario-id 13578 \
  --message "Your message here" \
  --title "Aviso"

Avatar/Photo Management (upload-avatar)

Uploads a new photo/avatar for a specific student.

activesoft-cli upload-avatar \
  --student-id 4907 \
  --image-path "./photos/4907.jpg"

Bulk Photo Retrieval (bulk-fotos)

Retrieves photo URLs (S3 links) for multiple students or responsible parties at once.

# Using a comma-separated list for students (default)
activesoft-cli bulk-fotos --ids "104,106,107,111"

# Or using multiple ID flags for responsible parties
activesoft-cli bulk-fotos --id 13578 --id 12354 --tipo responsavel

SDK Usage

You can use the SigaClient directly in your Python applications.

Initialization

import asyncio
import json
from activesoft_cli import SigaClient

async def main():
    # Initialize and login
    client = SigaClient(
        username="your-username", 
        password="your-password", 
        instituicao="YOUR_INSTITUTION"
    )

    async with client: # Closes session automatically
        if await client.login():
            # Get complete student profile
            aluno_detail = await client.get_aluno_detail(4907)
            aluno_info = aluno_detail.get('aluno', {})
            
            # Fetch and merge enrollment/turmas
            aluno_info['turmas'] = await client.get_aluno_turmas(4907)
            
            # Fetch and merge presence permissions
            aluno_info['gestao_presenca'] = aluno_detail.get('gestao_presenca', {})
            
            print(json.dumps(aluno_info, indent=2))

if __name__ == "__main__":
    asyncio.run(main())

Requirements

  • Python 3.8+
  • httpx
  • loguru
  • click

License

This project is licensed under the MIT License.

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

activesoft_cli-0.5.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

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

activesoft_cli-0.5.0-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file activesoft_cli-0.5.0.tar.gz.

File metadata

  • Download URL: activesoft_cli-0.5.0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for activesoft_cli-0.5.0.tar.gz
Algorithm Hash digest
SHA256 f00c50e83030e83dce5177a709266b00ba5bbfb0d997fca1d4053124e53d51f3
MD5 3e4a5183981a056a1e2de309361cf3a0
BLAKE2b-256 aad63dab2e8fb25a1b0a0c8b78740c2e57ebc6d92a49d97821263d1feb9046b8

See more details on using hashes here.

File details

Details for the file activesoft_cli-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: activesoft_cli-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for activesoft_cli-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ebde9219112349741650f8b463fd14d5d8c5f1f0e76a2a77ef7c2f32b8310e47
MD5 6bf6d7c89aff37fbbc834e31e1cec586
BLAKE2b-256 ff3bb0fa75d74e0f7b3bc2d483f30d5c28f859133175a8e52831abc7bae1e8b7

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