3.9 KiB
MODIFIED Requirements
Requirement: Task submission and status via the SDK
The system SHALL allow an external integrator to submit a task (goal or
workflow reference plus constraints and an optional explicit Host/Device
target) through the platform SDK's API, and to query that task's current
status by id, backed by the task-scheduler capability. A Device target MUST
include its owning Host, and the status representation SHALL expose any
explicit target separately from the eventual assignment.
Scenario: Submit a task via the API
- WHEN an integrator calls the task-submission endpoint with a valid goal and optional constraints
- THEN the API returns a task id that can be used to poll status, and the
underlying
task-schedulerrecords a newqueuedScheduledTask
Scenario: Submit a task for one Host and Device
- WHEN a
tasks:submitprincipal submits a valid target containing an eligible Host and Device it is permitted to use - THEN the API records that exact target and the scheduler cannot assign the task outside it
Scenario: Device target lacks its Host
- WHEN an integrator submits a Device target without an owning Host
- THEN the API rejects the request before creating a task
Scenario: Query status of a known task
- WHEN an integrator requests status for a task id that exists
- THEN the API returns that task's current status (
queued,assigned,dispatched,done, orfailed) and its explicit target when present
Scenario: Query status of an unknown task
- WHEN an integrator requests status for a task id that does not exist
- THEN the API returns a not-found response rather than an unhandled server error
Requirement: Python SDK client mirrors the REST API
The system SHALL provide a Python client (CloudClient) exposing methods
corresponding to every /v1/... resource, user-authentication,
user-administration, and governance route, including targeted task submission
and read-only Host AI-usage access, so integrators do not need to
hand-construct HTTP requests.
Scenario: Client submits a targeted task and retrieves status
- WHEN a caller uses
CloudClientto submit a task with an explicit target and then fetches status by the returned id - THEN the client produces the same target and lifecycle result as direct REST calls
Scenario: Client administers governance with a scoped bearer
- WHEN a caller configures
CloudClientwithgovernance:adminand invokes a policy operation - THEN the client sends that authentication and returns the corresponding non-secret policy representation
Requirement: Public API operations enforce scopes
The public platform API SHALL require operation-specific scopes for task submission, task reading, pool reading, plugin reading, plugin administration, user administration, governance reading, and governance administration, regardless of whether the principal came from a bearer credential or user session.
Scenario: Submit principal has task scope
- WHEN a bearer or user principal with
tasks:submitcalls the task-submission endpoint - THEN the request is authorized subject to normal task validation and any effective user-submission policy
Scenario: Non-admin principal attempts plugin registration
- WHEN an authenticated principal without
plugins:admincalls plugin registration - THEN the API rejects the request before resolving or loading the plugin target
Scenario: Non-admin principal attempts user administration
- WHEN an authenticated principal without
users:admincalls a user-administration endpoint - THEN the API rejects the request before reading or changing protected user state
Scenario: Principal lacks governance administration scope
- WHEN an authenticated principal without
governance:adminchanges a user or Host policy - THEN the API rejects the request before changing policy or usage state