Guidance
The focus of the following guidance is on business logic only. Critical details which would be necessary for real-world usage have been left out. For example, authentication is not detailed.
Overview of API requests
- A person submits an application for an NPQ course via the DfE online service
- Providers view NPQ application data via the API
- Providers complete their own suitability and application processes
- Providers accept or reject applications via the API and onboarding participants onto their systems
- Providers train participants as per details set out in the contract
- Providers submit
started
declarations via the API to notify DfE that participants have started their courses - DfE pays providers output payments for
started
declarations - Providers continue to train participants as per details set out in the contract
- Providers submit
retained
declarations via the API to notify DfE participants have continued in training for a given milestone - DfE pays providers output payments for
retained
declarations - Providers complete training participants as per details set out in the contract
- Providers will submit
completed
declarations via the API, including participant outcomes, to notify DfE participants have completed the course - DfE will pay providers output payments for
completed
declarations - Providers view financial statements via the API
Changes can happen during training; some participants may not complete their course within the standard schedule, or at all. Providers must update relevant data using the API.
View, accept or reject NPQ applications
Providers can view application data to find out whether NPQ applicants:
- have a valid email address
- have a valid TRN
- are eligible for funding
- have a funded place
Providers can then accept or reject applications to NPQ courses.
While people can make multiple applications for the same course, with one or multiple providers, only one provider can accept an application from a participant for an NPQ course.
To prevent a participant being enrolled onto the same course with more than one provider the API will:
- automatically update the
status
torejected
for all other applications: If someone has made multiple applications with different providers (within a given cohort) and a provider accepts one, the API will update thestatus
of all other applications with other providers torejected
- return an error message for new applications: If a participant has had an application accepted by a provider, but then makes a new application for the same course with a new provider, the API will return an error message if the new provider tries to accept the new application
Note, while participants can enter different email addresses when applying for training courses, providers will only see the email address associated with a given course application or registration. For example, a participant may complete their ECF-based training with one associated email address, then apply for an NPQ with a different email address, and go on to be an ECT mentor with a third email address. The DfE will share the relevant email address with the relevant course provider.
View all applications
GET /api/v3/npq-applications
Note, providers can also filter results to see more specific or up to date data by adding cohort
, participant_id
and updated_since
filters to the parameter. For example: GET /api/v3/npq-applications?filter[cohort]=2024&filter[participant_id]=7e5bcdbf-c818-4961-8da5-439cab1984e0&filter[updated_since]=2020-11-13T11:21:55Z
An example response body is listed below.
For more detailed information see the specifications for this view multiple NPQ applications endpoint.
Example response body:
{
"data": [
{
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "npq_application",
"attributes": {
"course_identifier": "npq-leading-teaching-development",
"email": "isabelle.macdonald2@some-school.example.com",
"email_validated": true,
"employer_name": null,
"employment_role": null,
"full_name": "Isabelle MacDonald",
"funding_choice": null,
"headteacher_status": null,
"ineligible_for_funding_reason": null,
"participant_id": "53847955-7cfg-41eb-a322-96c50adc742b",
"private_childcare_provider_urn": null,
"teacher_reference_number": "0743795",
"teacher_reference_number_validated": true,
"school_urn": "123456",
"school_ukprn": "12345678",
"status": "pending",
"works_in_school": true,
"created_at": "2024-07-06T10:47:24Z",
"updated_at": "2024-11-24T17:09:37Z",
"cohort": "2024",
"eligible_for_funding": true,
"targeted_delivery_funding_eligibility": false,
"teacher_catchment": true,
"teacher_catchment_iso_country_code": "GBR",
"teacher_catchment_country": "United Kingdom of Great Britain and Northern Ireland",
"itt_provider": null,
"lead_mentor": false,
"schedule_identifier": "npq-leadership-spring",
“funded_place”: null
}
}
]
}
View a specific application
GET /api/v3/npq-applications/{id}
An example response body is listed below.
For more detailed information see the specifications for this view a specific NPQ application endpoint.
Example response body:
{
“data”: {
“id”: “db3a7848-7308-4879-942a-c4a70ced400a”,
“type”: “npq_application”,
“attributes”: {
“participant_id”: “7a8fef46-3c43-42c0-b3d5-1ba5904ba562",
“full_name”: “Isabelle MacDonald”,
“email”: “isabelle.macdonald2@some-school.example.com”,
“email_validated”: true,
“teacher_reference_number”: “1234567”,
“teacher_reference_number_validated”: true,
“works_in_school”: true,
“employer_name”: “Some Company Ltd”,
“employment_role”: “Director”,
“school_urn”: “106286”,
“private_childcare_provider_urn”: “EY944860”,
“school_ukprn”: “10079319”,
“headteacher_status”: “no”,
“eligible_for_funding”: true,
“funding_choice”: “trust”,
“course_identifier”: “npq-leading-teaching”,
“status”: “pending”,
“created_at”: “2024-05-31T02:21:32.000Z”,
“updated_at”: “2024-05-31T02:22:32.000Z”,
“ineligible_for_funding_reason”: “establishment-ineligible”,
“cohort”: “2024",
“targeted_delivery_funding_eligibility”: true,
“teacher_catchment”: true,
“teacher_catchment_country”: “France”,
“teacher_catchment_iso_country_code”: “FRA”,
“lead_mentor”: true,
“itt_provider”: “University of Southampton”,
"schedule_identifier": "npq-leadership-spring",
“funded_place”: null
}
}
}
Accept an application
Providers should accept applications for those they want to enrol onto a course. Providers must inform applicants of the outcome of their successful NPQ application.
Reasons to accept applications include (but are not limited to) the participant:
- having funding confirmed
- being suitable for their chosen NPQ course
- having relevant support from their school
POST /api/v3/npq-applications/{id}/accept
The request parameter must include the id
of the corresponding NPQ application.
An optional request body allows lead providers to add a participant’s schedule when accepting NPQ applications.
An example request body is listed below.
Example request body:
{
"data": {
"type": "npq-application-accept",
"attributes": {
"schedule_identifier": "npq-leadership-spring",
"funded_place": true
}
}
}
An example response body is listed below. Successful requests will return a response body including updates to the status
attribute.
For more detailed information see the specifications for this accept an NPQ application endpoint.
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "npq_application",
"attributes": {
"participant_id": "7a8fef46-3c43-42c0-b3d5-1ba5904ba562",
"full_name": "Isabelle MacDonald",
"email": "isabelle.macdonald2@some-school.example.com",
"email_validated": true,
"teacher_reference_number": "1234567",
"teacher_reference_number_validated": true,
"works_in_school": true,
"employer_name": "Some Company Ltd",
"employment_role": "Director",
"school_urn": "106286",
"private_childcare_provider_urn": "EY944860",
"school_ukprn": "10079319",
"headteacher_status": "no",
"eligible_for_funding": true,
"funded_place": true,
"funding_choice": "trust",
"course_identifier": "npq-leading-teaching",
"status": "accepted",
"created_at": "2024-05-31T02:21:32.000Z",
"updated_at": "2024-05-31T02:22:32.000Z",
"ineligible_for_funding_reason": "establishment-ineligible",
"cohort": "2024",
"targeted_delivery_funding_eligibility": true,
"teacher_catchment": true,
"teacher_catchment_country": "France",
"teacher_catchment_iso_country_code": "FRA",
"lead_mentor": true,
"itt_provider": "University of Southampton",
"schedule_identifier": "npq-leadership-spring",
}
}
}
Reject an application
Providers should reject applications for those they do not want to enrol onto a course. Providers must inform applicants of the outcome of their unsuccessful NPQ application.
Reasons to reject applications include (but are not limited to) the participant:
- having been unsuccessful in their application process
- not having secured funding
- wanting to use another provider
- wanting to take on another course
- no longer wants to take the course
POST /api/v3/npq-applications/{id}/reject
The request parameter must include the id
of the corresponding NPQ application.
An example response body is listed below. Successful requests will return a response body including updates to the status
attribute.
For more detailed information see the specifications for this accept an NPQ application endpoint.
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "npq_application",
"attributes": {
"participant_id": "7a8fef46-3c43-42c0-b3d5-1ba5904ba562",
"full_name": "Isabelle MacDonald",
"email": "isabelle.macdonald2@some-school.example.com",
"email_validated": true,
"teacher_reference_number": "1234567",
"teacher_reference_number_validated": true,
"works_in_school": true,
"employer_name": "Some Company Ltd",
"employment_role": "Director",
"school_urn": "106286",
"private_childcare_provider_urn": "EY944860",
"school_ukprn": "10079319",
"headteacher_status": "no",
"eligible_for_funding": true,
"funding_choice": "trust",
"course_identifier": "npq-leading-teaching",
"status": "rejected",
"created_at": "2024-05-31T02:21:32.000Z",
"updated_at": "2024-05-31T02:22:32.000Z",
"ineligible_for_funding_reason": "establishment-ineligible",
"cohort": "2024",
"targeted_delivery_funding_eligibility": true,
"teacher_catchment": true,
"teacher_catchment_country": "France",
"teacher_catchment_iso_country_code": "FRA",
"lead_mentor": true,
"itt_provider": "University of Southampton",
"schedule_identifier": "npq-leadership-spring",
"funded_place": null
}
}
}
Change whether or not a participant’s training will be funded
Providers can update a participant’s funding information after an application has been accepted.
It’s not possible to change this information if the application has not been accepted.
PUT/api/v3/npq-applications/{id}/change-funded-place
For more detailed information, see the specifications for this change funded place endpoint.
Example request body:
{
"data": {
"type": "npq-application-change-funded-place",
"attributes": {
"funded_place": true
}
}
}
Successful requests will return a response body including updates to the funded_place attribute.
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "npq_application",
"attributes": {
"participant_id": "7a8fef46-3c43-42c0-b3d5-1ba5904ba562",
"full_name": "Isabelle MacDonald",
"email": "isabelle.macdonald2@some-school.example.com",
"email_validated": true,
"teacher_reference_number": "1234567",
"teacher_reference_number_validated": true,
"works_in_school": true,
"employer_name": "Some Company Ltd",
"employment_role": "Director",
"school_urn": "106286",
"private_childcare_provider_urn": "EY944860",
"school_ukprn": "10079319",
"headteacher_status": "no",
"eligible_for_funding": true,
"funded_place": true,
"funding_choice": "trust",
"course_identifier": "npq-leading-teaching",
"status": "pending",
"created_at": "2021-05-31T02:21:32.000Z",
"updated_at": "2021-05-31T02:22:32.000Z",
"ineligible_for_funding_reason": "establishment-ineligible",
"cohort": "2022",
"targeted_delivery_funding_eligibility": true,
"teacher_catchment": true,
"teacher_catchment_country": "France",
"teacher_catchment_iso_country_code": "FRA",
"lead_mentor": true,
"itt_provider": "University of Southampton",
"schedule_identifier": "npq-leadership-spring"
}
}
}
Update an application due to a change in circumstance
There are several reasons why there might be a change in circumstance for an NPQ application, including where a participant:
- made a mistake during their application
- selected the incorrect course during their application
- now wants to take another course instead
- now wants to fund their NPQ differently
Where there has been a change in circumstance, providers should:
- reject the application if the application
status
ispending
- contact the DfE if the application
status
isaccepted
For example, if a participant registers for an NPQ course but then decides to change to another course, the provider should:
- reject that participant’s application
- ask the participant to re-register on the NPQ registration service, entering the correct NPQ course details
- accept the new application once it is available via the API
View and update participant data
Once a provider has accepted an application, they can view and update data to notify DfE that a participant has:
- deferred their course
- resumed their course
- withdrawn from their course
- changed their course schedule
- an updated course outcome
View all participant data
GET /api/v3/participants/npq
Note, providers can also filter results by adding updated_since
filters to the parameter. For example: GET /api/v{n}/participants/ecf?filter[updated_since]=2020-11-13T11:21:55Z
An example response body is listed below.
Providers should note:
- The DfE has previously advised of the possibility that participants may be registered as duplicates with multiple participant_ids. Where the DfE identifies duplicates, it will fix the error by ‘retiring’ one of the participant IDs, then associating all records and data under the remaining ID.
- Providers can check if an NPQ participant’s ID has changed using the
participant_id_changes
nested structure in the NPQEnrolment, which contains afrom_participant_id
and ato_participant_id
string fields, as well achanged_at
date value
For more detailed information see the specifications for this view multiple NPQ participants endpoint.
Example response body:
{
"data": [
{
"id": "ac3d1243-7308-4879-942a-c4a70ced400a",
"type": "npq-participant",
"attributes": {
"full_name": "Isabelle MacDonald",
"teacher_reference_number": "1234567",
"updated_at": "2024-05-31T02:22:32.000Z",
"npq_enrolments": [
{
"email": "isabelle.macdonald2@some-school.example.com",
"course_identifier": "npq-senior-leadership",
"schedule_identifier": "npq-leadership-autumn",
"cohort": "2024",
"npq_application_id": "db3a7848-7308-4879-942a-c4a70ced400a",
"eligible_for_funding": true,
"funded_place": true,
"training_status": "active",
"school_urn": "123456",
"targeted_delivery_funding_eligibility": true,
"withdrawal": null
"deferral": null
"created_at": "2024-05-31T02:22:32.000Z"
}
],
"participant_id_changes": [
{
"from_participant_id": "23dd8d66-e11f-4139-9001-86b4f9abcb02",
"to_participant_id": "ac3d1243-7308-4879-942a-c4a70ced400a",
"changed_at": "2023-09-23T02:22:32.000Z",
}
]
}
}
]
}
View a single participant’s data
GET /api/v3/participants/npq/{id}
An example response body is listed below.
Providers should note:
- we’ve previously advised of the possibility that participants may be registered as duplicates with multiple
participant_ids
. Where we identify duplicates, we’ll fix the error by ‘retiring’ one of the participant IDs and then associating all records and data under the remaining ID. To date, when this has occurred, we’ve informed providers of changes via CSVs - providers can check if an NPQ participant’s ID has changed using the
participant_id_changes
nested structure in the NPQEnrolment, which containsfrom_participant_id
andto_participant_id
string fields, as well achanged_at
date value
For more detailed information see the specifications for this view a single NPQ participant endpoint.
Example response body:
{
"data": [
{
"id": "ac3d1243-7308-4879-942a-c4a70ced400a",
"type": "npq-participant",
"attributes": {
"full_name": "Isabelle MacDonald",
"teacher_reference_number": "1234567",
"updated_at": "2024-05-31T02:22:32.000Z",
"npq_enrolments": [
{
"email": "isabelle.macdonald2@some-school.example.com",
"course_identifier": "npq-senior-leadership",
"schedule_identifier": "npq-leadership-autumn",
"cohort": "2024",
"npq_application_id": "db3a7848-7308-4879-942a-c4a70ced400a",
"eligible_for_funding": true,
"funded_place": true,
"training_status": "active",
"school_urn": "123456",
"targeted_delivery_funding_eligibility": true,
"withdrawal": null
"deferral": null
"created_at": "2024-05-31T02:22:32.000Z"
}
],
"participant_id_changes": [
{
"from_participant_id": "23dd8d66-e11f-4139-9001-86b4f9abcb02",
"to_participant_id": "ac3d1243-7308-4879-942a-c4a70ced400a",
"changed_at": "2023-09-23T02:22:32.000Z",
}
]
}
}
]
}
Notify DfE a participant has taken a break (deferred) from training
A participant can choose to take a break from their NPQ course at any time if they plan to resume training at a later date. Providers must notify DfE of this via the API.
PUT /api/v{n}/participants/npq/{id}/defer
An example request body is listed below.
Successful requests will return a response body including updates to the training_status
attribute.
For more detailed information see the specifications for this notify DfE that an NPQ participant is taking a break from their course endpoint.
Example request body:
{
"data": {
"type": "participant-defer",
"attributes": {
"reason": "parental-leave",
"course_identifier": "npq-senior-leadership"
}
}
}
Notify DfE a participant has resumed training
A participant can choose to resume their NPQ course at any time if they had previously deferred. Providers must notify DfE of this via the API.
PUT /api/v3/participants/npq/{id}/resume
An example request body is listed below.
Successful requests will return a response body including updates to the training_status
attribute.
For more detailed information see the specifications for this notify DfE that an NPQ participant has resumed training endpoint.
Example request body:
{
"data": {
"type": "participant-resume",
"attributes": {
"course_identifier": "npq-leading-teaching-development"
}
}
}
Notify DfE a participant has withdrawn from training
A participant can choose to withdraw from an NPQ course at any time. Providers must notify DfE of this via the API.
PUT /api/v3/participants/npq/{id}/withdraw
An example request body is listed below.
Successful requests will return a response body including updates to the training_status
attribute, and a withdrawal date
reflecting the time the provider submitted the withdrawal API request.
Providers should note:
- The API will not allow withdrawals for participants who have not had a
started
declaration submitted against them. If a participant withdraws before astarted
declaration has been submitted, providers should inform their contract manager who can advise - DfE will only pay for participants who have had, at a minimum, a
started
declaration submitted against them - If a participant is withdrawn later in their course, DfE will pay providers for any declarations submitted where the
declaration_date
is before the date of the withdrawal - The amount DfE will pay depends on which milestones have been reached with declarations submitted before withdrawal
For more detailed information see the specifications for this notify DfE that an NPQ participant has withdrawn from training endpoint.
Example request body:
{
"data": {
"type": "participant-withdraw",
"attributes": {
"reason": "quality-of-programme-other",
"course_identifier": "npq-leading-teaching-development"
}
}
}
Notify DfE a participant has changed their training schedule
The API will automatically assign schedules to participants depending on when course applications are accepted by providers. Providers must notify the DfE of any schedule change.
PUT /api/v3/participants/npq/{id}/change-schedule
An example request body is listed below.
Successful requests will return a response body including updates to the schedule_identifier
attribute.
Note, the API will reject a schedule change if any submitted
, eligible
, payable
or paid
declarations have a declaration_date
which does not align with the new schedule’s milestone dates.
For example, a participant is in the 2024 cohort on an npq-specialist-autumn
schedule. Their provider has submitted a started
declaration dated 1 October 2024. The provider tries to change the schedule to npq-specialist-spring
. The API will reject the change because a spring schedule does not start until January, which is after the declaration date. The API returns an error message with instructions to void existing declarations first.
For more detailed information see the specifications for this notify that an NPQ participant has changed their training schedule endpoint.
Example request body:
{
"data": {
"type": "participant-change-schedule",
"attributes": {
"schedule_identifier": "npq-leadership-autumn",
"course_identifier": "npq-leading-teaching",
"cohort": "2024"
}
}
}
View all participant outcomes
Participants can either pass or fail assessment at the end of their NPQ course. These outcomes are submitted by providers within completed
declaration submissions.
Note, outcomes are sent to the Database of Qualified Teachers (DQT) who issue certificates to participants who have passed.
GET /api/v3/participants/npq/outcomes
An example response body is listed below. Successful requests will return a response body including an outcome state
value to signify:
- outcomes submitted (
passed
orfailed
) - if
completed
declarations have been voided and the outcome retracted (voided
)
For more detailed information see the specifications for this view NPQ outcomes endpoint.
Example response body:
{
"data": [
{
"id": "cd3a12347-7308-4879-942a-c4a70ced400a",
"type": "participant-outcome",
"attributes": {
"participant_id": "66218835-9430-4d0c-98ef-7caf0bb4a59b",
"course_identifier": "npq-leading-teaching",
"state": "passed",
"completion_date": "2024-05-31T00:00:00+00:00",
"created_at": "2024-05-31T02:21:32.000Z",
"updated_at": "2024-05-31T02:21:32.000Z"
}
}
]
}
View a specific participant’s outcome
A participant can either pass or fail assessment at the end of their NPQ course. Their outcome will be submitted by providers within completed
declaration submissions.
Note, outcomes are sent to the Database of Qualified Teachers (DQT) who issue certificates to participants who have passed.
GET /api/v3/participants/npq/{participant_id}/outcomes
An example response body is listed below. Successful requests will return a response body including an outcome state
value to signify:
- the outcome submitted (
passed
orfailed
) - if the
completed
declaration has been voided and the outcome retracted (voided
)
For more detailed information see the specifications for this view NPQ outcome for a specific participant endpoint.
Example response body:
{
"data": [
{
"id": "cd3a12347-7308-4879-942a-c4a70ced400a",
"type": "participant-outcome",
"attributes": {
"participant_id": "66218835-9430-4d0c-98ef-7caf0bb4a59b",
"course_identifier": "npq-leading-teaching",
"state": "passed",
"completion_date": "2024-05-31T00:00:00+00:00",
"created_at": "2024-05-31T02:21:32.000Z",
"updated_at": "2024-05-31T02:21:32.000Z"
}
}
]
}
Update a participant’s outcomes
Outcomes may need to be updated if previously submitted data was inaccurate. For example, a provider should update a participant’s outcome if:
- the reported outcome was incorrect
- the reported date the participant received their outcome was incorrect
- a participant has retaken their NPQ assessment and their outcome has changed
POST /api/v1/participant/npq/{participant_id}/outcomes
An example request body is listed below. Request bodies must include a new value for the outcome state
and completion_date
.
Successful requests will return a response body with updates included.
For more detailed information see the specifications for this update an NPQ outcome endpoint.
Example request body:
{
"data": {
"type": "npq-outcome-confirmation",
"attributes": {
"course_identifier": "npq-leading-teaching",
"state": "passed",
"completion_date": "2024-05-31"
}
}
}
Submit, view and void declarations
Providers must submit declarations in line with NPQ contractual schedules and milestone dates.
These declarations will trigger payment from DfE to providers.
When providers submit declarations, API response bodies will include data about which financial statement the given declaration applies to. Providers can then view financial statement payment dates to check when the invoicing period, and expected payment date, will be for the given declaration.
Test the ability to submit declarations in sandbox ahead of time
X-With-Server-Date
is a custom JSON header supported in the sandbox environment. It lets providers test their integrations and ensure they are able to submit declarations for future milestone dates.
The X-With-Server-Date
header lets providers simulate future dates, and therefore allows providers to test declaration submissions for future milestone dates.
To test declaration submission functionality, include:
- the header
X-With-Server-Date
as part of declaration submission request - the value of your chosen date in ISO8601 Date with time and Timezone (i.e. RFC3339 format). For example:
X-With-Server-Date: 2025-01-10T10:42:00Z
Notify DfE a participant has started training
Notify the DfE that a participant has started an NPQ course by submitting a started
declaration in line with milestone 1 dates.
POST /api/v3/participant-declarations
An example request body is listed below. Request bodies must include the necessary data attributes, including the declaration_type
attribute with a started
value.
An example response body is listed below. Successful requests will return a response body with declaration data.
Any attempts to submit duplicate declarations will return an error message.
For more detailed information see the specifications for this notify DfE that an NPQ participant has started training endpoint.
Example request body:
{
"data": {
"type": "participant-declaration",
"attributes": {
"participant_id": "db3a7848-7308-4879-942a-c4a70ced400a",
"declaration_type": "started",
"declaration_date": "2024-05-31T02:21:32.000Z",
"course_identifier": "npq-leading-teaching"
}
}
}
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "participant-declaration",
"attributes": {
"participant_id": "bf3c6251-f2a0-4690-a859-0fbecc6ed151",
"declaration_type": "started",
"declaration_date": "2020-11-13T11:21:55Z",
"course_identifier": "npq-leading-teaching",
"state": "eligible",
"updated_at": "2020-11-13T11:21:55Z",
"created_at": "2020-11-13T11:21:55Z",
"delivery_partner_id": null,
"statement_id": "1cceffd7-0efd-432a-aedc-7be2d6cc72a2",
"clawback_statement_id": null,
"ineligible_for_funding_reason": null,
"mentor_id": null,
"uplift_paid": true,
"evidence_held": null
"has_passed": null
}
}
}
Notify DfE a participant has been retained in training
Notify the DfE that a participant has reached a given retention point in their course by submitting a retained
declaration in line with milestone dates.
POST /api/v{n}/participant-declarations
An example request body is listed below. Request bodies must include the necessary data attributes, including the appropriate declaration_type
attribute value, for example retained-1
.
An example response body is listed below. Successful requests will return a response body with declaration data.
Any attempts to submit duplicate declarations will return an error message.
For more detailed information see the specifications for this notify DfE that an NPQ participant has been retained in training endpoint.
Example request body:
{
“data”: {
“type”: “participant-declaration”,
“attributes”: {
"participant_id": "db3a7848-7308-4879-942a-c4a70ced400a",
"declaration_type": "retained-1",
"declaration_date": "2024-05-31T02:21:32.000Z",
"course_identifier": "npq-headship"
}
}
}
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "participant-declaration",
"attributes": {
"participant_id": "bf3c6251-f2a0-4690-a859-0fbecc6ed151",
"declaration_type": "retained-1",
"declaration_date": "2020-11-13T11:21:55Z",
"course_identifier": "npq-headship",
"state": "eligible",
"updated_at": "2020-11-13T11:21:55Z",
"created_at": "2020-11-13T11:21:55Z",
"delivery_partner_id": null,
"statement_id": "1cceffd7-0efd-432a-aedc-7be2d6cc72a2",
"clawback_statement_id": null,
"ineligible_for_funding_reason": null,
"mentor_id": null,
"uplift_paid": true,
"evidence_held": null
"has_passed": null
}
}
}
Notify DfE a participant has completed training
Notify the DfE that a participant has completed their course by submitting a completed
declaration in line with milestone dates.
You can do this for all NPQs and the Early headship coaching offer.
POST /api/v{n}/participant-declarations
An example request body is listed below. Request bodies must include the necessary data attributes, including the declaration_type
attribute with a completed
value, and thehas_passed
attribute with a true
or false
value.
An example response body is listed below. Successful requests will return a response body with declaration data.
Note, any attempts to submit duplicate declarations will return an error message.
For more detailed information see the specifications for this notify DfE that an NPQ participant has completed training endpoint.
Example request body:
{
“data”: {
“type”: “participant-declaration”,
“attributes”: {
"participant_id": "db3a7848-7308-4879-942a-c4a70ced400a",
"declaration_type": "completed",
"declaration_date": "2024-05-31T02:21:32.000Z",
"course_identifier": "npq-leading-teaching",
"has_passed": true
}
}
}
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "participant-declaration",
"attributes": {
"participant_id": "db3a7848-7308-4879-942a-c4a70ced400a",
"declaration_type": "completed",
"declaration_date": "2024-05-31T02:21:32.000Z",
"course_identifier": "npq-leading-teaching",
"state": "eligible",
"updated_at": "2020-11-13T11:21:55Z",
"created_at": "2020-11-13T11:21:55Z",
"delivery_partner_id": null,
"statement_id": "1cceffd7-0efd-432a-aedc-7be2d6cc72a2",
"clawback_statement_id": null,
"ineligible_for_funding_reason": null,
"mentor_id": null,
"uplift_paid": true,
"evidence_held": null
"has_passed": true
}
}
}
View all previously submitted declarations
View all declarations which have been submitted to date. Check declaration submissions, identify if any are missing, and void or clawback those which have been submitted in error.
GET /api/v3/participant-declarations
Note, providers can also filter results by adding filters to the parameter. For example: GET /api/v3/participant-declarations?filter[participant_id]=ab3a7848-1208-7679-942a-b4a70eed400a
or GET /api/v3/participant-declarations?filter[cohort]=2024&filter[updated_since]=2020-11-13T11:21:55Z
An example response body is listed below.
For more detailed information see the specifications for this view all declarations endpoint.
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "participant-declaration",
"attributes": {
"participant_id": "bf3c6251-f2a0-4690-a859-0fbecc6ed151",
"declaration_type": "started",
"declaration_date": "2020-11-13T11:21:55Z",
"course_identifier": "npq-leading-teaching",
"state": "eligible",
"updated_at": "2020-11-13T11:21:55Z",
"created_at": "2020-11-13T11:21:55Z",
"delivery_partner_id": null,
"statement_id": "1cceffd7-0efd-432a-aedc-7be2d6cc72a2",
"clawback_statement_id": null,
"ineligible_for_funding_reason": null,
"mentor_id": null,
"uplift_paid": true,
"evidence_held": null
"has_passed": null
}
}
}
View a specific previously submitted declaration
View a specific declaration which has been previously submitted. Check declaration details and void or clawback those which have been submitted in error.
GET /api/v3/participant-declarations/{id}
An example response body is listed below.
For more detailed information see the specifications for this view specific declarations endpoint.
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "participant-declaration",
"attributes": {
"participant_id": "bf3c6251-f2a0-4690-a859-0fbecc6ed151",
"declaration_type": "started",
"declaration_date": "2020-11-13T11:21:55Z",
"course_identifier": "npq-leading-teaching",
"state": "eligible",
"updated_at": "2020-11-13T11:21:55Z",
"created_at": "2020-11-13T11:21:55Z",
"delivery_partner_id": null,
"statement_id": "1cceffd7-0efd-432a-aedc-7be2d6cc72a2",
"clawback_statement_id": null,
"ineligible_for_funding_reason": null,
"mentor_id": null,
"uplift_paid": true,
"evidence_held": null
"has_passed": null
}
}
}
Void or clawback a declaration
Void specific declarations which have been submitted in error.
PUT /api/v3/participant-declarations/{id}/void
An example response body is listed below. Successful requests will return a response body including updates to the declaration state
, which will become:
voided
if it had beensubmitted
,ineligible
,eligible
, orpayable
awaiting_clawback
if it had beenpaid
View more information on declaration states.
Note, if a provider voids a completed
declaration, the outcome (indicating whether they have passed or failed) will be retracted. The has_passed
value will revert to null
.
For more detailed information see the specifications for this void declarations endpoint.
Example response body:
{
"data": {
"id": "db3a7848-7308-4879-942a-c4a70ced400a",
"type": "participant-declaration",
"attributes": {
"participant_id": "bf3c6251-f2a0-4690-a859-0fbecc6ed151",
"declaration_type": "completed",
"declaration_date": "2020-11-13T11:21:55Z",
"course_identifier": "npq-leading-teaching",
"state": "voided",
"updated_at": "2020-11-13T11:21:55Z",
"created_at": "2020-11-13T11:21:55Z",
"delivery_partner_id": null,
"statement_id": "1cceffd7-0efd-432a-aedc-7be2d6cc72a2",
"clawback_statement_id": null,
"ineligible_for_funding_reason": null,
"mentor_id": null,
"uplift_paid": true,
"evidence_held": null
"has_passed": null
}
}
}
View financial statement payment dates
Providers can view up to date payment cut-off dates, upcoming payment dates, and check to see whether output payments have been made by DfE.
View all statement payment dates
GET /api/v3/statements
An example response body is listed below.
For more detailed information see the specifications for this view all statements endpoint.
Example response body:
{
"data": [
{
"id": "cd3a12347-7308-4879-942a-c4a70ced400a",
"type": "statement",
"attributes": {
"month": "May",
"year": "2024",
"type": "npq",
"cohort": "2024",
"cut_off_date": "2024-04-30",
"payment_date": "2024-05-25",
"paid": true,
"created_at": "2024-05-31T02:22:32.000Z",
"updated_at": "2024-05-31T02:22:32.000Z"
}
}
]
}
View specific statement payment dates
GET /api/v3/statements/{id}
Providers can find statement IDs within previously submitted declaration response bodies.
An example response body is listed below.
For more detailed information see the specifications for this view a specific statement endpoint.
Example response body:
{
"data": {
"id": "cd3a12347-7308-4879-942a-c4a70ced400a",
"type": "statement",
"attributes": {
"month": "May",
"year": "2024",
"type": "npq",
"cohort": "2024",
"cut_off_date": "2024-04-30",
"payment_date": "2024-05-25",
"paid": true,
"created_at": "2024-05-31T02:22:32.000Z",
"updated_at": "2024-05-31T02:22:32.000Z"
}
}
}