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

Uploaded Python 3

File details

Details for the file timeback_qti-0.3.2b20260718043019.tar.gz.

File metadata

  • Download URL: timeback_qti-0.3.2b20260718043019.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.2b20260718043019.tar.gz
Algorithm Hash digest
SHA256 070d8a35d4f3fee8749a1bdc0e4190a501ba26c98f6174438a2b0498792d48de
MD5 2d107f0f391f4cecbee8457e6932fd53
BLAKE2b-256 f9faf56392381c84e5a3e0d98ad7fe89e5baf41b149a77be5027d14c5803ea3e

See more details on using hashes here.

File details

Details for the file timeback_qti-0.3.2b20260718043019-py3-none-any.whl.

File metadata

  • Download URL: timeback_qti-0.3.2b20260718043019-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.2b20260718043019-py3-none-any.whl
Algorithm Hash digest
SHA256 05237abd54a872c97a9da91ee58fc5d4b878ac014e86c3ac0ffe9c1d046b5c00
MD5 3484b93f092d7c1f07a7dbe0862c445f
BLAKE2b-256 7278e548fb471ae800d2556371df7c538a75275330eb8de03c2d4dee9a452472

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