System guidance
This page goes into more detail about technical concepts and other aspects of the system including material that may not be fully explained in the OpenAPI spec.
API resources
STARS is using REST APIs as its architectural style. The STARS API resource model aligns with the draft VET Information Standard (VET IS) to organise VET activity data into logical groupings that reflect how training organisations manage students and training. The model is designed as a flexible and modernised way to report Vocational Educational and Training (VET) data, replacing the current AVETMISS submission process based on NAT files.
Resources will utilise unique identifiers (see Immutable keys), managed by SMS providers, to allow updates in real time.
This model supports
Incremental reporting and partial updates
Early detection of data issues via provisional validation
Reduced duplication (e.g. personal information sent only when changed)
Stronger relational integrity between related records.
Resource operations
STARS uses standard HTTP methods to expose resources via API endpoints. For example, GET and POST operations will retrieve and create resources, respectively.
Uploading resources
Uploaded resources are held in STARS in a transaction batch until validated or submitted. At this stage, only the structure of the data is checked (format, identifiers, required fields). You can continue to add or replace records across resources (students, enrolments, offerings, etc.) in any order. Records are not treated as formally reported until final submission.
Top level resources
Top level resources are named after VET reporting concepts like student, program enrolment or delivery location. The naming logic reflects this. Top level resources may reference one another and can have child objects. The table below describes Stage 1 top level API resources.
Resource
Purpose
Student
Identifies a learner and their personal details (name, date of birth, gender, addresses, Indigenous status, disability status, language spoken)
DeliveryLocation
Physical location where training occurs. Holds its own address fields (street, suburb, postcode, state, country)
Program
A VET course, including occupational identifier, provider-defined nominal hours and vocational training indicator
Subject
A VET subject, including provider-defined nominal hours and vocational training indicator
ProgramOffering
Links a program to a program enrolment
SubjectOffering
Links a subject to a subject enrolment
ProgramEnrolment
Records enrolment in a program (qualification, skill set, accredited course). Includes status, start/end dates, and completion information
SubjectEnrolment
Records enrolment in a subject (unit/module). Captures delivery mode, hours, outcomes, and completion
Differences from AVETMISS
Resources map to logical groupings instead of NAT files
Addresses are structured as objects (permanent, term, postal) rather than single flat fields
Supports progressive submission - no need for complete annual file compilation
Data uploads must include all child objects to date
When uploading a top‑level resource to STARS clients must always provide the complete set of associated child objects up to the present date.
STARS uses a full replacement (delete‑and‑insert) processing model for child objects. This means that any child objects not included in the upload payload will be treated as deleted, even if previously submitted.
For example, if the following was reported in 202501,
then while updating the conclusion in 202504, the complete set of all lifecycle states up to Dec 2025 must be uploaded
Request compression
Request compression enforcement is planned for a future release.
As at go-live, the following request size limits apply
· Maximum compressed request size: 1 MiB
· Maximum decompressed request size: 10 MiB
Requests that exceed the 10 MiB decompressed limit will be rejected with HTTP 413 (Payload Too Large) and the business rule error BRTS90400.
The compressed size limit is enforced as a protocol-level restriction and won’t return a Problem Details response.
Clients should ensure that the size of VET IS resource collections submitted in a single request remains configurable within their systems.
These limits reflect the current intended operating parameters and may be adjusted following further performance testing and operational review.
Reference data and system rules
STARS uses reference and classification data from external sources, including other NCVER systems, to deal with data. System rules are also explained further on this page.
No_value enumerations
Some VET IS reference lists include a No_value enum value. This value exists primarily to support client-side code generation, particularly where generated clients require a default value for non-nullable fields. No_value should not be treated as a reportable business value. Where a child object is optional, vendors should omit the child object when there is no applicable business value. Do not submit No_value to indicate “not applicable”, “unknown”, “not collected”, or “no data”.
From a STARS processing perspective, No_value has the same logical outcome as a null or no value being provided. If a child object is submitted, the required fields within that object must contain valid business values. Submitting No_value in place of a required business value may result in structural validation errors.
For example, if a training organisation has a third-party service provider involved in assessment or training for an enrolment, the thirdPartyServiceProviders child object should be submitted with a valid participantInvolvementType:
If there is no third-party service provider to report, do not submit:
Instead, omit the thirdPartyServiceProviders child object entirely.
Minimal unit record
The minimal unit record (MUR) should be used as the first step in developing a client‑compatible integration with STARS. The MUR represents the “golden payloads” that are guaranteed to pass blocking validation, allowing SMS suppliers to focus on getting the core submission workflow working end‑to‑end before introducing more complex data scenarios.
This approach enables early verification that:
transaction batches can be created and managed correctly,
data can be uploaded and processed by STARS,
validation services are functioning as expected, and
successful submission can be completed and confirmed.
Immutable keys
An immutable key is a UUID (universally unique identifier) that is system-generated and functions as a permanent identifier for a resource. Once created, it never changes, regardless of updates, transfers, or data resubmissions.
Immutable keys for STARS resources are to be created, stored, and managed by SMS suppliers.
All immutable keys must conform to the UUID v4 standard. For example: "studentUID": "550e8400-e29b-41d4-a716-446655440000"
SMS suppliers must:
Generate UUIDs for each resource when first created locally.
Persist these identifiers internally so that they remain stable across:
Resubmissions
Data corrections
Historical loads
Transfers between reporting periods
Send these UUIDs in all API payloads (POST, GET, DELETE) when referencing that entity.
Prevent reuse - if a record is deleted locally, its UUID must never be re-assigned.
Maintain mappings between business keys (e.g., USI, RTO Student ID) and immutable keys.
Change tracking identifiers
A change tracking identifier is a client‑supplied opaque version token. A change tracking identifier is optional, and it represents the client’s notion of a specific version of a resource at the time it was uploaded to STARS.
It appears on all top‑level resources (for example: Student, DeliveryLocation, SubjectEnrolment, etc) and has the following characteristics:
Client-generated
The value is created and controlled by the calling system. The format and uniqueness are client defined.Opaque to STARS
STARS does not interpret or modify the value.Echoed by the API
The same value is returned in:Upload responses
Validation results
Reconciliation endpoints
The change tracking identifier allows calling systems to deterministically match their local version of a resource with the version held by STARS, without STARS needing to understand the internal versioning logic of the client system.
How should calling systems use change tracking identifier?
Assign a value when uploading or updating data
When creating or updating a resource, include a change tracking identifier that reflects the version of the record in your system.
Example (Delivery Location upload):
Use it to confirm which version STARS has processed.
After upload, STARS returns the same identifier in its response:
This confirms that STARS has processed exactly the client’s version identified by the "changeTrackingIdentifier": "7fffght3-qwggdfgd"
Detect out‑of‑date data using reconciliation
Reconciliation endpoints return the change tracking identifier stored with previously submitted data.
This is the primary mechanism for determining whether STARS holds the current version of a resource.
Example reconciliation response (simplified):
The calling system can compare "changeTrackingIdentifier" value to its local version:
If local version is "3b6g-xd4k" → STARS is up to date
If local version is not "3b6g-xd4k" → STARS holds an older version and should be updated
This allows clients to avoid unnecessary re‑submissions and focus only on changed data.
It enables implementation of client controlled optimistic concurrency.
Correlate validation errors back to your local data
Validation results also include the change tracking identifier. This allows the calling system to identify which local version of a record failed validation.
Support reconciliation
Reconciliation endpoints return change tracking identifier values alongside resource UIDs and submission details. Calling systems can use this to:
Compare previously submitted versions with current local versions
Identify whether data has changed since last submission
Detect re‑uploads of unchanged data
Use it when voiding previously submitted data
When requesting a void of previously submitted data (isVoided = true), the API optionally allows the change tracking identifier to be supplied:
Transaction batch
A transaction batch is a container used to validate and submit data to STARS. It supports progressive submission, allowing training organisations to upload a single record or many related records, validate them and then formally submit the batch when ready.
All API paths for transactions batches are under /vet-provider/v1/{jurisdiction}/transaction-batch
Key points:
A transaction batch can contain one or many records
Transaction batches are validated as a whole
Records in a transaction batch can be added, updated and/or removed before submission
Transaction batches can be submitted or discarded without formal submission
A jurisdiction is required when the batch is created and cannot be changed
Errors and validation responses
Before data can be submitted, it must be validated against the STARS rules, which includes VET IS and system‑based validation rules implemented by STARS. Validation results contain findings produced by the STARS validation framework and have information to identify the affected resource, resource attributes, related validation results, and the scope of the validation failure.
ProblemDetails
STARS APIs use RFC 9457 Problem Details responses to report request processing errors, including validation failures that prevent a request from being accepted. These may be returned for schema validation or domain validation failures.
Pagination
STARS uses API pagination to break large amounts of retrieved data into smaller and more manageable chunks. Pagination parameters control how GET requests will return results. They will allow for specific subsets of data to be retrieved.
Endpoints supporting pagination
The following endpoints, and others, support pagination:
GET /vet-provider/v1/transaction-batch retrieves a list of transaction batches
GET /vet-provider/v1/transaction-batch/{transactionBatchToken}/failed-validation-results retrieves a list of failed validation results for a transaction batch.
Each VET IS resource now has a paged GET endpoint, for example:
GET /vet-provider/v1/transaction-batch/{transactionBatchToken}/subjectoffering returns a paged response of SubjectOffering records.
QueryParameters
pageNumber: the page number to retrieve; type Integer
Default: 1, Minimum: 1, Maximum: 2147483647
pageSize: the number of results to return per page; type Integer
Default: 10, Minimum: 1, Maximum: 500
Best practice
Continue retrieving pages until all available results have been returned, rather than relying on a predefined maximum number of pages
Field
Type
Description
pageNumber
Integer
The current page number
numberOfPages
Integer
Total number of available pages
numberOfResults
Integer
Total number of results across all pages
pageSize
Integer
Maximum number of results per page
results
Array
An array of objects representing the requested resource
Whitespace validation rules
STARS applies strict structural validation to incoming data submitted via the STARS APIs.
This validation enforces allowable character‑set and whitespace rules across all string values to ensure data consistency and integrity. Requests that do not meet these requirements are rejected and are not persisted.
These rules apply consistently across string fields, with limited exceptions noted below.
Whitespace handling Rules
Leading and trailing spaces are not allowed.
If any string value includes leading or trailing spaces, the request will be rejected as structurally invalid.
For applicable string fields submitted via the STARS APIs:
Leading spaces are not allowed
Trailing spaces are not allowed
Spaces within a value are allowed
Value
Result
"Brisbane"
Accepted
"Brisbane Institute"
Accepted
" Brisbane"
Rejected
"Brisbane "
Rejected
" Brisbane "
Rejected
Disallowed whitespace characters
The following whitespace characters are not permitted anywhere in string values:
Tabs
Line breaks (new lines or carriage returns)
Non‑ASCII whitespace characters
If any of these characters are present, the request will be rejected as structurally invalid.
API response behaviour
When STARS detects invalid whitespace or non-permitted characters:
The request is rejected with HTTP 400 – Bad Request
The response is returned using the standard ProblemDetails format
The affected data is not ingested or stored
Clients should treat these response errors as schema or structural validation failures, not business rule errors.
Exception: enum values
Importantly, enum values are handled differently due to underlying .NET model-binding behaviour:
Enum values may be submitted with leading or trailing spaces
STARS will automatically trim enum values during processing
These values may be accepted successfully
Recommendation
Clients should not rely on enum-specific trimming behaviour. All input values should be trimmed before submission to avoid unexpected validation failures.
Rate limiting and concurrency
Rate limits are planned for a future release. Limits will be refined over time based on performance testing outcomes and observed client usage patterns. As a result, threshold values may change in future releases.
Rate limiting will be enforced at the protocol level and may occur on any API endpoint. Because it is not an application-level validation error, HTTP 429 responses are not currently described in the OpenAPI specification.
Clients should ensure that their integrations can detect and appropriately handle HTTP 429 responses, including implementing retry and back-off mechanisms where appropriate.
Request compression
Request compression enforcement is planned for a future release. As at go-live, the following request size limits apply:
Maximum compressed request size: 1 MiB
Maximum decompressed request size: 10 MiB
Requests that exceed the 10 MiB decompressed limit will be rejected with HTTP 413 (Payload Too Large) and the business rule error BRTS90400.
The compressed size limit is enforced as a protocol-level restriction and won’t return a Problem Details response.
Clients should ensure that the size of VET IS resource collections submitted in a single request remains configurable within their systems.
These limits reflect the current intended operating parameters and may be adjusted following further performance testing and operational review.