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

Uploaded Python 3

File details

Details for the file timeback_qti-0.3.3b20260718042822.tar.gz.

File metadata

  • Download URL: timeback_qti-0.3.3b20260718042822.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.3.3b20260718042822.tar.gz
Algorithm Hash digest
SHA256 992b9f9ebb8d31ca119304d1655d47c12c19fcabd7580730cd7f2ece6ab73574
MD5 1782a28dc30410a0e1ea6f1ec290ced4
BLAKE2b-256 910ae14f356598d0fbf6d06873ed48f0bca46151080a2a4983b04da9cf4d9f3c

See more details on using hashes here.

File details

Details for the file timeback_qti-0.3.3b20260718042822-py3-none-any.whl.

File metadata

  • Download URL: timeback_qti-0.3.3b20260718042822-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.3.3b20260718042822-py3-none-any.whl
Algorithm Hash digest
SHA256 2d3eefbb0713c234077faffcd94d87e83e08d2c360e8642c768d3279744cd70f
MD5 a5fa0c68c377c60390feca15199d7c7d
BLAKE2b-256 e1d438cbb7581c0dc444a4fa0eb997efbb29a48e46bd0dc343d3ce3718ad2b1c

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