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.1b20260718043123.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.1b20260718043123-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

Details for the file timeback_qti-0.4.1b20260718043123.tar.gz.

File metadata

  • Download URL: timeback_qti-0.4.1b20260718043123.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.1b20260718043123.tar.gz
Algorithm Hash digest
SHA256 0860b64f6ece721708322e758285f12ddeb2302a515491ba1ac3bcad5d503132
MD5 48aff7f7204ab4a0e48168057484a746
BLAKE2b-256 561de9559da4568607fd7239bed38919dcac85006a25100bea2348597ab47815

See more details on using hashes here.

File details

Details for the file timeback_qti-0.4.1b20260718043123-py3-none-any.whl.

File metadata

  • Download URL: timeback_qti-0.4.1b20260718043123-py3-none-any.whl
  • Upload date:
  • Size: 31.5 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.1b20260718043123-py3-none-any.whl
Algorithm Hash digest
SHA256 33d49dae3cba967c7261b2b513b1fb5bf3578d3e5c88c9f62518d6ad64c938e3
MD5 95db6378b1248974d91596105c41b4f8
BLAKE2b-256 17cf4a091e4de024149c8d7288d93c291c798b71d192eaf5853bbf8a1c8709b2

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