From 444f41196e5daa0ac118854b671f0f4aaf3d6024 Mon Sep 17 00:00:00 2001 From: Kalyani Nikam Date: Wed, 18 Mar 2026 15:25:12 +0000 Subject: [PATCH 1/3] feat(nisp): nsip-project amountDue and invoiceStage --- docs/nsip-project-defs-invoice.md | 8 ++++---- docs/nsip-project.md | 8 ++++---- pins_data_model/models/model_appeal_document.py | 2 +- pins_data_model/models/model_appeal_event.py | 2 +- .../models/model_appeal_event_estimate.py | 2 +- pins_data_model/models/model_appeal_has.py | 2 +- .../models/model_appeal_representation.py | 2 +- pins_data_model/models/model_appeal_s78.py | 2 +- pins_data_model/models/model_dart_response.py | 2 +- pins_data_model/models/model_entraid.py | 2 +- pins_data_model/models/model_folder.py | 2 +- .../models/model_gettimesheets_response.py | 2 +- pins_data_model/models/model_listed_building.py | 2 +- pins_data_model/models/model_listed_buildings.py | 2 +- pins_data_model/models/model_nsip_document.py | 2 +- .../models/model_nsip_exam_timetable.py | 2 +- pins_data_model/models/model_nsip_invoice.py | 2 +- pins_data_model/models/model_nsip_meeting.py | 2 +- pins_data_model/models/model_nsip_project.py | 16 +++++++++++----- .../models/model_nsip_project_update.py | 2 +- .../models/model_nsip_representation.py | 2 +- .../models/model_nsip_subscription.py | 2 +- pins_data_model/models/model_pins_inspector.py | 2 +- pins_data_model/models/model_pins_lpa.py | 2 +- pins_data_model/models/model_s51_advice.py | 2 +- pins_data_model/models/model_service_user.py | 2 +- schemas/nsip-project.schema.json | 4 ++-- src/schemas.d.ts | 2 +- 28 files changed, 45 insertions(+), 39 deletions(-) diff --git a/docs/nsip-project-defs-invoice.md b/docs/nsip-project-defs-invoice.md index ebbf460e..1092196a 100644 --- a/docs/nsip-project-defs-invoice.md +++ b/docs/nsip-project-defs-invoice.md @@ -6,9 +6,9 @@ | Property | Type | Required | Nullable | Defined by | | :------------------------------------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [invoiceStage](#invoicestage) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") | +| [invoiceStage](#invoicestage) | `string` | Optional | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") | | [invoiceNumber](#invoicenumber) | `string` | Required | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicenumber.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceNumber") | -| [amountDue](#amountdue) | `number` | Required | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") | +| [amountDue](#amountdue) | `number` | Required | can be null | [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") | | [paymentDueDate](#paymentduedate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-paymentduedate.md "nsip-project.schema.json#/$defs/invoice/properties/paymentDueDate") | | [invoicedDate](#invoiceddate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-invoiceddate.md "nsip-project.schema.json#/$defs/invoice/properties/invoicedDate") | | [paymentDate](#paymentdate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-paymentdate.md "nsip-project.schema.json#/$defs/invoice/properties/paymentDate") | @@ -27,7 +27,7 @@ Invoice stage * Type: `string` -* can be null +* cannot be null * defined in: [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") @@ -88,7 +88,7 @@ Amount due * Type: `number` -* cannot be null +* can be null * defined in: [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") diff --git a/docs/nsip-project.md b/docs/nsip-project.md index 57a02ec4..08483abb 100644 --- a/docs/nsip-project.md +++ b/docs/nsip-project.md @@ -3783,9 +3783,9 @@ Reference this group by using | Property | Type | Required | Nullable | Defined by | | :------------------------------------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [invoiceStage](#invoicestage) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") | +| [invoiceStage](#invoicestage) | `string` | Optional | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") | | [invoiceNumber](#invoicenumber) | `string` | Required | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicenumber.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceNumber") | -| [amountDue](#amountdue) | `number` | Required | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") | +| [amountDue](#amountdue) | `number` | Required | can be null | [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") | | [paymentDueDate](#paymentduedate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-paymentduedate.md "nsip-project.schema.json#/$defs/invoice/properties/paymentDueDate") | | [invoicedDate](#invoiceddate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-invoiceddate.md "nsip-project.schema.json#/$defs/invoice/properties/invoicedDate") | | [paymentDate](#paymentdate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-paymentdate.md "nsip-project.schema.json#/$defs/invoice/properties/paymentDate") | @@ -3804,7 +3804,7 @@ Invoice stage * Type: `string` -* can be null +* cannot be null * defined in: [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") @@ -3865,7 +3865,7 @@ Amount due * Type: `number` -* cannot be null +* can be null * defined in: [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") diff --git a/pins_data_model/models/model_appeal_document.py b/pins_data_model/models/model_appeal_document.py index dbe7bd4d..9beb7bd6 100644 --- a/pins_data_model/models/model_appeal_document.py +++ b/pins_data_model/models/model_appeal_document.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-document.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:21+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_event.py b/pins_data_model/models/model_appeal_event.py index 5c7190e5..3f778485 100644 --- a/pins_data_model/models/model_appeal_event.py +++ b/pins_data_model/models/model_appeal_event.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-event.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:21+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_event_estimate.py b/pins_data_model/models/model_appeal_event_estimate.py index a327303d..78c4aa53 100644 --- a/pins_data_model/models/model_appeal_event_estimate.py +++ b/pins_data_model/models/model_appeal_event_estimate.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-event-estimate.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:21+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_has.py b/pins_data_model/models/model_appeal_has.py index e0fc5f0a..c4a90fda 100644 --- a/pins_data_model/models/model_appeal_has.py +++ b/pins_data_model/models/model_appeal_has.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-has.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_representation.py b/pins_data_model/models/model_appeal_representation.py index 0c1605c8..2f2aef16 100644 --- a/pins_data_model/models/model_appeal_representation.py +++ b/pins_data_model/models/model_appeal_representation.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-representation.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_s78.py b/pins_data_model/models/model_appeal_s78.py index 796477ec..97085466 100644 --- a/pins_data_model/models/model_appeal_s78.py +++ b/pins_data_model/models/model_appeal_s78.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-s78.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_dart_response.py b/pins_data_model/models/model_dart_response.py index b998cb1d..ca9a8384 100644 --- a/pins_data_model/models/model_dart_response.py +++ b/pins_data_model/models/model_dart_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: dart-response.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_entraid.py b/pins_data_model/models/model_entraid.py index bd136a44..47682777 100644 --- a/pins_data_model/models/model_entraid.py +++ b/pins_data_model/models/model_entraid.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: entraid.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_folder.py b/pins_data_model/models/model_folder.py index b18949ca..1e2179e3 100644 --- a/pins_data_model/models/model_folder.py +++ b/pins_data_model/models/model_folder.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: folder.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_gettimesheets_response.py b/pins_data_model/models/model_gettimesheets_response.py index 11cfb568..01f21e64 100644 --- a/pins_data_model/models/model_gettimesheets_response.py +++ b/pins_data_model/models/model_gettimesheets_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: gettimesheets-response.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_listed_building.py b/pins_data_model/models/model_listed_building.py index fb84f91d..5cb218da 100644 --- a/pins_data_model/models/model_listed_building.py +++ b/pins_data_model/models/model_listed_building.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: listed-building.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_listed_buildings.py b/pins_data_model/models/model_listed_buildings.py index 025b79d7..1db48635 100644 --- a/pins_data_model/models/model_listed_buildings.py +++ b/pins_data_model/models/model_listed_buildings.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: listed-buildings.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_document.py b/pins_data_model/models/model_nsip_document.py index bc3312bd..40def243 100644 --- a/pins_data_model/models/model_nsip_document.py +++ b/pins_data_model/models/model_nsip_document.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-document.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_exam_timetable.py b/pins_data_model/models/model_nsip_exam_timetable.py index 06d5e2e5..b5c43d15 100644 --- a/pins_data_model/models/model_nsip_exam_timetable.py +++ b/pins_data_model/models/model_nsip_exam_timetable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-exam-timetable.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_invoice.py b/pins_data_model/models/model_nsip_invoice.py index 8bb2a774..41b0ad7e 100644 --- a/pins_data_model/models/model_nsip_invoice.py +++ b/pins_data_model/models/model_nsip_invoice.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-invoice.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_meeting.py b/pins_data_model/models/model_nsip_meeting.py index 45356f5c..e1b26c9e 100644 --- a/pins_data_model/models/model_nsip_meeting.py +++ b/pins_data_model/models/model_nsip_meeting.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-meeting.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_project.py b/pins_data_model/models/model_nsip_project.py index 28d1ae40..28345e66 100644 --- a/pins_data_model/models/model_nsip_project.py +++ b/pins_data_model/models/model_nsip_project.py @@ -1,13 +1,13 @@ # generated by datamodel-codegen: # filename: nsip-project.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:23+00:00 from __future__ import annotations from enum import Enum from typing import Any -from pydantic import AwareDatetime, BaseModel, ConfigDict, Field +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel class Decision(Enum): @@ -342,7 +342,7 @@ class Meeting(BaseModel): """ -class InvoiceStage(Enum): +class InvoiceStageEnum(Enum): """ Invoice stage """ @@ -352,7 +352,13 @@ class InvoiceStage(Enum): pre_examination = "pre_examination" initial_examination = "initial_examination" final_examination = "final_examination" - NoneType_None = None + + +class InvoiceStage(RootModel[InvoiceStageEnum | None]): + root: InvoiceStageEnum | None = Field(None, examples=["pre_acceptance"]) + """ + Invoice stage + """ class Invoice(BaseModel): @@ -371,7 +377,7 @@ class Invoice(BaseModel): """ Invoice number """ - amountDue: float = Field(..., examples=[500]) + amountDue: float | None = Field(..., examples=[500]) """ Amount due """ diff --git a/pins_data_model/models/model_nsip_project_update.py b/pins_data_model/models/model_nsip_project_update.py index a0eb7d56..1f00120c 100644 --- a/pins_data_model/models/model_nsip_project_update.py +++ b/pins_data_model/models/model_nsip_project_update.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-project-update.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:22+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_representation.py b/pins_data_model/models/model_nsip_representation.py index 1c984788..dd293ce2 100644 --- a/pins_data_model/models/model_nsip_representation.py +++ b/pins_data_model/models/model_nsip_representation.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-representation.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:23+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_subscription.py b/pins_data_model/models/model_nsip_subscription.py index 1c4a69fa..7e66eb8d 100644 --- a/pins_data_model/models/model_nsip_subscription.py +++ b/pins_data_model/models/model_nsip_subscription.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-subscription.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:23+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_pins_inspector.py b/pins_data_model/models/model_pins_inspector.py index 454591b3..a3c54b25 100644 --- a/pins_data_model/models/model_pins_inspector.py +++ b/pins_data_model/models/model_pins_inspector.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: pins-inspector.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:23+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_pins_lpa.py b/pins_data_model/models/model_pins_lpa.py index 4819d98d..881c6e2f 100644 --- a/pins_data_model/models/model_pins_lpa.py +++ b/pins_data_model/models/model_pins_lpa.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: pins-lpa.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:23+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_s51_advice.py b/pins_data_model/models/model_s51_advice.py index 30c801f4..139493ca 100644 --- a/pins_data_model/models/model_s51_advice.py +++ b/pins_data_model/models/model_s51_advice.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: s51-advice.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:23+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_service_user.py b/pins_data_model/models/model_service_user.py index 48ec6bc0..c3981ec9 100644 --- a/pins_data_model/models/model_service_user.py +++ b/pins_data_model/models/model_service_user.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: service-user.schema.json -# timestamp: 2026-03-06T13:54:17+00:00 +# timestamp: 2026-03-18T15:24:23+00:00 from __future__ import annotations diff --git a/schemas/nsip-project.schema.json b/schemas/nsip-project.schema.json index cde7d815..990ed3bc 100644 --- a/schemas/nsip-project.schema.json +++ b/schemas/nsip-project.schema.json @@ -915,7 +915,7 @@ "required": ["invoiceNumber", "amountDue"], "properties": { "invoiceStage": { - "type": ["string", "null"], + "type": "string", "description": "Invoice stage", "enum": ["pre_acceptance", "acceptance", "pre_examination", "initial_examination", "final_examination", null], "examples": ["pre_acceptance"] @@ -926,7 +926,7 @@ "examples": ["1800004419"] }, "amountDue": { - "type": "number", + "type": ["number", "null"], "description": "Amount due", "examples": [500] }, diff --git a/src/schemas.d.ts b/src/schemas.d.ts index 6f453d13..1e576e0c 100644 --- a/src/schemas.d.ts +++ b/src/schemas.d.ts @@ -3000,7 +3000,7 @@ export interface Invoice { /** * Amount due */ - amountDue: number; + amountDue: number | null; /** * Payment due date */ From 8dd1820de82d5cc3f2671a0d0d3b182be12d6549 Mon Sep 17 00:00:00 2001 From: Kalyani Nikam Date: Thu, 19 Mar 2026 09:53:16 +0000 Subject: [PATCH 2/3] feat(nisp): nsip-project amountDue and invoiceStage --- schemas/nsip-project.schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/schemas/nsip-project.schema.json b/schemas/nsip-project.schema.json index 990ed3bc..2224ac17 100644 --- a/schemas/nsip-project.schema.json +++ b/schemas/nsip-project.schema.json @@ -912,12 +912,12 @@ "type": "object", "additionalProperties": true, "description": "An invoice related to the project", - "required": ["invoiceNumber", "amountDue"], + "required": ["invoiceNumber", "invoiceStage"], "properties": { "invoiceStage": { "type": "string", "description": "Invoice stage", - "enum": ["pre_acceptance", "acceptance", "pre_examination", "initial_examination", "final_examination", null], + "enum": ["pre_acceptance", "acceptance", "pre_examination", "initial_examination", "final_examination"], "examples": ["pre_acceptance"] }, "invoiceNumber": { From c10da522027061c2b82937f21c94fd040dacee51 Mon Sep 17 00:00:00 2001 From: Kalyani Nikam Date: Thu, 19 Mar 2026 10:26:28 +0000 Subject: [PATCH 3/3] feat(nisp): nsip-project amountDue and invoiceStage --- docs/nsip-project-defs-invoice.md | 9 ++++----- docs/nsip-project.md | 9 ++++----- pins_data_model/models/model_appeal_document.py | 2 +- pins_data_model/models/model_appeal_event.py | 2 +- .../models/model_appeal_event_estimate.py | 2 +- pins_data_model/models/model_appeal_has.py | 2 +- .../models/model_appeal_representation.py | 2 +- pins_data_model/models/model_appeal_s78.py | 2 +- pins_data_model/models/model_dart_response.py | 2 +- pins_data_model/models/model_entraid.py | 2 +- pins_data_model/models/model_folder.py | 2 +- .../models/model_gettimesheets_response.py | 2 +- pins_data_model/models/model_listed_building.py | 2 +- .../models/model_listed_buildings.py | 2 +- pins_data_model/models/model_nsip_document.py | 2 +- .../models/model_nsip_exam_timetable.py | 2 +- pins_data_model/models/model_nsip_invoice.py | 2 +- pins_data_model/models/model_nsip_meeting.py | 2 +- pins_data_model/models/model_nsip_project.py | 17 +++++------------ .../models/model_nsip_project_update.py | 2 +- .../models/model_nsip_representation.py | 2 +- .../models/model_nsip_subscription.py | 2 +- pins_data_model/models/model_pins_inspector.py | 2 +- pins_data_model/models/model_pins_lpa.py | 2 +- pins_data_model/models/model_s51_advice.py | 2 +- pins_data_model/models/model_service_user.py | 2 +- src/schemas.d.ts | 10 ++-------- 27 files changed, 38 insertions(+), 53 deletions(-) diff --git a/docs/nsip-project-defs-invoice.md b/docs/nsip-project-defs-invoice.md index 1092196a..dd4e9287 100644 --- a/docs/nsip-project-defs-invoice.md +++ b/docs/nsip-project-defs-invoice.md @@ -6,9 +6,9 @@ | Property | Type | Required | Nullable | Defined by | | :------------------------------------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [invoiceStage](#invoicestage) | `string` | Optional | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") | +| [invoiceStage](#invoicestage) | `string` | Required | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") | | [invoiceNumber](#invoicenumber) | `string` | Required | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicenumber.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceNumber") | -| [amountDue](#amountdue) | `number` | Required | can be null | [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") | +| [amountDue](#amountdue) | `number` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") | | [paymentDueDate](#paymentduedate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-paymentduedate.md "nsip-project.schema.json#/$defs/invoice/properties/paymentDueDate") | | [invoicedDate](#invoiceddate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-invoiceddate.md "nsip-project.schema.json#/$defs/invoice/properties/invoicedDate") | | [paymentDate](#paymentdate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-paymentdate.md "nsip-project.schema.json#/$defs/invoice/properties/paymentDate") | @@ -23,7 +23,7 @@ Invoice stage `invoiceStage` -* is optional +* is required * Type: `string` @@ -46,7 +46,6 @@ Invoice stage | `"pre_examination"` | | | `"initial_examination"` | | | `"final_examination"` | | -| `null` | | ### invoiceStage Examples @@ -84,7 +83,7 @@ Amount due `amountDue` -* is required +* is optional * Type: `number` diff --git a/docs/nsip-project.md b/docs/nsip-project.md index 08483abb..9fa2308a 100644 --- a/docs/nsip-project.md +++ b/docs/nsip-project.md @@ -3783,9 +3783,9 @@ Reference this group by using | Property | Type | Required | Nullable | Defined by | | :------------------------------------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [invoiceStage](#invoicestage) | `string` | Optional | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") | +| [invoiceStage](#invoicestage) | `string` | Required | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicestage.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceStage") | | [invoiceNumber](#invoicenumber) | `string` | Required | cannot be null | [NSIP Project](nsip-project-defs-invoice-properties-invoicenumber.md "nsip-project.schema.json#/$defs/invoice/properties/invoiceNumber") | -| [amountDue](#amountdue) | `number` | Required | can be null | [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") | +| [amountDue](#amountdue) | `number` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-amountdue.md "nsip-project.schema.json#/$defs/invoice/properties/amountDue") | | [paymentDueDate](#paymentduedate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-paymentduedate.md "nsip-project.schema.json#/$defs/invoice/properties/paymentDueDate") | | [invoicedDate](#invoiceddate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-invoiceddate.md "nsip-project.schema.json#/$defs/invoice/properties/invoicedDate") | | [paymentDate](#paymentdate) | `string` | Optional | can be null | [NSIP Project](nsip-project-defs-invoice-properties-paymentdate.md "nsip-project.schema.json#/$defs/invoice/properties/paymentDate") | @@ -3800,7 +3800,7 @@ Invoice stage `invoiceStage` -* is optional +* is required * Type: `string` @@ -3823,7 +3823,6 @@ Invoice stage | `"pre_examination"` | | | `"initial_examination"` | | | `"final_examination"` | | -| `null` | | #### invoiceStage Examples @@ -3861,7 +3860,7 @@ Amount due `amountDue` -* is required +* is optional * Type: `number` diff --git a/pins_data_model/models/model_appeal_document.py b/pins_data_model/models/model_appeal_document.py index 9beb7bd6..108c7791 100644 --- a/pins_data_model/models/model_appeal_document.py +++ b/pins_data_model/models/model_appeal_document.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-document.schema.json -# timestamp: 2026-03-18T15:24:21+00:00 +# timestamp: 2026-03-19T10:25:55+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_event.py b/pins_data_model/models/model_appeal_event.py index 3f778485..0e92d9a1 100644 --- a/pins_data_model/models/model_appeal_event.py +++ b/pins_data_model/models/model_appeal_event.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-event.schema.json -# timestamp: 2026-03-18T15:24:21+00:00 +# timestamp: 2026-03-19T10:25:55+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_event_estimate.py b/pins_data_model/models/model_appeal_event_estimate.py index 78c4aa53..c556e9da 100644 --- a/pins_data_model/models/model_appeal_event_estimate.py +++ b/pins_data_model/models/model_appeal_event_estimate.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-event-estimate.schema.json -# timestamp: 2026-03-18T15:24:21+00:00 +# timestamp: 2026-03-19T10:25:55+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_has.py b/pins_data_model/models/model_appeal_has.py index c4a90fda..2196257a 100644 --- a/pins_data_model/models/model_appeal_has.py +++ b/pins_data_model/models/model_appeal_has.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-has.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_representation.py b/pins_data_model/models/model_appeal_representation.py index 2f2aef16..b967ec8c 100644 --- a/pins_data_model/models/model_appeal_representation.py +++ b/pins_data_model/models/model_appeal_representation.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-representation.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_appeal_s78.py b/pins_data_model/models/model_appeal_s78.py index 97085466..8fb977b5 100644 --- a/pins_data_model/models/model_appeal_s78.py +++ b/pins_data_model/models/model_appeal_s78.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: appeal-s78.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_dart_response.py b/pins_data_model/models/model_dart_response.py index ca9a8384..9e786c16 100644 --- a/pins_data_model/models/model_dart_response.py +++ b/pins_data_model/models/model_dart_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: dart-response.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_entraid.py b/pins_data_model/models/model_entraid.py index 47682777..a4a6bd77 100644 --- a/pins_data_model/models/model_entraid.py +++ b/pins_data_model/models/model_entraid.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: entraid.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_folder.py b/pins_data_model/models/model_folder.py index 1e2179e3..129014c3 100644 --- a/pins_data_model/models/model_folder.py +++ b/pins_data_model/models/model_folder.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: folder.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_gettimesheets_response.py b/pins_data_model/models/model_gettimesheets_response.py index 01f21e64..ec88efc2 100644 --- a/pins_data_model/models/model_gettimesheets_response.py +++ b/pins_data_model/models/model_gettimesheets_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: gettimesheets-response.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_listed_building.py b/pins_data_model/models/model_listed_building.py index 5cb218da..851843dc 100644 --- a/pins_data_model/models/model_listed_building.py +++ b/pins_data_model/models/model_listed_building.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: listed-building.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_listed_buildings.py b/pins_data_model/models/model_listed_buildings.py index 1db48635..af27fd9a 100644 --- a/pins_data_model/models/model_listed_buildings.py +++ b/pins_data_model/models/model_listed_buildings.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: listed-buildings.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_document.py b/pins_data_model/models/model_nsip_document.py index 40def243..4560ce6f 100644 --- a/pins_data_model/models/model_nsip_document.py +++ b/pins_data_model/models/model_nsip_document.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-document.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_exam_timetable.py b/pins_data_model/models/model_nsip_exam_timetable.py index b5c43d15..a66f9da5 100644 --- a/pins_data_model/models/model_nsip_exam_timetable.py +++ b/pins_data_model/models/model_nsip_exam_timetable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-exam-timetable.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_invoice.py b/pins_data_model/models/model_nsip_invoice.py index 41b0ad7e..7d633c53 100644 --- a/pins_data_model/models/model_nsip_invoice.py +++ b/pins_data_model/models/model_nsip_invoice.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-invoice.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_meeting.py b/pins_data_model/models/model_nsip_meeting.py index e1b26c9e..cdc0d1db 100644 --- a/pins_data_model/models/model_nsip_meeting.py +++ b/pins_data_model/models/model_nsip_meeting.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-meeting.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_project.py b/pins_data_model/models/model_nsip_project.py index 28345e66..dbaad74e 100644 --- a/pins_data_model/models/model_nsip_project.py +++ b/pins_data_model/models/model_nsip_project.py @@ -1,13 +1,13 @@ # generated by datamodel-codegen: # filename: nsip-project.schema.json -# timestamp: 2026-03-18T15:24:23+00:00 +# timestamp: 2026-03-19T10:25:57+00:00 from __future__ import annotations from enum import Enum from typing import Any -from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field class Decision(Enum): @@ -342,7 +342,7 @@ class Meeting(BaseModel): """ -class InvoiceStageEnum(Enum): +class InvoiceStage(Enum): """ Invoice stage """ @@ -354,13 +354,6 @@ class InvoiceStageEnum(Enum): final_examination = "final_examination" -class InvoiceStage(RootModel[InvoiceStageEnum | None]): - root: InvoiceStageEnum | None = Field(None, examples=["pre_acceptance"]) - """ - Invoice stage - """ - - class Invoice(BaseModel): """ An invoice related to the project @@ -369,7 +362,7 @@ class Invoice(BaseModel): model_config = ConfigDict( extra="allow", ) - invoiceStage: InvoiceStage | None = Field(None, examples=["pre_acceptance"]) + invoiceStage: InvoiceStage = Field(..., examples=["pre_acceptance"]) """ Invoice stage """ @@ -377,7 +370,7 @@ class Invoice(BaseModel): """ Invoice number """ - amountDue: float | None = Field(..., examples=[500]) + amountDue: float | None = Field(None, examples=[500]) """ Amount due """ diff --git a/pins_data_model/models/model_nsip_project_update.py b/pins_data_model/models/model_nsip_project_update.py index 1f00120c..b8b9f3cc 100644 --- a/pins_data_model/models/model_nsip_project_update.py +++ b/pins_data_model/models/model_nsip_project_update.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-project-update.schema.json -# timestamp: 2026-03-18T15:24:22+00:00 +# timestamp: 2026-03-19T10:25:56+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_representation.py b/pins_data_model/models/model_nsip_representation.py index dd293ce2..09894560 100644 --- a/pins_data_model/models/model_nsip_representation.py +++ b/pins_data_model/models/model_nsip_representation.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-representation.schema.json -# timestamp: 2026-03-18T15:24:23+00:00 +# timestamp: 2026-03-19T10:25:57+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_nsip_subscription.py b/pins_data_model/models/model_nsip_subscription.py index 7e66eb8d..ff967584 100644 --- a/pins_data_model/models/model_nsip_subscription.py +++ b/pins_data_model/models/model_nsip_subscription.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: nsip-subscription.schema.json -# timestamp: 2026-03-18T15:24:23+00:00 +# timestamp: 2026-03-19T10:25:57+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_pins_inspector.py b/pins_data_model/models/model_pins_inspector.py index a3c54b25..8b3465aa 100644 --- a/pins_data_model/models/model_pins_inspector.py +++ b/pins_data_model/models/model_pins_inspector.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: pins-inspector.schema.json -# timestamp: 2026-03-18T15:24:23+00:00 +# timestamp: 2026-03-19T10:25:57+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_pins_lpa.py b/pins_data_model/models/model_pins_lpa.py index 881c6e2f..cc8b4809 100644 --- a/pins_data_model/models/model_pins_lpa.py +++ b/pins_data_model/models/model_pins_lpa.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: pins-lpa.schema.json -# timestamp: 2026-03-18T15:24:23+00:00 +# timestamp: 2026-03-19T10:25:57+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_s51_advice.py b/pins_data_model/models/model_s51_advice.py index 139493ca..a78cec4b 100644 --- a/pins_data_model/models/model_s51_advice.py +++ b/pins_data_model/models/model_s51_advice.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: s51-advice.schema.json -# timestamp: 2026-03-18T15:24:23+00:00 +# timestamp: 2026-03-19T10:25:57+00:00 from __future__ import annotations diff --git a/pins_data_model/models/model_service_user.py b/pins_data_model/models/model_service_user.py index c3981ec9..0fa07ccf 100644 --- a/pins_data_model/models/model_service_user.py +++ b/pins_data_model/models/model_service_user.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: service-user.schema.json -# timestamp: 2026-03-18T15:24:23+00:00 +# timestamp: 2026-03-19T10:25:57+00:00 from __future__ import annotations diff --git a/src/schemas.d.ts b/src/schemas.d.ts index 1e576e0c..320304a8 100644 --- a/src/schemas.d.ts +++ b/src/schemas.d.ts @@ -2986,13 +2986,7 @@ export interface Invoice { /** * Invoice stage */ - invoiceStage?: - | 'pre_acceptance' - | 'acceptance' - | 'pre_examination' - | 'initial_examination' - | 'final_examination' - | null; + invoiceStage: 'pre_acceptance' | 'acceptance' | 'pre_examination' | 'initial_examination' | 'final_examination'; /** * Invoice number */ @@ -3000,7 +2994,7 @@ export interface Invoice { /** * Amount due */ - amountDue: number | null; + amountDue?: number | null; /** * Payment due date */