Skip to content

Add Model Target Web API client support #3119

Description

@adamtheturtle

Summary

Add public sync and async clients for the Vuforia Model Target Web API.

The API uses OAuth2 client credentials and an asynchronous dataset-generation workflow: create a standard or advanced Model Target dataset, poll its status, download the generated zip, and delete the dataset. The OpenAPI reference documents the endpoint schemas and error responses.

vws-python-mock already implements this workflow, including authentication and representative success and failure responses, so the client can be tested through real HTTP transports without bespoke test doubles.

Suggested scope

  • Add synchronous and asynchronous Model Target service clients, following the existing VWS / AsyncVWS conventions.
  • Authenticate with OAuth2 client credentials and manage the returned bearer token.
  • Support standard and advanced dataset creation.
  • Support dataset status retrieval and a wait/poll helper.
  • Support dataset zip download and dataset deletion.
  • Add typed request/response structures and status enums where they improve the public interface.
  • Parse the Model Target API error envelope into useful public exceptions, including OAuth2/JWT authentication failures and validation errors.
  • Preserve configurable base URLs and transport injection so the clients work with MockVWS.

Acceptance criteria

  • Public synchronous and asynchronous APIs cover the complete create → poll → download → delete lifecycle.
  • Tests exercise both clients through vws-python-mock for standard and advanced datasets.
  • Tests cover representative authentication, validation, unknown-dataset, processing, and download failure responses.
  • Public API documentation, examples, and a news fragment are included.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions