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

Uploaded Python 3

File details

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

File metadata

  • Download URL: timeback_qti-0.3.2b20260717234752.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.2b20260717234752.tar.gz
Algorithm Hash digest
SHA256 780c1c030462a8633055174a286ae11000515ddd18991ea65d77a2b2ff7b4d80
MD5 65e0bc55a09d88a6b52b2fb2f9f5f750
BLAKE2b-256 219386915c4a5e6a47c34262aa157dc9f74e034fe5dd67bda8e74e0a7f18c7a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: timeback_qti-0.3.2b20260717234752-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.2b20260717234752-py3-none-any.whl
Algorithm Hash digest
SHA256 0781220d7de6a76503ec75e6218459b8ed248813e1d28b0488dee0a4a75a8743
MD5 36be7499b261a4c5a0341ca5593d1c26
BLAKE2b-256 dbfc34b1caec0c4715d7ff51ac2f9a27403991be31ee6927f6b056214ab69e50

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