Skip to main content

Timeback QTI client for assessment item and test operations

Project description

timeback-qti

Python client for the Timeback QTI assessment API.

Installation

pip install timeback-qti

Quick Start

from timeback_qti import QtiClient

async def main():
    client = QtiClient(
        env="staging",
        client_id="your-client-id",
        client_secret="your-client-secret",
    )

    # List assessment items
    result = await client.assessment_items.list()

    # Create an item from QTI XML
    item = await client.assessment_items.create_from_xml({
        "format": "xml",
        "xml": "<qti-assessment-item>...</qti-assessment-item>",
    })

    # Validate QTI XML
    validation = await client.validate.validate({
        "schema": "item",
        "xml": "<qti-assessment-item>...</qti-assessment-item>",
    })

    await client.close()

Resources

  • client.assessment_items - Assessment item CRUD, XML/metadata creation, response processing
  • client.assessment_tests - Assessment test CRUD with nested test parts, sections, and items
  • client.stimuli - Stimulus material CRUD
  • client.validate - QTI XML validation (single and batch)
  • client.lesson - Lesson and question feedback
  • client.general - General operations (delete by ID)

Filtering

The top-level assessment-item and assessment-test lists accept the same where clause as the other Timeback clients, compiled to the server-side filter expression:

# Exact match
drafts = await client.assessment_tests.list({"where": {"title": "Unit 5 Final"}})

# Substring/regex match (case-insensitive)
mine = await client.assessment_items.list(
    {"where": {"identifier": {"contains": "^playcademy-test-"}}}
)

# Streams filter server-side too
async for test in client.assessment_tests.stream(where={"title": {"contains": "math"}}):
    print(test["identifier"])

Nested lists (test parts, sections) and stimuli do not support filtering.

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

timeback_qti-0.4.0.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

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

timeback_qti-0.4.0-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

Details for the file timeback_qti-0.4.0.tar.gz.

File metadata

  • Download URL: timeback_qti-0.4.0.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for timeback_qti-0.4.0.tar.gz
Algorithm Hash digest
SHA256 6fbae937b418a210284b87b347b224e905032920d7ec51b6200eea620f2aee7e
MD5 89de146d09f1fb5a39875a6b775d190d
BLAKE2b-256 a39ee9443ec1b28618cbc0b20abe8cd91bbcf1dce97819876fde09e8e499d7f4

See more details on using hashes here.

File details

Details for the file timeback_qti-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: timeback_qti-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 31.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for timeback_qti-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 665b5c22ec9c34b932a9f943898d7690f26ed02f2cd924c897b572c72cf59fef
MD5 4fba9b4c23646409e7b55adc23e99c91
BLAKE2b-256 07c418ff29a2a57cdd558a33216c80899bb303c51eb1f01c3fe86c015608cfcd

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