@burdenoff/microfe-movethewheels 2026.920.3 → 2026.921.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CarbonFootprintPanel.js +1 -1
- package/dist/components/CustomerPicker.js +76 -65
- package/dist/components/DataTable.js +140 -139
- package/dist/components/DocumentsCard.js +14 -8
- package/dist/generated/wspace-types.d.ts +1043 -5
- package/dist/hooks/useAnalytics.js +21 -1
- package/dist/hooks/useCustomers.js +94 -78
- package/dist/hooks/useDebouncedValue.js +11 -0
- package/dist/hooks/useEntityDocuments.js +28 -18
- package/dist/hooks/useEpod.js +24 -17
- package/dist/hooks/useFleet.js +146 -125
- package/dist/hooks/useInventory.js +255 -186
- package/dist/hooks/useMultiModalShipments.js +35 -27
- package/dist/hooks/useOrders.js +73 -73
- package/dist/hooks/useRoutes.js +97 -75
- package/dist/hooks/useTracking.js +100 -88
- package/dist/movethewheels/components/CustomerPicker.d.ts +3 -1
- package/dist/movethewheels/components/DataTable.d.ts +5 -1
- package/dist/movethewheels/hooks/useCustomers.d.ts +0 -1
- package/dist/movethewheels/hooks/useDebouncedValue.d.ts +1 -0
- package/dist/movethewheels/hooks/useEntityDocuments.d.ts +2 -0
- package/dist/movethewheels/hooks/useEpod.d.ts +6 -1
- package/dist/movethewheels/hooks/useFleet.d.ts +49 -5
- package/dist/movethewheels/hooks/useInventory.d.ts +24 -17
- package/dist/movethewheels/hooks/useMultiModalShipments.d.ts +6 -1
- package/dist/movethewheels/hooks/useOrders.d.ts +33 -5
- package/dist/movethewheels/hooks/useRoutes.d.ts +2 -1
- package/dist/movethewheels/hooks/useTracking.d.ts +12 -11
- package/dist/movethewheels/types/index.d.ts +7 -5
- package/dist/pages/CreateOrderPage.js +207 -201
- package/dist/pages/CustomersPage.js +61 -54
- package/dist/pages/DeliveryCapturePage.js +131 -109
- package/dist/pages/DriversPage.js +100 -92
- package/dist/pages/InventoryPage.js +239 -236
- package/dist/pages/MultiModalShipmentPage.js +163 -130
- package/dist/pages/OrderDetailsPage.js +224 -208
- package/dist/pages/OrdersListPage.js +66 -60
- package/dist/pages/ProductDetailsPage.js +241 -200
- package/dist/pages/ProductsPage.js +59 -52
- package/dist/pages/RouteDetailsPage.js +343 -321
- package/dist/pages/RoutesPage.js +55 -48
- package/dist/pages/VehiclesPage.js +63 -56
- package/dist/pages/WarehousesPage.js +60 -53
- package/package.json +1 -1
- package/src/generated/wspace-types.ts +1188 -5
- package/src/movethewheels/components/CarbonFootprintPanel.tsx +0 -1
- package/src/movethewheels/components/CustomerPicker.tsx +14 -0
- package/src/movethewheels/components/DataTable.tsx +34 -18
- package/src/movethewheels/components/DocumentsCard.tsx +6 -1
- package/src/movethewheels/components/maps/leaflet-setup.ts +1 -8
- package/src/movethewheels/hooks/useAnalytics.ts +27 -0
- package/src/movethewheels/hooks/useCustomers.ts +64 -24
- package/src/movethewheels/hooks/useDebouncedValue.ts +12 -0
- package/src/movethewheels/hooks/useEntityDocuments.ts +43 -25
- package/src/movethewheels/hooks/useEpod.ts +14 -7
- package/src/movethewheels/hooks/useFleet.ts +58 -37
- package/src/movethewheels/hooks/useFleetIntelligence.ts +1 -4
- package/src/movethewheels/hooks/useInventory.ts +211 -90
- package/src/movethewheels/hooks/useMultiModalShipments.ts +15 -11
- package/src/movethewheels/hooks/useOrders.ts +13 -14
- package/src/movethewheels/hooks/useRoutes.ts +80 -23
- package/src/movethewheels/hooks/useTracking.ts +130 -98
- package/src/movethewheels/pages/CreateOrderPage.tsx +9 -1
- package/src/movethewheels/pages/CustomersPage.tsx +11 -1
- package/src/movethewheels/pages/DeliveryCapturePage.tsx +31 -1
- package/src/movethewheels/pages/DriversPage.tsx +24 -12
- package/src/movethewheels/pages/InventoryPage.tsx +57 -32
- package/src/movethewheels/pages/MultiModalShipmentPage.tsx +52 -3
- package/src/movethewheels/pages/OrderDetailsPage.tsx +17 -1
- package/src/movethewheels/pages/OrdersListPage.tsx +20 -3
- package/src/movethewheels/pages/ProductDetailsPage.tsx +52 -3
- package/src/movethewheels/pages/ProductsPage.tsx +11 -1
- package/src/movethewheels/pages/RouteDetailsPage.tsx +35 -5
- package/src/movethewheels/pages/RoutesPage.tsx +11 -1
- package/src/movethewheels/pages/VehiclesPage.tsx +19 -2
- package/src/movethewheels/pages/WarehousesPage.tsx +11 -1
- package/src/movethewheels/types/index.ts +7 -5
|
@@ -1994,6 +1994,64 @@ export declare enum AgentVisibility {
|
|
|
1994
1994
|
Public = "PUBLIC",
|
|
1995
1995
|
Workspace = "WORKSPACE"
|
|
1996
1996
|
}
|
|
1997
|
+
/** A decision the engine proposed, with the evidence and rails behind it. */
|
|
1998
|
+
export type AgronomyDecision = {
|
|
1999
|
+
__typename?: 'AgronomyDecision';
|
|
2000
|
+
/** Why a rail blocked it, in words a farmer can act on. Null unless BLOCKED. */
|
|
2001
|
+
blockedReason?: Maybe<Scalars['String']['output']>;
|
|
2002
|
+
/** 0..1, or null when nothing honest could be reported. */
|
|
2003
|
+
confidence?: Maybe<Scalars['Float']['output']>;
|
|
2004
|
+
createdAt: Scalars['String']['output'];
|
|
2005
|
+
decidedAt?: Maybe<Scalars['String']['output']>;
|
|
2006
|
+
decidedBy?: Maybe<Scalars['String']['output']>;
|
|
2007
|
+
/** One of: IRRIGATION | TREATMENT. */
|
|
2008
|
+
decisionType: Scalars['String']['output'];
|
|
2009
|
+
fieldId?: Maybe<Scalars['ID']['output']>;
|
|
2010
|
+
id: Scalars['ID']['output'];
|
|
2011
|
+
/** The real records this rests on — probe code, reading timestamp, scan id. Never a summary: every card must cite something the farmer can go and look at. */
|
|
2012
|
+
inputs?: Maybe<Scalars['JSON']['output']>;
|
|
2013
|
+
modelName?: Maybe<Scalars['String']['output']>;
|
|
2014
|
+
modelProvider?: Maybe<Scalars['String']['output']>;
|
|
2015
|
+
plantScanId?: Maybe<Scalars['ID']['output']>;
|
|
2016
|
+
railChecks: Array<AgronomyRailCheck>;
|
|
2017
|
+
rationale: Scalars['String']['output'];
|
|
2018
|
+
/** Recommended irrigation depth in mm. Null for non-irrigation decisions, and zero when the recommendation is to hold off. */
|
|
2019
|
+
recommendedMm?: Maybe<Scalars['Int']['output']>;
|
|
2020
|
+
/** MODEL | HEURISTIC — whether a model actually produced this wording. */
|
|
2021
|
+
source: Scalars['String']['output'];
|
|
2022
|
+
/** One of: PROPOSED | ACCEPTED | REJECTED | BLOCKED. BLOCKED is a compliance rail's verdict, not a suggestion — it can never be accepted. If the rule is wrong, the fix is to correct the substance rulebook, which leaves a record. */
|
|
2023
|
+
status: Scalars['String']['output'];
|
|
2024
|
+
/** The field or plant scan this is about. */
|
|
2025
|
+
subjectId: Scalars['ID']['output'];
|
|
2026
|
+
/** FIELD | PLANT_SCAN. */
|
|
2027
|
+
subjectType: Scalars['String']['output'];
|
|
2028
|
+
title: Scalars['String']['output'];
|
|
2029
|
+
updatedAt: Scalars['String']['output'];
|
|
2030
|
+
};
|
|
2031
|
+
export type AgronomyDecisionFilterInput = {
|
|
2032
|
+
/** IRRIGATION | TREATMENT. */
|
|
2033
|
+
decisionType?: InputMaybe<Scalars['String']['input']>;
|
|
2034
|
+
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
2035
|
+
/** PROPOSED | ACCEPTED | REJECTED | BLOCKED. */
|
|
2036
|
+
status?: InputMaybe<Scalars['String']['input']>;
|
|
2037
|
+
};
|
|
2038
|
+
/** Result of a sweep. */
|
|
2039
|
+
export type AgronomyDecisionSweepResult = {
|
|
2040
|
+
__typename?: 'AgronomyDecisionSweepResult';
|
|
2041
|
+
decisions: Array<AgronomyDecision>;
|
|
2042
|
+
/** Subjects the sweep did not reach, so "no proposals" is never confused with "not looked at". */
|
|
2043
|
+
skipped: Scalars['Int']['output'];
|
|
2044
|
+
skippedReason?: Maybe<Scalars['String']['output']>;
|
|
2045
|
+
};
|
|
2046
|
+
/** One compliance rail and what it concluded (HB-UC-19). `NOT_APPLICABLE` is recorded rather than omitted: on a card read six months from now, "this rail does not apply here" and "nobody remembered to run it" look identical, and only one of them is safe. */
|
|
2047
|
+
export type AgronomyRailCheck = {
|
|
2048
|
+
__typename?: 'AgronomyRailCheck';
|
|
2049
|
+
detail: Scalars['String']['output'];
|
|
2050
|
+
/** One of: PASS | BLOCKED | NOT_APPLICABLE. */
|
|
2051
|
+
outcome: Scalars['String']['output'];
|
|
2052
|
+
/** Rail identifier, e.g. PROHIBITED_SUBSTANCE | MEDICATION_WITHDRAWAL. */
|
|
2053
|
+
rail: Scalars['String']['output'];
|
|
2054
|
+
};
|
|
1997
2055
|
export type AiContext = {
|
|
1998
2056
|
__typename?: 'AiContext';
|
|
1999
2057
|
content: Scalars['String']['output'];
|
|
@@ -4258,6 +4316,8 @@ export type Auction = {
|
|
|
4258
4316
|
export type Audit = {
|
|
4259
4317
|
__typename?: 'Audit';
|
|
4260
4318
|
auditor: Scalars['String']['output'];
|
|
4319
|
+
/** The certification this audit was carried out against, or null when it was not carried out against one (BOFF-6107). An audit linked here with open critical findings blocks that certificate from being marked Active. */
|
|
4320
|
+
certificationId?: Maybe<Scalars['ID']['output']>;
|
|
4261
4321
|
completedDate?: Maybe<Scalars['String']['output']>;
|
|
4262
4322
|
criticalFindings: Scalars['Int']['output'];
|
|
4263
4323
|
findings: Scalars['Int']['output'];
|
|
@@ -10056,6 +10116,17 @@ export type ComplianceDocument = {
|
|
|
10056
10116
|
type: Scalars['String']['output'];
|
|
10057
10117
|
uploadedDate: Scalars['String']['output'];
|
|
10058
10118
|
};
|
|
10119
|
+
/** BOFF-6043 — a rendered audit document, returned inline as base64. Same shape as `HealthyBowlAccountingExport`: the client decodes and downloads, or hands the bytes to Files to archive. Inline rather than a signed URL because the bytes are built per request from live rows — there is nothing to store, and a stored copy would go stale the moment a checklist moved. */
|
|
10120
|
+
export type ComplianceExportFile = {
|
|
10121
|
+
__typename?: 'ComplianceExportFile';
|
|
10122
|
+
byteSize: Scalars['Int']['output'];
|
|
10123
|
+
/** Base64-encoded file bytes. */
|
|
10124
|
+
contentBase64: Scalars['String']['output'];
|
|
10125
|
+
filename: Scalars['String']['output'];
|
|
10126
|
+
/** PDF */
|
|
10127
|
+
format: Scalars['String']['output'];
|
|
10128
|
+
mimeType: Scalars['String']['output'];
|
|
10129
|
+
};
|
|
10059
10130
|
/** A compliance finding: a domain observation, not a notification. Alerts are dispatched via the platform notification service. */
|
|
10060
10131
|
export type ComplianceFlag = {
|
|
10061
10132
|
__typename?: 'ComplianceFlag';
|
|
@@ -10399,6 +10470,14 @@ export type ConsoleValidationResult = {
|
|
|
10399
10470
|
errors: Array<ConsoleValidationError>;
|
|
10400
10471
|
valid: Scalars['Boolean']['output'];
|
|
10401
10472
|
};
|
|
10473
|
+
/** A bookable appointment window (BOFF-6030). */
|
|
10474
|
+
export type ConsultSlot = {
|
|
10475
|
+
__typename?: 'ConsultSlot';
|
|
10476
|
+
/** False when someone already holds this time. Taken slots are returned rather than omitted: a picker that hides 10:00 looks like a consultant who does not work then, where a disabled 10:00 says someone else got there first. */
|
|
10477
|
+
available: Scalars['Boolean']['output'];
|
|
10478
|
+
end: Scalars['String']['output'];
|
|
10479
|
+
start: Scalars['String']['output'];
|
|
10480
|
+
};
|
|
10402
10481
|
export type Consultation = {
|
|
10403
10482
|
__typename?: 'Consultation';
|
|
10404
10483
|
consultantId: Scalars['String']['output'];
|
|
@@ -10409,7 +10488,11 @@ export type Consultation = {
|
|
|
10409
10488
|
id: Scalars['ID']['output'];
|
|
10410
10489
|
mode: Scalars['String']['output'];
|
|
10411
10490
|
notes?: Maybe<Scalars['String']['output']>;
|
|
10491
|
+
/** The requested day. Kept alongside `slotStart`: consultations booked before BOFF-6030 carry a day and no time, and must keep rendering. */
|
|
10412
10492
|
requestedDate: Scalars['String']['output'];
|
|
10493
|
+
slotEnd?: Maybe<Scalars['String']['output']>;
|
|
10494
|
+
/** BOFF-6030 — the agreed appointment window. Null on a consultation booked before slots existed. */
|
|
10495
|
+
slotStart?: Maybe<Scalars['String']['output']>;
|
|
10413
10496
|
status: ConsultationStatus;
|
|
10414
10497
|
topic: Scalars['String']['output'];
|
|
10415
10498
|
};
|
|
@@ -12280,6 +12363,8 @@ export type CreateAssetTransactionInput = {
|
|
|
12280
12363
|
};
|
|
12281
12364
|
export type CreateAuditInput = {
|
|
12282
12365
|
auditor: Scalars['String']['input'];
|
|
12366
|
+
/** The certification this audit is being carried out against, if any. An id belonging to another workspace is stored as null rather than rejected — the audit itself is still valid, it is simply not attributable to a certificate this workspace owns. */
|
|
12367
|
+
certificationId?: InputMaybe<Scalars['ID']['input']>;
|
|
12283
12368
|
context: ContextInput;
|
|
12284
12369
|
scheduledDate: Scalars['String']['input'];
|
|
12285
12370
|
title: Scalars['String']['input'];
|
|
@@ -12750,6 +12835,8 @@ export type CreateConsultationInput = {
|
|
|
12750
12835
|
/** BOFF-6081 — link this booking back to an AI plant scan (the INCONCLUSIVE hand-off). The scan's context is stamped with the created consultation id. */
|
|
12751
12836
|
plantScanId?: InputMaybe<Scalars['ID']['input']>;
|
|
12752
12837
|
requestedDate: Scalars['String']['input'];
|
|
12838
|
+
/** BOFF-6030 — ISO instant for the chosen slot. Optional; `slotEnd` is derived from the rule. */
|
|
12839
|
+
slotStart?: InputMaybe<Scalars['String']['input']>;
|
|
12753
12840
|
topic: Scalars['String']['input'];
|
|
12754
12841
|
};
|
|
12755
12842
|
export type CreateConversationInput = {
|
|
@@ -13172,6 +13259,19 @@ export type CreateDigitalTwinInput = {
|
|
|
13172
13259
|
modelRef: Scalars['String']['input'];
|
|
13173
13260
|
properties?: InputMaybe<Scalars['JSONObject']['input']>;
|
|
13174
13261
|
};
|
|
13262
|
+
/** Input for createDisposableWorkspace (BOFF-6560, service-actor-only). No gateway-injected tenant/org/actor context exists for an M2M caller, so every identity field is explicit here — mirrors SyncFromGlobalInput's service-to-service shape rather than CreateWorkspaceInput's user-session one. */
|
|
13263
|
+
export type CreateDisposableWorkspaceInput = {
|
|
13264
|
+
/** Display name of the disposable workspace */
|
|
13265
|
+
name: Scalars['String']['input'];
|
|
13266
|
+
/** Organization ID this disposable workspace belongs to */
|
|
13267
|
+
orgId: Scalars['ID']['input'];
|
|
13268
|
+
/** Owner user ID for the disposable workspace (the operator/service identity responsible for its lifecycle, not necessarily an end-user) */
|
|
13269
|
+
ownerId: Scalars['ID']['input'];
|
|
13270
|
+
/** Tenant ID this disposable workspace belongs to */
|
|
13271
|
+
tenantId: Scalars['ID']['input'];
|
|
13272
|
+
/** Type of workspace (defaults to WORKSPACE) */
|
|
13273
|
+
type?: InputMaybe<WorkspaceType>;
|
|
13274
|
+
};
|
|
13175
13275
|
export type CreateDriverInput = {
|
|
13176
13276
|
certifications?: InputMaybe<Scalars['JSON']['input']>;
|
|
13177
13277
|
context?: InputMaybe<ContextInput>;
|
|
@@ -14232,6 +14332,13 @@ export type CreateHealthyBowlCostCenterInput = {
|
|
|
14232
14332
|
yieldQuantity?: InputMaybe<Scalars['Float']['input']>;
|
|
14233
14333
|
yieldUnit?: InputMaybe<Scalars['String']['input']>;
|
|
14234
14334
|
};
|
|
14335
|
+
export type CreateHealthyBowlCrewInput = {
|
|
14336
|
+
context: ContextInput;
|
|
14337
|
+
isActive?: InputMaybe<Scalars['Boolean']['input']>;
|
|
14338
|
+
leadWorkerId?: InputMaybe<Scalars['ID']['input']>;
|
|
14339
|
+
name: Scalars['String']['input'];
|
|
14340
|
+
workerIds?: InputMaybe<Array<Scalars['ID']['input']>>;
|
|
14341
|
+
};
|
|
14235
14342
|
export type CreateHealthyBowlCsaPickupLocationInput = {
|
|
14236
14343
|
/** Same JSON shape as CsaMembership.deliveryAddress. */
|
|
14237
14344
|
address?: InputMaybe<Scalars['JSON']['input']>;
|
|
@@ -14278,9 +14385,15 @@ export type CreateHealthyBowlDiseaseWarningRuleInput = {
|
|
|
14278
14385
|
status?: InputMaybe<Scalars['String']['input']>;
|
|
14279
14386
|
};
|
|
14280
14387
|
export type CreateHealthyBowlFarmRecommendationInput = {
|
|
14388
|
+
/** BOFF-3676 — HUMAN (default) or MODEL. Omitting it means HUMAN: a caller that does not say otherwise IS one, and inferring MODEL would attach a machine's authority to a person's advice. */
|
|
14389
|
+
authorKind?: InputMaybe<Scalars['String']['input']>;
|
|
14390
|
+
confidence?: InputMaybe<Scalars['Float']['input']>;
|
|
14281
14391
|
detail: Scalars['String']['input'];
|
|
14282
14392
|
domain: Scalars['String']['input'];
|
|
14393
|
+
/** Only meaningful when authorKind is MODEL; ignored otherwise. */
|
|
14394
|
+
modelName?: InputMaybe<Scalars['String']['input']>;
|
|
14283
14395
|
priority?: InputMaybe<HealthyBowlFarmRecommendationPriority>;
|
|
14396
|
+
rationale?: InputMaybe<Scalars['String']['input']>;
|
|
14284
14397
|
title: Scalars['String']['input'];
|
|
14285
14398
|
/** The CLIENT workspace this recommendation is written onto (the consultant must hold an active assignment to it). */
|
|
14286
14399
|
workspaceId: Scalars['ID']['input'];
|
|
@@ -14327,6 +14440,7 @@ export type CreateHealthyBowlInputPlanInput = {
|
|
|
14327
14440
|
season: Scalars['String']['input'];
|
|
14328
14441
|
};
|
|
14329
14442
|
export type CreateHealthyBowlIrrigationAutomationInput = {
|
|
14443
|
+
autoTaskEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
|
14330
14444
|
context: ContextInput;
|
|
14331
14445
|
notifyInApp?: InputMaybe<Scalars['Boolean']['input']>;
|
|
14332
14446
|
rainProbThreshold?: InputMaybe<Scalars['Int']['input']>;
|
|
@@ -14354,6 +14468,15 @@ export type CreateHealthyBowlLedgerAccountInput = {
|
|
|
14354
14468
|
name: Scalars['String']['input'];
|
|
14355
14469
|
sortOrder?: InputMaybe<Scalars['Int']['input']>;
|
|
14356
14470
|
};
|
|
14471
|
+
export type CreateHealthyBowlLoanMilestoneInput = {
|
|
14472
|
+
context: ContextInput;
|
|
14473
|
+
description?: InputMaybe<Scalars['String']['input']>;
|
|
14474
|
+
/** HARVEST or PLANTING_ACTIVITY. Optional at creation; required by the time it is released. */
|
|
14475
|
+
evidenceType?: InputMaybe<Scalars['String']['input']>;
|
|
14476
|
+
label: Scalars['String']['input'];
|
|
14477
|
+
loanId: Scalars['ID']['input'];
|
|
14478
|
+
releaseAmount: Scalars['Float']['input'];
|
|
14479
|
+
};
|
|
14357
14480
|
export type CreateHealthyBowlMapFeatureInput = {
|
|
14358
14481
|
color?: InputMaybe<Scalars['String']['input']>;
|
|
14359
14482
|
context: ContextInput;
|
|
@@ -14483,6 +14606,7 @@ export type CreateHealthyBowlStorageLocationInput = {
|
|
|
14483
14606
|
export type CreateHealthyBowlSuccessionPlanInput = {
|
|
14484
14607
|
/** Optional loose link to a Bed (no FK). */
|
|
14485
14608
|
bedId?: InputMaybe<Scalars['ID']['input']>;
|
|
14609
|
+
bedWidthM?: InputMaybe<Scalars['Float']['input']>;
|
|
14486
14610
|
context: ContextInput;
|
|
14487
14611
|
/** Number of successions to generate (>= 1). */
|
|
14488
14612
|
count: Scalars['Int']['input'];
|
|
@@ -14492,9 +14616,13 @@ export type CreateHealthyBowlSuccessionPlanInput = {
|
|
|
14492
14616
|
/** Days between successive sowings. */
|
|
14493
14617
|
intervalDays: Scalars['Int']['input'];
|
|
14494
14618
|
notes?: InputMaybe<Scalars['String']['input']>;
|
|
14619
|
+
pathWidthM?: InputMaybe<Scalars['Float']['input']>;
|
|
14495
14620
|
/** Optional loose link to a PlantCatalog entry (no FK). */
|
|
14496
14621
|
plantCatalogId?: InputMaybe<Scalars['ID']['input']>;
|
|
14622
|
+
/** BOFF-6100 — geometry supplied by the succession form; server derives one set of figures for every child. */
|
|
14623
|
+
plantSpacingCm?: InputMaybe<Scalars['Float']['input']>;
|
|
14497
14624
|
plantsNeeded?: InputMaybe<Scalars['Int']['input']>;
|
|
14625
|
+
rowSpacingCm?: InputMaybe<Scalars['Float']['input']>;
|
|
14498
14626
|
/** Growing season. Must be one of: KHARIF, RABI, ZAID, PERENNIAL (case-insensitive). */
|
|
14499
14627
|
season?: InputMaybe<Scalars['String']['input']>;
|
|
14500
14628
|
seedGrams?: InputMaybe<Scalars['Float']['input']>;
|
|
@@ -14567,6 +14695,18 @@ export type CreateHealthyBowlWholesaleOrderInput = {
|
|
|
14567
14695
|
productName: Scalars['String']['input'];
|
|
14568
14696
|
quantityKg: Scalars['Float']['input'];
|
|
14569
14697
|
};
|
|
14698
|
+
export type CreateHealthyBowlWorkerInput = {
|
|
14699
|
+
context: ContextInput;
|
|
14700
|
+
dailyWage?: InputMaybe<Scalars['Float']['input']>;
|
|
14701
|
+
employmentType?: InputMaybe<Scalars['String']['input']>;
|
|
14702
|
+
hourlyRate?: InputMaybe<Scalars['Float']['input']>;
|
|
14703
|
+
isActive?: InputMaybe<Scalars['Boolean']['input']>;
|
|
14704
|
+
linkedActorId?: InputMaybe<Scalars['String']['input']>;
|
|
14705
|
+
name: Scalars['String']['input'];
|
|
14706
|
+
phone?: InputMaybe<Scalars['String']['input']>;
|
|
14707
|
+
piecePrice?: InputMaybe<Scalars['Float']['input']>;
|
|
14708
|
+
skills?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
14709
|
+
};
|
|
14570
14710
|
export type CreateIcsGroupInput = {
|
|
14571
14711
|
certificationId?: InputMaybe<Scalars['ID']['input']>;
|
|
14572
14712
|
/** Unique within the workspace. */
|
|
@@ -14925,23 +15065,30 @@ export type CreatePipelineStageInput = {
|
|
|
14925
15065
|
export type CreatePlantingPlanInput = {
|
|
14926
15066
|
/** Optional loose link to a Bed (no FK). */
|
|
14927
15067
|
bedId?: InputMaybe<Scalars['ID']['input']>;
|
|
15068
|
+
bedWidthM?: InputMaybe<Scalars['Float']['input']>;
|
|
14928
15069
|
context: ContextInput;
|
|
14929
15070
|
cropId?: InputMaybe<Scalars['ID']['input']>;
|
|
15071
|
+
/** BOFF-6100 — caller fallback only for non-bed/no-area fields; server-derived otherwise. */
|
|
15072
|
+
density?: InputMaybe<Scalars['Float']['input']>;
|
|
14930
15073
|
endDate?: InputMaybe<Scalars['String']['input']>;
|
|
14931
15074
|
expectedYield?: InputMaybe<Scalars['Float']['input']>;
|
|
14932
15075
|
fertilizers?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
14933
15076
|
fieldId: Scalars['ID']['input'];
|
|
15077
|
+
pathWidthM?: InputMaybe<Scalars['Float']['input']>;
|
|
14934
15078
|
/** Optional loose link to a PlantCatalog entry (no FK). */
|
|
14935
15079
|
plantCatalogId?: InputMaybe<Scalars['ID']['input']>;
|
|
14936
|
-
/**
|
|
15080
|
+
/** BOFF-6100 — bed geometry, so the server can reproduce the numbers the farmer saw on screen. Without these the server would re-derive against the defaults (1.2m beds, 0.45m paths) and quietly disagree with a form where the farmer had typed something else. */
|
|
15081
|
+
plantSpacingCm?: InputMaybe<Scalars['Float']['input']>;
|
|
15082
|
+
/** I-5 seed-rate result — total plants required. BOFF-6100: the server now derives this from the field and spacing and **overrides** what is sent, wherever it can derive it. The value here is still honoured for a field the bed calculators do not model (a greenhouse, an orchard) — there, a hand-entered figure is the only figure anyone has. */
|
|
14937
15083
|
plantsNeeded?: InputMaybe<Scalars['Int']['input']>;
|
|
14938
15084
|
priority?: InputMaybe<Scalars['String']['input']>;
|
|
15085
|
+
rowSpacingCm?: InputMaybe<Scalars['Float']['input']>;
|
|
14939
15086
|
/** Growing season. Must be one of: KHARIF, RABI, ZAID, PERENNIAL (case-insensitive). */
|
|
14940
15087
|
season: Scalars['String']['input'];
|
|
14941
|
-
/** I-5 seed-rate result — grams of seed required. */
|
|
15088
|
+
/** I-5 seed-rate result — grams of seed required. Server-derived where possible; see plantsNeeded. */
|
|
14942
15089
|
seedGrams?: InputMaybe<Scalars['Float']['input']>;
|
|
14943
15090
|
seedRequired?: InputMaybe<Scalars['Float']['input']>;
|
|
14944
|
-
/** I-5 seed-rate result — seedlings/transplants to raise. */
|
|
15091
|
+
/** I-5 seed-rate result — seedlings/transplants to raise. Server-derived where possible. */
|
|
14945
15092
|
seedlingsToRaise?: InputMaybe<Scalars['Int']['input']>;
|
|
14946
15093
|
/** Sow/nursery-start date (ISO); distinct from the transplant startDate. */
|
|
14947
15094
|
sowDate?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -15263,6 +15410,8 @@ export type CreateSchemeApplicationInput = {
|
|
|
15263
15410
|
context: ContextInput;
|
|
15264
15411
|
/** Must be true for a new submission; omitted values are rejected server-side. */
|
|
15265
15412
|
declarationAccepted?: InputMaybe<Scalars['Boolean']['input']>;
|
|
15413
|
+
/** Supporting evidence. When a scheme publishes `requiredDocuments`, attached evidence must cover that selected checklist; otherwise the default ownership, government ID and bank-detail slots apply. At most one document per slot (the last wins) and at most 12 raw entries are accepted. */
|
|
15414
|
+
documents?: InputMaybe<Array<SchemeApplicationDocumentInput>>;
|
|
15266
15415
|
/** Farm identity is validated server-side; whitespace-only or omitted values are rejected. */
|
|
15267
15416
|
farmName?: InputMaybe<Scalars['String']['input']>;
|
|
15268
15417
|
notes?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -15750,10 +15899,13 @@ export type CreateVehicleInput = {
|
|
|
15750
15899
|
fuelEfficiencyLPer100Km?: InputMaybe<Scalars['Float']['input']>;
|
|
15751
15900
|
fuelLevel?: InputMaybe<Scalars['Float']['input']>;
|
|
15752
15901
|
fuelType?: InputMaybe<FuelType>;
|
|
15902
|
+
lastServiceDate?: InputMaybe<Scalars['DateTime']['input']>;
|
|
15753
15903
|
licensePlate?: InputMaybe<Scalars['String']['input']>;
|
|
15754
15904
|
make?: InputMaybe<Scalars['String']['input']>;
|
|
15755
15905
|
mileage?: InputMaybe<Scalars['Float']['input']>;
|
|
15756
15906
|
model?: InputMaybe<Scalars['String']['input']>;
|
|
15907
|
+
nextServiceDueDate?: InputMaybe<Scalars['DateTime']['input']>;
|
|
15908
|
+
nextServiceDueMileage?: InputMaybe<Scalars['Float']['input']>;
|
|
15757
15909
|
ownershipType?: InputMaybe<Scalars['String']['input']>;
|
|
15758
15910
|
status?: InputMaybe<VehicleStatus>;
|
|
15759
15911
|
type: VehicleType;
|
|
@@ -16865,6 +17017,12 @@ export type CsaDelivery = {
|
|
|
16865
17017
|
notes?: Maybe<Scalars['String']['output']>;
|
|
16866
17018
|
notificationSentAt?: Maybe<Scalars['String']['output']>;
|
|
16867
17019
|
orderId?: Maybe<Scalars['ID']['output']>;
|
|
17020
|
+
/** When the linked Order settled, null until paid. */
|
|
17021
|
+
paidAt?: Maybe<Scalars['String']['output']>;
|
|
17022
|
+
/** Gateway-verified payment reference, null until the linked Order settles. */
|
|
17023
|
+
paymentReference?: Maybe<Scalars['String']['output']>;
|
|
17024
|
+
/** PENDING | PAID | FAILED — mirrored from the linked Order; the UI never writes this. */
|
|
17025
|
+
paymentStatus?: Maybe<Scalars['String']['output']>;
|
|
16868
17026
|
/** The location this box went to. Null for a home delivery. */
|
|
16869
17027
|
pickupLocationId?: Maybe<Scalars['ID']['output']>;
|
|
16870
17028
|
/** The stand's name AS IT WAS. Names get re-used between seasons, so a manifest reprinted for a past date and keyed on the live name could label the box with a different stand. */
|
|
@@ -18100,6 +18258,18 @@ export type DeadLetterQueueConnection = {
|
|
|
18100
18258
|
nextCursor?: Maybe<Scalars['String']['output']>;
|
|
18101
18259
|
total: Scalars['Int']['output'];
|
|
18102
18260
|
};
|
|
18261
|
+
export type DecideAgronomyDecisionInput = {
|
|
18262
|
+
context: ContextInput;
|
|
18263
|
+
id: Scalars['ID']['input'];
|
|
18264
|
+
/** ACCEPTED | REJECTED. */
|
|
18265
|
+
verdict: Scalars['String']['input'];
|
|
18266
|
+
};
|
|
18267
|
+
export type DecideHealthyBowlFarmRecommendationInput = {
|
|
18268
|
+
context: ContextInput;
|
|
18269
|
+
/** ACCEPTED | REJECTED | ESCALATED */
|
|
18270
|
+
decision: Scalars['String']['input'];
|
|
18271
|
+
id: Scalars['ID']['input'];
|
|
18272
|
+
};
|
|
18103
18273
|
/** Returned when explicitly decrypting a secret value. */
|
|
18104
18274
|
export type DecryptedSecret = {
|
|
18105
18275
|
__typename?: 'DecryptedSecret';
|
|
@@ -18153,6 +18323,7 @@ export type DeliveryJobFilterInput = {
|
|
|
18153
18323
|
search?: InputMaybe<Scalars['String']['input']>;
|
|
18154
18324
|
status?: InputMaybe<DeliveryJobStatus>;
|
|
18155
18325
|
storeOrderId?: InputMaybe<Scalars['ID']['input']>;
|
|
18326
|
+
unassigned?: InputMaybe<Scalars['Boolean']['input']>;
|
|
18156
18327
|
vehicleId?: InputMaybe<Scalars['ID']['input']>;
|
|
18157
18328
|
};
|
|
18158
18329
|
export declare enum DeliveryJobStatus {
|
|
@@ -18428,6 +18599,12 @@ export type DispatchHealthyBowlAuctionSweepInput = {
|
|
|
18428
18599
|
dispatchSecret: Scalars['String']['input'];
|
|
18429
18600
|
workspaceId: Scalars['ID']['input'];
|
|
18430
18601
|
};
|
|
18602
|
+
/** Authorization envelope for the anonymous consultation-reminder sweep callback. */
|
|
18603
|
+
export type DispatchHealthyBowlConsultReminderSweepInput = {
|
|
18604
|
+
/** Domain-separated HMAC-SHA256(INTERNAL_SERVICE_TOKEN, `consult-reminder:${workspaceId}`). */
|
|
18605
|
+
dispatchSecret: Scalars['String']['input'];
|
|
18606
|
+
workspaceId: Scalars['ID']['input'];
|
|
18607
|
+
};
|
|
18431
18608
|
export type DispatchHealthyBowlCsaNotificationInput = {
|
|
18432
18609
|
/** CsaDelivery id. */
|
|
18433
18610
|
csaDeliveryId: Scalars['ID']['input'];
|
|
@@ -18529,6 +18706,7 @@ export type DraftMessage = {
|
|
|
18529
18706
|
userId: Scalars['ID']['output'];
|
|
18530
18707
|
};
|
|
18531
18708
|
export type DriverFilterInput = {
|
|
18709
|
+
licenseClass?: InputMaybe<Scalars['String']['input']>;
|
|
18532
18710
|
search?: InputMaybe<Scalars['String']['input']>;
|
|
18533
18711
|
status?: InputMaybe<DriverStatus>;
|
|
18534
18712
|
vehicleId?: InputMaybe<Scalars['ID']['input']>;
|
|
@@ -21810,6 +21988,8 @@ export type File = {
|
|
|
21810
21988
|
marketingWidth?: Maybe<Scalars['Int']['output']>;
|
|
21811
21989
|
mimeType: Scalars['String']['output'];
|
|
21812
21990
|
name: Scalars['String']['output'];
|
|
21991
|
+
/** Permanent, non-expiring CDN URL — only set when visibility is PUBLIC. Unlike downloadUrl (a fresh presigned URL on every query, ~1 hour TTL), this is safe to persist and embed permanently (e.g. a product catalog image), since it never expires and needs no re-signing. */
|
|
21992
|
+
publicUrl?: Maybe<Scalars['String']['output']>;
|
|
21813
21993
|
s3Bucket: Scalars['String']['output'];
|
|
21814
21994
|
s3Key: Scalars['String']['output'];
|
|
21815
21995
|
sha256Hash?: Maybe<Scalars['String']['output']>;
|
|
@@ -30735,6 +30915,24 @@ export type HealthyBowlAnimalGroup = {
|
|
|
30735
30915
|
smartRule?: Maybe<Scalars['JSON']['output']>;
|
|
30736
30916
|
updatedAt: Scalars['String']['output'];
|
|
30737
30917
|
};
|
|
30918
|
+
/** An animal's pedigree: ancestors walked up, offspring walked down. Both walks are breadth-first over `Animal.damId` / `Animal.sireId`, which are the only parentage edges that exist — `BreedingRecord` records offspring COUNTS and never points at a child row. */
|
|
30919
|
+
export type HealthyBowlAnimalPedigree = {
|
|
30920
|
+
__typename?: 'HealthyBowlAnimalPedigree';
|
|
30921
|
+
/** Ancestor depth actually applied after clamping (1..8). */
|
|
30922
|
+
ancestorDepth: Scalars['Int']['output'];
|
|
30923
|
+
/** Ancestors, nearest generation first; within a generation, ordered by `tagNumber`. Grouping dam before sire is the client's job — the server does not promise that order. */
|
|
30924
|
+
ancestors: Array<HealthyBowlPedigreeNode>;
|
|
30925
|
+
/** True when the walk re-entered an animal it had already visited. Reachable today, not hypothetical: `validateParentRef` compares birth order only when BOTH animals carry a `dateOfBirth`, and that column is nullable — so A-is-B's-dam and B-is-A's-dam both save cleanly on undated rows. The walk stops that branch rather than looping forever. */
|
|
30926
|
+
cycleDetected: Scalars['Boolean']['output'];
|
|
30927
|
+
/** Recorded offspring, oldest first. */
|
|
30928
|
+
offspring: Array<HealthyBowlOffspringNode>;
|
|
30929
|
+
/** Offspring depth actually applied after clamping (1..4). */
|
|
30930
|
+
offspringDepth: Scalars['Int']['output'];
|
|
30931
|
+
/** The animal the walk started from, at generation 0. */
|
|
30932
|
+
root: HealthyBowlPedigreeNode;
|
|
30933
|
+
/** True when a depth or node cap stopped the walk, so the tree shown is incomplete. Show it — a truncated pedigree is wrong with no other sign that it is wrong. */
|
|
30934
|
+
truncated: Scalars['Boolean']['output'];
|
|
30935
|
+
};
|
|
30738
30936
|
/** Per-animal medication-withdrawal roll-up (reused from BOFF-2885), for the compliance badge. */
|
|
30739
30937
|
export type HealthyBowlAnimalWithdrawalBadge = {
|
|
30740
30938
|
__typename?: 'HealthyBowlAnimalWithdrawalBadge';
|
|
@@ -31316,6 +31514,25 @@ export type HealthyBowlCostCenter = {
|
|
|
31316
31514
|
yieldQuantity: Scalars['Float']['output'];
|
|
31317
31515
|
yieldUnit: Scalars['String']['output'];
|
|
31318
31516
|
};
|
|
31517
|
+
export type HealthyBowlCrew = {
|
|
31518
|
+
__typename?: 'HealthyBowlCrew';
|
|
31519
|
+
createdAt: Scalars['String']['output'];
|
|
31520
|
+
id: Scalars['ID']['output'];
|
|
31521
|
+
isActive: Scalars['Boolean']['output'];
|
|
31522
|
+
leadWorkerId?: Maybe<Scalars['ID']['output']>;
|
|
31523
|
+
name: Scalars['String']['output'];
|
|
31524
|
+
workerIds: Array<Scalars['ID']['output']>;
|
|
31525
|
+
};
|
|
31526
|
+
export type HealthyBowlCrewTimesheet = {
|
|
31527
|
+
__typename?: 'HealthyBowlCrewTimesheet';
|
|
31528
|
+
crewId: Scalars['ID']['output'];
|
|
31529
|
+
crewName: Scalars['String']['output'];
|
|
31530
|
+
rows: Array<HealthyBowlWeeklyTimesheetRow>;
|
|
31531
|
+
totalCost: Scalars['Float']['output'];
|
|
31532
|
+
totalHours: Scalars['Float']['output'];
|
|
31533
|
+
weekEnd: Scalars['String']['output'];
|
|
31534
|
+
weekStart: Scalars['String']['output'];
|
|
31535
|
+
};
|
|
31319
31536
|
export type HealthyBowlCropProfitability = {
|
|
31320
31537
|
__typename?: 'HealthyBowlCropProfitability';
|
|
31321
31538
|
code: Scalars['String']['output'];
|
|
@@ -31409,18 +31626,39 @@ export type HealthyBowlDueSoon = {
|
|
|
31409
31626
|
/** What is physically written on the animal, and how she is found in the shed (BOFF-6283). Nullable on purpose: a dam culled since her service still appears here only if she is in the herd, but an unnamed or untagged animal must degrade to the id rather than blank the row. This is the one actionable section of the card — before these existed it answered "who do I check on this week" with a raw UUID. */
|
|
31410
31627
|
tagNumber?: Maybe<Scalars['String']['output']>;
|
|
31411
31628
|
};
|
|
31629
|
+
export type HealthyBowlExpertAvailabilityInput = {
|
|
31630
|
+
consultantId: Scalars['String']['input'];
|
|
31631
|
+
/** How many days forward. Defaults to 14, capped at 60 — a farmer picking a time does not scroll a year. */
|
|
31632
|
+
days?: InputMaybe<Scalars['Int']['input']>;
|
|
31633
|
+
/** First day to offer, ISO. Defaults to today. */
|
|
31634
|
+
from?: InputMaybe<Scalars['String']['input']>;
|
|
31635
|
+
};
|
|
31412
31636
|
export type HealthyBowlFarmRecommendation = {
|
|
31413
31637
|
__typename?: 'HealthyBowlFarmRecommendation';
|
|
31414
31638
|
authorActorId: Scalars['String']['output'];
|
|
31639
|
+
/** BOFF-3676 — HUMAN or MODEL. A farmer deciding whether to act on advice is entitled to know whether a person or a model wrote it. */
|
|
31640
|
+
authorKind: Scalars['String']['output'];
|
|
31415
31641
|
authorName?: Maybe<Scalars['String']['output']>;
|
|
31642
|
+
/** Model confidence in [0,1]. **Null means the model reported none** — it is never defaulted to a number, because a fabricated confidence is what a decision card exists to prevent. */
|
|
31643
|
+
confidence?: Maybe<Scalars['Float']['output']>;
|
|
31416
31644
|
createdAt: Scalars['String']['output'];
|
|
31645
|
+
decidedAt?: Maybe<Scalars['String']['output']>;
|
|
31646
|
+
decidedBy?: Maybe<Scalars['String']['output']>;
|
|
31647
|
+
/** ACCEPTED | REJECTED | ESCALATED — the human's verdict. Null until someone decides. */
|
|
31648
|
+
decision?: Maybe<Scalars['String']['output']>;
|
|
31417
31649
|
detail: Scalars['String']['output'];
|
|
31418
31650
|
domain: Scalars['String']['output'];
|
|
31419
31651
|
id: Scalars['ID']['output'];
|
|
31652
|
+
/** The model that produced it, when authorKind is MODEL. */
|
|
31653
|
+
modelName?: Maybe<Scalars['String']['output']>;
|
|
31420
31654
|
priority: Scalars['String']['output'];
|
|
31655
|
+
/** Why the model suggested this. A recommendation with no rationale is one a farmer cannot evaluate. */
|
|
31656
|
+
rationale?: Maybe<Scalars['String']['output']>;
|
|
31421
31657
|
status: Scalars['String']['output'];
|
|
31422
31658
|
title: Scalars['String']['output'];
|
|
31423
31659
|
updatedAt: Scalars['String']['output'];
|
|
31660
|
+
/** Caveats the card should show, computed on read — e.g. a model suggestion with no reasoning, or with no reported confidence. Empty for human-authored advice. */
|
|
31661
|
+
warnings: Array<Scalars['String']['output']>;
|
|
31424
31662
|
workspaceId: Scalars['ID']['output'];
|
|
31425
31663
|
};
|
|
31426
31664
|
export declare enum HealthyBowlFarmRecommendationPriority {
|
|
@@ -31569,6 +31807,13 @@ export type HealthyBowlGeneralLedgerRow = {
|
|
|
31569
31807
|
reference?: Maybe<Scalars['String']['output']>;
|
|
31570
31808
|
runningBalance: Scalars['Float']['output'];
|
|
31571
31809
|
};
|
|
31810
|
+
/** The report types the generator can build today (BOFF-6022). Deliberately NOT every member of the Prisma `AnalyticsReportType` enum. LIVESTOCK, WEATHER and MARKETPLACE exist on the model and have no builder, so listing them here would let a client send a schema-valid value that is refused at runtime — the "not available yet" toast this ticket removes, one layer down. Adding a member later is an additive schema change and safe. */
|
|
31811
|
+
export declare enum HealthyBowlGeneratableReportType {
|
|
31812
|
+
/** Harvest yield by crop, over recorded harvests. */
|
|
31813
|
+
Crop = "CROP",
|
|
31814
|
+
/** Cost by crop, over posted ledger lines. */
|
|
31815
|
+
Financial = "FINANCIAL"
|
|
31816
|
+
}
|
|
31572
31817
|
export type HealthyBowlGovernmentDataPayload = {
|
|
31573
31818
|
__typename?: 'HealthyBowlGovernmentDataPayload';
|
|
31574
31819
|
activity: Array<GovernmentActivityItem>;
|
|
@@ -31717,6 +31962,7 @@ export type HealthyBowlHerdComplianceSummary = {
|
|
|
31717
31962
|
animalsInWithdrawal: Scalars['Int']['output'];
|
|
31718
31963
|
/** e.g. '2 animals in medication withdrawal — do not sell milk'. Empty when none are withdrawn. */
|
|
31719
31964
|
complianceMessage: Scalars['String']['output'];
|
|
31965
|
+
/** Animals MATCHING the current `groupId`/`search` filters — not the herd total. The herd totals are on `groups[].animalCount`. */
|
|
31720
31966
|
totalAnimals: Scalars['Int']['output'];
|
|
31721
31967
|
};
|
|
31722
31968
|
/** What the herd is made of, as of the window end. Only observed categories are emitted for species/sex/status: an unlisted species is not "0 animals" — the workspace simply does not farm it. The age bands are the exception, because they are a scale rather than a ranking; all five are returned in age order so an empty band is visible. */
|
|
@@ -31750,6 +31996,8 @@ export type HealthyBowlHerdDepthRow = {
|
|
|
31750
31996
|
/** Average daily gain (kg/day) from weight history; null with < 2 weight records. */
|
|
31751
31997
|
adgKgPerDay?: Maybe<Scalars['Float']['output']>;
|
|
31752
31998
|
animalId: Scalars['ID']['output'];
|
|
31999
|
+
/** True when this animal has left the herd (soft-deleted). Only ever true for a caller that passed `includeArchived: true` — see `healthyBowlHerdDepth`. Show the row muted rather than dropping it: a culled or sold animal is still a valid dam or sire (BOFF-6011), which is the whole reason these rows can be asked for. */
|
|
32000
|
+
archived: Scalars['Boolean']['output'];
|
|
31753
32001
|
bodyConditionScore?: Maybe<Scalars['Float']['output']>;
|
|
31754
32002
|
eidTag?: Maybe<Scalars['String']['output']>;
|
|
31755
32003
|
groupId?: Maybe<Scalars['ID']['output']>;
|
|
@@ -31768,6 +32016,8 @@ export type HealthyBowlHerdDepthView = {
|
|
|
31768
32016
|
groups: Array<HealthyBowlAnimalGroup>;
|
|
31769
32017
|
rows: Array<HealthyBowlHerdDepthRow>;
|
|
31770
32018
|
summary: HealthyBowlHerdComplianceSummary;
|
|
32019
|
+
/** True when the read hit a row cap and this payload is incomplete — either the row list was cut at the page size, or the herd is larger than the group counts could read. Show it: a herd list that quietly stops being the herd is wrong with no other sign that it is wrong. */
|
|
32020
|
+
truncated: Scalars['Boolean']['output'];
|
|
31771
32021
|
};
|
|
31772
32022
|
/** Output per head for one production type measured in one unit. Never summed across types or units. `ProductionRecord.unit` is free text and the types are not commensurable — litres of milk, dozens of eggs and kilograms of wool have no common total, and unlike feed there is no mass basis to convert onto. */
|
|
31773
32023
|
export type HealthyBowlHerdProductionPerHead = {
|
|
@@ -32122,6 +32372,40 @@ export type HealthyBowlJournalLineInput = {
|
|
|
32122
32372
|
debit?: InputMaybe<Scalars['Float']['input']>;
|
|
32123
32373
|
description?: InputMaybe<Scalars['String']['input']>;
|
|
32124
32374
|
};
|
|
32375
|
+
export type HealthyBowlLabourEntry = {
|
|
32376
|
+
__typename?: 'HealthyBowlLabourEntry';
|
|
32377
|
+
computedCost: Scalars['Float']['output'];
|
|
32378
|
+
/** Mandatory: cost-by-crop ignores journal lines without it. */
|
|
32379
|
+
costCenterId: Scalars['ID']['output'];
|
|
32380
|
+
crewId?: Maybe<Scalars['ID']['output']>;
|
|
32381
|
+
cropId?: Maybe<Scalars['ID']['output']>;
|
|
32382
|
+
date: Scalars['String']['output'];
|
|
32383
|
+
fieldId?: Maybe<Scalars['ID']['output']>;
|
|
32384
|
+
hours: Scalars['Float']['output'];
|
|
32385
|
+
id: Scalars['ID']['output'];
|
|
32386
|
+
journalEntryId?: Maybe<Scalars['ID']['output']>;
|
|
32387
|
+
note?: Maybe<Scalars['String']['output']>;
|
|
32388
|
+
quantity?: Maybe<Scalars['Float']['output']>;
|
|
32389
|
+
rateAmount: Scalars['Float']['output'];
|
|
32390
|
+
/** DAY | HOUR | PIECE */
|
|
32391
|
+
rateType: Scalars['String']['output'];
|
|
32392
|
+
/** DRAFT | APPROVED. Only APPROVED has reached the ledger. */
|
|
32393
|
+
status: Scalars['String']['output'];
|
|
32394
|
+
/** Opaque PlanMagnet task id; not a HealthyBowl UUID. */
|
|
32395
|
+
taskId?: Maybe<Scalars['String']['output']>;
|
|
32396
|
+
workerId: Scalars['ID']['output'];
|
|
32397
|
+
workerName: Scalars['String']['output'];
|
|
32398
|
+
};
|
|
32399
|
+
export type HealthyBowlLabourSummary = {
|
|
32400
|
+
__typename?: 'HealthyBowlLabourSummary';
|
|
32401
|
+
approvedEntries: Scalars['Int']['output'];
|
|
32402
|
+
draftEntries: Scalars['Int']['output'];
|
|
32403
|
+
/** Cost from APPROVED entries only; this agrees with the ledger. */
|
|
32404
|
+
totalCost: Scalars['Float']['output'];
|
|
32405
|
+
totalEntries: Scalars['Int']['output'];
|
|
32406
|
+
/** Hours from APPROVED entries only; draft work is not yet financial history. */
|
|
32407
|
+
totalHours: Scalars['Float']['output'];
|
|
32408
|
+
};
|
|
32125
32409
|
export type HealthyBowlLedgerAccount = {
|
|
32126
32410
|
__typename?: 'HealthyBowlLedgerAccount';
|
|
32127
32411
|
/** ASSET | LIABILITY | EQUITY | INCOME | EXPENSE */
|
|
@@ -32264,6 +32548,9 @@ export type HealthyBowlLoanFacilitation = {
|
|
|
32264
32548
|
communityFunded: Scalars['Boolean']['output'];
|
|
32265
32549
|
createdAt: Scalars['String']['output'];
|
|
32266
32550
|
currency: Scalars['String']['output'];
|
|
32551
|
+
/** BOFF-6077 — what the lender has AUTHORISED for milestone release, and what has been released. Authorisation figures, not a balance. Nothing holds this money; see `HealthyBowlLoanMilestone`. */
|
|
32552
|
+
escrowCommitted: Scalars['Float']['output'];
|
|
32553
|
+
escrowReleased: Scalars['Float']['output'];
|
|
32267
32554
|
expiresAt?: Maybe<Scalars['String']['output']>;
|
|
32268
32555
|
financierActorId?: Maybe<Scalars['String']['output']>;
|
|
32269
32556
|
/** FinancierAccessGrant that backs this loan's consent (time-bounded, revocable). */
|
|
@@ -32316,6 +32603,26 @@ export type HealthyBowlLoanInstallment = {
|
|
|
32316
32603
|
remainingDue: Scalars['String']['output'];
|
|
32317
32604
|
totalDue: Scalars['String']['output'];
|
|
32318
32605
|
};
|
|
32606
|
+
/** BOFF-6077 — one tranche of a facilitated loan's release schedule. ### Read this before writing UI copy This is an **authorisation** record, not custody. HealthyBowl holds no money and `global-billing-svc` has no hold/capture primitive, so a RELEASED milestone means "the farm proved the condition and the lender's release is on record" — **not** that funds moved. Labelling it "escrow held" or showing it as a balance would put a claim on screen the system cannot honour. The money leg is BOFF-6076's disbursement rail. */
|
|
32607
|
+
export type HealthyBowlLoanMilestone = {
|
|
32608
|
+
__typename?: 'HealthyBowlLoanMilestone';
|
|
32609
|
+
createdAt: Scalars['String']['output'];
|
|
32610
|
+
description?: Maybe<Scalars['String']['output']>;
|
|
32611
|
+
evidenceId?: Maybe<Scalars['ID']['output']>;
|
|
32612
|
+
/** HARVEST | PLANTING_ACTIVITY — the kind of farm record that proves this milestone. */
|
|
32613
|
+
evidenceType?: Maybe<Scalars['String']['output']>;
|
|
32614
|
+
id: Scalars['ID']['output'];
|
|
32615
|
+
label: Scalars['String']['output'];
|
|
32616
|
+
loanId: Scalars['ID']['output'];
|
|
32617
|
+
releaseAmount: Scalars['Float']['output'];
|
|
32618
|
+
releasedAt?: Maybe<Scalars['String']['output']>;
|
|
32619
|
+
releasedBy?: Maybe<Scalars['String']['output']>;
|
|
32620
|
+
/** 1-based position in the release sequence. */
|
|
32621
|
+
sequence: Scalars['Int']['output'];
|
|
32622
|
+
/** PENDING | RELEASED | CANCELLED */
|
|
32623
|
+
status: Scalars['String']['output'];
|
|
32624
|
+
updatedAt: Scalars['String']['output'];
|
|
32625
|
+
};
|
|
32319
32626
|
/** An immutable allocation for a repayment completed outside HealthyBowl; POSTED may only become VOID. */
|
|
32320
32627
|
export type HealthyBowlLoanRepayment = {
|
|
32321
32628
|
__typename?: 'HealthyBowlLoanRepayment';
|
|
@@ -32447,6 +32754,25 @@ export type HealthyBowlNotifyMentionInput = {
|
|
|
32447
32754
|
taskId: Scalars['ID']['input'];
|
|
32448
32755
|
taskTitle?: InputMaybe<Scalars['String']['input']>;
|
|
32449
32756
|
};
|
|
32757
|
+
/** One recorded offspring of the root animal. */
|
|
32758
|
+
export type HealthyBowlOffspringNode = {
|
|
32759
|
+
__typename?: 'HealthyBowlOffspringNode';
|
|
32760
|
+
animalId: Scalars['ID']['output'];
|
|
32761
|
+
/** Offspring are read live-only, so this is always false. Present for symmetry with the ancestors. */
|
|
32762
|
+
archived: Scalars['Boolean']['output'];
|
|
32763
|
+
dateOfBirth?: Maybe<Scalars['String']['output']>;
|
|
32764
|
+
gender: Scalars['String']['output'];
|
|
32765
|
+
generation: Scalars['Int']['output'];
|
|
32766
|
+
name: Scalars['String']['output'];
|
|
32767
|
+
/** The immediately preceding descendant in the walk. Null at generation 1, where the root is implicit. */
|
|
32768
|
+
parentAnimalId?: Maybe<Scalars['ID']['output']>;
|
|
32769
|
+
/** All immediately preceding descendants that match this node's dam/sire links. Empty at generation 1. */
|
|
32770
|
+
parentAnimalIds: Array<Scalars['ID']['output']>;
|
|
32771
|
+
tagNumber: Scalars['String']['output'];
|
|
32772
|
+
type: Scalars['String']['output'];
|
|
32773
|
+
/** DAM | SIRE — the parent link followed to reach this node: root for direct offspring, or its preceding descendant later in the walk. BOTH when both links match. */
|
|
32774
|
+
viaParent: Scalars['String']['output'];
|
|
32775
|
+
};
|
|
32450
32776
|
/** Everything the client needs to open the payment provider's checkout for an order. Returned by checkoutHealthyBowlOrder; the amounts are billing's (tax is computed there, not here). */
|
|
32451
32777
|
export type HealthyBowlOrderCheckout = {
|
|
32452
32778
|
__typename?: 'HealthyBowlOrderCheckout';
|
|
@@ -32552,6 +32878,30 @@ export type HealthyBowlPaginationInput = {
|
|
|
32552
32878
|
sortBy?: InputMaybe<Scalars['String']['input']>;
|
|
32553
32879
|
sortOrder?: InputMaybe<Scalars['String']['input']>;
|
|
32554
32880
|
};
|
|
32881
|
+
/** One animal in a pedigree, seen from the root animal. `generation` counts hops from the root: 1 = a parent, 2 = a grandparent. The root itself is generation 0. */
|
|
32882
|
+
export type HealthyBowlPedigreeNode = {
|
|
32883
|
+
__typename?: 'HealthyBowlPedigreeNode';
|
|
32884
|
+
animalId: Scalars['ID']['output'];
|
|
32885
|
+
/** True when this animal has left the herd (soft-deleted). The branch is still returned: a culled parent is still the parent (BOFF-6011). Render it greyed and NOT as a link — `healthyBowlAnimalDepth` filters `deletedAt`, so navigating to an archived animal's page dead-ends on NOT_FOUND. */
|
|
32886
|
+
archived: Scalars['Boolean']['output'];
|
|
32887
|
+
breed?: Maybe<Scalars['String']['output']>;
|
|
32888
|
+
/** ONE of the animals a generation closer to the root that this node is a parent of. Null at generation 1 and on the root. Deliberately not "the" child: a line-bred herd reuses the same bull on both sides, and this walk emits each ancestor once. Read `childAnimalIds` for every edge — this field keeps only the first, for backward compatibility. */
|
|
32889
|
+
childAnimalId?: Maybe<Scalars['ID']['output']>;
|
|
32890
|
+
/** Every descendant edge this ancestor was reached by, not just the first. Line breeding makes one animal the parent of several others in the same tree — a bull that sired both the dam and the sire of the root is ONE node with TWO child edges. `childAnimalId` keeps only the first for backward compatibility; read this to render the full genealogy. Empty at generation 1, where the child is the root and so implicit — the same boundary `parentAnimalIds` keeps for direct offspring. */
|
|
32891
|
+
childAnimalIds: Array<Scalars['ID']['output']>;
|
|
32892
|
+
/** ISO date, or null — `Animal.dateOfBirth` is nullable and a missing date is not a claim. */
|
|
32893
|
+
dateOfBirth?: Maybe<Scalars['String']['output']>;
|
|
32894
|
+
/** MALE | FEMALE. */
|
|
32895
|
+
gender: Scalars['String']['output'];
|
|
32896
|
+
/** Hops from the root animal. 0 on the root, >= 1 on every ancestor. */
|
|
32897
|
+
generation: Scalars['Int']['output'];
|
|
32898
|
+
name: Scalars['String']['output'];
|
|
32899
|
+
/** DAM | SIRE — which side of THIS node's own child it sits on. SELF on the root. */
|
|
32900
|
+
relation: Scalars['String']['output'];
|
|
32901
|
+
tagNumber: Scalars['String']['output'];
|
|
32902
|
+
/** Species (CATTLE|BUFFALO|GOAT|SHEEP|PIG|POULTRY). */
|
|
32903
|
+
type: Scalars['String']['output'];
|
|
32904
|
+
};
|
|
32555
32905
|
export type HealthyBowlPestDataPayload = {
|
|
32556
32906
|
__typename?: 'HealthyBowlPestDataPayload';
|
|
32557
32907
|
pestIssues: Array<PestIssue>;
|
|
@@ -32702,6 +33052,49 @@ export type HealthyBowlPlannedVsSpentPoint = {
|
|
|
32702
33052
|
planned: Scalars['Float']['output'];
|
|
32703
33053
|
spent: Scalars['Float']['output'];
|
|
32704
33054
|
};
|
|
33055
|
+
/** Bed-geometry capacity for a field (BOFF-6100). */
|
|
33056
|
+
export type HealthyBowlPlantingCapacity = {
|
|
33057
|
+
__typename?: 'HealthyBowlPlantingCapacity';
|
|
33058
|
+
areaSqm: Scalars['Float']['output'];
|
|
33059
|
+
bedCount: Scalars['Int']['output'];
|
|
33060
|
+
bedLengthM: Scalars['Float']['output'];
|
|
33061
|
+
bedWidthM: Scalars['Float']['output'];
|
|
33062
|
+
cultivableAreaSqm: Scalars['Float']['output'];
|
|
33063
|
+
densityPlantsPerSqm: Scalars['Float']['output'];
|
|
33064
|
+
pathWidthM: Scalars['Float']['output'];
|
|
33065
|
+
plantSpacingCm: Scalars['Float']['output'];
|
|
33066
|
+
plantsPerBed: Scalars['Int']['output'];
|
|
33067
|
+
plantsPerRow: Scalars['Int']['output'];
|
|
33068
|
+
rowSpacingCm: Scalars['Float']['output'];
|
|
33069
|
+
rowsPerBed: Scalars['Int']['output'];
|
|
33070
|
+
seedlingTarget: Scalars['Int']['output'];
|
|
33071
|
+
totalPlants: Scalars['Int']['output'];
|
|
33072
|
+
};
|
|
33073
|
+
/** The estimate, or a reasoned refusal (BOFF-6100). A greenhouse, orchard or pasture is not planted in beds, so `appliesToBedGeometry` is false and both payloads are null — **not zeroed**. A farmer reading "0 seeds required" orders nothing. */
|
|
33074
|
+
export type HealthyBowlPlantingEstimate = {
|
|
33075
|
+
__typename?: 'HealthyBowlPlantingEstimate';
|
|
33076
|
+
appliesToBedGeometry: Scalars['Boolean']['output'];
|
|
33077
|
+
capacity?: Maybe<HealthyBowlPlantingCapacity>;
|
|
33078
|
+
/** Why there are no numbers. Null when the estimate is real. */
|
|
33079
|
+
notApplicableReason?: Maybe<Scalars['String']['output']>;
|
|
33080
|
+
seedRate?: Maybe<HealthyBowlSeedRate>;
|
|
33081
|
+
/** The spacing preset actually used, so the caller can show what was assumed. */
|
|
33082
|
+
spacingPresetLabel: Scalars['String']['output'];
|
|
33083
|
+
};
|
|
33084
|
+
/** BOFF-6100 — inputs for a server-derived planting estimate. Only `fieldId` is required: area, unit and grow-location type come off the field, and spacing comes from the catalog entry or a crop-name preset. Everything else overrides, in that order, so a farmer who knows their own bed layout is not overruled by a lookup table. */
|
|
33085
|
+
export type HealthyBowlPlantingEstimateInput = {
|
|
33086
|
+
/** Optional unsaved drawn-boundary area in the Field's stored unit. Used only when positive; never persisted by this estimate read. */
|
|
33087
|
+
areaOverride?: InputMaybe<Scalars['Float']['input']>;
|
|
33088
|
+
bedWidthM?: InputMaybe<Scalars['Float']['input']>;
|
|
33089
|
+
/** Crop whose name/category/variety selects a spacing preset when no catalog entry is given. */
|
|
33090
|
+
cropId?: InputMaybe<Scalars['ID']['input']>;
|
|
33091
|
+
fieldId: Scalars['ID']['input'];
|
|
33092
|
+
pathWidthM?: InputMaybe<Scalars['Float']['input']>;
|
|
33093
|
+
/** Master Plant List entry, for seeds/gram, germination rate and its recorded spacing. */
|
|
33094
|
+
plantCatalogId?: InputMaybe<Scalars['ID']['input']>;
|
|
33095
|
+
plantSpacingCm?: InputMaybe<Scalars['Float']['input']>;
|
|
33096
|
+
rowSpacingCm?: InputMaybe<Scalars['Float']['input']>;
|
|
33097
|
+
};
|
|
32705
33098
|
export type HealthyBowlPooledCropVolume = {
|
|
32706
33099
|
__typename?: 'HealthyBowlPooledCropVolume';
|
|
32707
33100
|
crop: Scalars['String']['output'];
|
|
@@ -32865,6 +33258,15 @@ export type HealthyBowlSavedTraceLabel = {
|
|
|
32865
33258
|
fileId: Scalars['ID']['output'];
|
|
32866
33259
|
fileName: Scalars['String']['output'];
|
|
32867
33260
|
};
|
|
33261
|
+
/** Seed and nursery quantities for a plant target (BOFF-6100). */
|
|
33262
|
+
export type HealthyBowlSeedRate = {
|
|
33263
|
+
__typename?: 'HealthyBowlSeedRate';
|
|
33264
|
+
/** Null when the variety has no seeds-per-gram recorded. A guessed weight is worse than none. */
|
|
33265
|
+
seedGrams?: Maybe<Scalars['Float']['output']>;
|
|
33266
|
+
seedlingsToRaise: Scalars['Int']['output'];
|
|
33267
|
+
seedsNeeded: Scalars['Int']['output'];
|
|
33268
|
+
trays?: Maybe<Scalars['Int']['output']>;
|
|
33269
|
+
};
|
|
32868
33270
|
export type HealthyBowlSettlementDeductionInput = {
|
|
32869
33271
|
amount: Scalars['Float']['input'];
|
|
32870
33272
|
label: Scalars['String']['input'];
|
|
@@ -33218,6 +33620,16 @@ export type HealthyBowlWeatherDataPayload = {
|
|
|
33218
33620
|
updatedAt: Scalars['DateTime']['output'];
|
|
33219
33621
|
weather: WeatherData;
|
|
33220
33622
|
};
|
|
33623
|
+
export type HealthyBowlWeeklyTimesheetRow = {
|
|
33624
|
+
__typename?: 'HealthyBowlWeeklyTimesheetRow';
|
|
33625
|
+
/** Seven buckets, Monday first. */
|
|
33626
|
+
hoursByDay: Array<Scalars['Float']['output']>;
|
|
33627
|
+
/** Approved labour only, so this agrees with the ledger. */
|
|
33628
|
+
totalCost: Scalars['Float']['output'];
|
|
33629
|
+
totalHours: Scalars['Float']['output'];
|
|
33630
|
+
workerId: Scalars['ID']['output'];
|
|
33631
|
+
workerName: Scalars['String']['output'];
|
|
33632
|
+
};
|
|
33221
33633
|
/** A single weight measurement in an animal's history. */
|
|
33222
33634
|
export type HealthyBowlWeightRecord = {
|
|
33223
33635
|
__typename?: 'HealthyBowlWeightRecord';
|
|
@@ -33230,6 +33642,22 @@ export type HealthyBowlWeightRecord = {
|
|
|
33230
33642
|
notes?: Maybe<Scalars['String']['output']>;
|
|
33231
33643
|
weightKg: Scalars['Float']['output'];
|
|
33232
33644
|
};
|
|
33645
|
+
/** Labour, crews and costed timesheets (BOFF-6024). Workers need no email or login: a seasonal farm hand must be recordable even when they never sign into the platform. Approval posts through the existing accounting provider; this module NEVER writes a journal row directly. */
|
|
33646
|
+
export type HealthyBowlWorker = {
|
|
33647
|
+
__typename?: 'HealthyBowlWorker';
|
|
33648
|
+
createdAt: Scalars['String']['output'];
|
|
33649
|
+
dailyWage?: Maybe<Scalars['Float']['output']>;
|
|
33650
|
+
/** PERMANENT | SEASONAL | CONTRACT | FAMILY | GIG */
|
|
33651
|
+
employmentType: Scalars['String']['output'];
|
|
33652
|
+
hourlyRate?: Maybe<Scalars['Float']['output']>;
|
|
33653
|
+
id: Scalars['ID']['output'];
|
|
33654
|
+
isActive: Scalars['Boolean']['output'];
|
|
33655
|
+
linkedActorId?: Maybe<Scalars['String']['output']>;
|
|
33656
|
+
name: Scalars['String']['output'];
|
|
33657
|
+
phone?: Maybe<Scalars['String']['output']>;
|
|
33658
|
+
piecePrice?: Maybe<Scalars['Float']['output']>;
|
|
33659
|
+
skills: Array<Scalars['String']['output']>;
|
|
33660
|
+
};
|
|
33233
33661
|
/** A single (bucket-key -> aggregate) row for a device/territory/language breakdown. */
|
|
33234
33662
|
export type HokAnalyticsBucket = {
|
|
33235
33663
|
__typename?: 'HokAnalyticsBucket';
|
|
@@ -37230,6 +37658,7 @@ export type InvalidateDataSinkCacheResult = {
|
|
|
37230
37658
|
export type InventoryFilterInput = {
|
|
37231
37659
|
cargoItemId?: InputMaybe<Scalars['ID']['input']>;
|
|
37232
37660
|
locationId?: InputMaybe<Scalars['ID']['input']>;
|
|
37661
|
+
lowStock?: InputMaybe<Scalars['Boolean']['input']>;
|
|
37233
37662
|
search?: InputMaybe<Scalars['String']['input']>;
|
|
37234
37663
|
warehouseId?: InputMaybe<Scalars['ID']['input']>;
|
|
37235
37664
|
};
|
|
@@ -37715,6 +38144,8 @@ export type IotThresholdRuleInput = {
|
|
|
37715
38144
|
/** A soil/weather-conditional automation rule for an irrigation schedule (Phase B — "EXTEND FluidGrids"). HB owns the thresholds; wspace-workflow-svc (FluidGrids) is provisioned per-rule to fire the cron and call back into HB. */
|
|
37716
38145
|
export type IrrigationAutomation = {
|
|
37717
38146
|
__typename?: 'IrrigationAutomation';
|
|
38147
|
+
/** BOFF-6123 — raise a Farm Tasks card when a run actually waters this field. Off by default. A skipped run raises nothing: that is the automation deciding there is no work, and a card for it would train farmers to ignore the board. */
|
|
38148
|
+
autoTaskEnabled: Scalars['Boolean']['output'];
|
|
37718
38149
|
fieldId: Scalars['ID']['output'];
|
|
37719
38150
|
id: Scalars['ID']['output'];
|
|
37720
38151
|
/** Timestamp of the last evaluation as an ISO-8601 string. */
|
|
@@ -39617,8 +40048,14 @@ export type ListWorkflowDefinitionsInput = {
|
|
|
39617
40048
|
};
|
|
39618
40049
|
/** Input for listing runs */
|
|
39619
40050
|
export type ListWorkflowRunsInput = {
|
|
40051
|
+
/** Filter runs created at-or-before this instant (inclusive). Bound to `createdAt` on WorkflowRun. */
|
|
40052
|
+
endDate?: InputMaybe<Scalars['DateTime']['input']>;
|
|
39620
40053
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
39621
40054
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
40055
|
+
/** Free-text filter for the Runs screen's search box. Case-insensitive; matches a run whose id starts with the term, or whose workflow key or workflow name contains it. Blank or whitespace-only is treated as no filter. */
|
|
40056
|
+
search?: InputMaybe<Scalars['String']['input']>;
|
|
40057
|
+
/** Filter runs created at-or-after this instant (inclusive). Bound to `createdAt` on WorkflowRun. */
|
|
40058
|
+
startDate?: InputMaybe<Scalars['DateTime']['input']>;
|
|
39622
40059
|
status?: InputMaybe<RunStatus>;
|
|
39623
40060
|
workflowKey?: InputMaybe<Scalars['String']['input']>;
|
|
39624
40061
|
};
|
|
@@ -39710,6 +40147,21 @@ export type LogFilterInput = {
|
|
|
39710
40147
|
level?: InputMaybe<LogLevel>;
|
|
39711
40148
|
startDate?: InputMaybe<Scalars['DateTime']['input']>;
|
|
39712
40149
|
};
|
|
40150
|
+
export type LogHealthyBowlLabourEntryInput = {
|
|
40151
|
+
context: ContextInput;
|
|
40152
|
+
costCenterId: Scalars['ID']['input'];
|
|
40153
|
+
crewId?: InputMaybe<Scalars['ID']['input']>;
|
|
40154
|
+
cropId?: InputMaybe<Scalars['ID']['input']>;
|
|
40155
|
+
date?: InputMaybe<Scalars['String']['input']>;
|
|
40156
|
+
fieldId?: InputMaybe<Scalars['ID']['input']>;
|
|
40157
|
+
hours?: InputMaybe<Scalars['Float']['input']>;
|
|
40158
|
+
note?: InputMaybe<Scalars['String']['input']>;
|
|
40159
|
+
quantity?: InputMaybe<Scalars['Float']['input']>;
|
|
40160
|
+
rateAmount?: InputMaybe<Scalars['Float']['input']>;
|
|
40161
|
+
rateType?: InputMaybe<Scalars['String']['input']>;
|
|
40162
|
+
taskId?: InputMaybe<Scalars['String']['input']>;
|
|
40163
|
+
workerId: Scalars['ID']['input'];
|
|
40164
|
+
};
|
|
39713
40165
|
export declare enum LogLevel {
|
|
39714
40166
|
Debug = "DEBUG",
|
|
39715
40167
|
Error = "ERROR",
|
|
@@ -41616,6 +42068,13 @@ export type MtwAnalyticsSeries = {
|
|
|
41616
42068
|
orderTrend: Array<MtwAnalyticsPoint>;
|
|
41617
42069
|
revenueTrend: Array<MtwAnalyticsPoint>;
|
|
41618
42070
|
};
|
|
42071
|
+
/** Ranked vehicles and drivers that can take a route right now, best first. */
|
|
42072
|
+
export type MtwAssignmentSuggestions = {
|
|
42073
|
+
__typename?: 'MtwAssignmentSuggestions';
|
|
42074
|
+
drivers: Array<MtwDriverSuggestion>;
|
|
42075
|
+
routeId: Scalars['ID']['output'];
|
|
42076
|
+
vehicles: Array<MtwVehicleSuggestion>;
|
|
42077
|
+
};
|
|
41619
42078
|
/** MoveTheWheels-owned cargo/item master used for warehouse inventory and shipment payloads. This is not a sellable storefront product; commerce SKUs must live in global-store-svc (StoreProduct) and be referenced by storeProductId when needed. */
|
|
41620
42079
|
export type MtwCargoItem = {
|
|
41621
42080
|
__typename?: 'MtwCargoItem';
|
|
@@ -41640,6 +42099,27 @@ export type MtwCargoItem = {
|
|
|
41640
42099
|
weight?: Maybe<Scalars['Float']['output']>;
|
|
41641
42100
|
workspaceId: Scalars['ID']['output'];
|
|
41642
42101
|
};
|
|
42102
|
+
export type MtwCargoItemStats = {
|
|
42103
|
+
__typename?: 'MtwCargoItemStats';
|
|
42104
|
+
specialHandling: Scalars['Int']['output'];
|
|
42105
|
+
temperatureControlled: Scalars['Int']['output'];
|
|
42106
|
+
total: Scalars['Int']['output'];
|
|
42107
|
+
};
|
|
42108
|
+
/** How one carrier fared for a quote request. */
|
|
42109
|
+
export type MtwCarrierOutcome = {
|
|
42110
|
+
__typename?: 'MtwCarrierOutcome';
|
|
42111
|
+
errorMessage?: Maybe<Scalars['String']['output']>;
|
|
42112
|
+
ok: Scalars['Boolean']['output'];
|
|
42113
|
+
provider: MtwCarrierProvider;
|
|
42114
|
+
quoteCount: Scalars['Int']['output'];
|
|
42115
|
+
};
|
|
42116
|
+
export declare enum MtwCarrierProvider {
|
|
42117
|
+
Shiprocket = "SHIPROCKET"
|
|
42118
|
+
}
|
|
42119
|
+
export declare enum MtwCarrierServiceMode {
|
|
42120
|
+
Air = "AIR",
|
|
42121
|
+
Surface = "SURFACE"
|
|
42122
|
+
}
|
|
41643
42123
|
export type MtwCustomer = {
|
|
41644
42124
|
__typename?: 'MtwCustomer';
|
|
41645
42125
|
address?: Maybe<Scalars['JSON']['output']>;
|
|
@@ -41661,6 +42141,15 @@ export type MtwCustomer = {
|
|
|
41661
42141
|
updatedBy?: Maybe<Scalars['String']['output']>;
|
|
41662
42142
|
workspaceId: Scalars['ID']['output'];
|
|
41663
42143
|
};
|
|
42144
|
+
export type MtwCustomerStats = {
|
|
42145
|
+
__typename?: 'MtwCustomerStats';
|
|
42146
|
+
active: Scalars['Int']['output'];
|
|
42147
|
+
avgRating: Scalars['Float']['output'];
|
|
42148
|
+
b2b: Scalars['Int']['output'];
|
|
42149
|
+
b2c: Scalars['Int']['output'];
|
|
42150
|
+
inactive: Scalars['Int']['output'];
|
|
42151
|
+
total: Scalars['Int']['output'];
|
|
42152
|
+
};
|
|
41664
42153
|
export type MtwDashboardMetrics = {
|
|
41665
42154
|
__typename?: 'MtwDashboardMetrics';
|
|
41666
42155
|
activeDeliveries: Scalars['Int']['output'];
|
|
@@ -41712,11 +42201,16 @@ export type MtwDeliveryJobStatusHistoryArgs = {
|
|
|
41712
42201
|
};
|
|
41713
42202
|
export type MtwDeliveryJobStats = {
|
|
41714
42203
|
__typename?: 'MtwDeliveryJobStats';
|
|
42204
|
+
assigned: Scalars['Int']['output'];
|
|
41715
42205
|
cancelled: Scalars['Int']['output'];
|
|
42206
|
+
confirmed: Scalars['Int']['output'];
|
|
41716
42207
|
delivered: Scalars['Int']['output'];
|
|
41717
42208
|
failed: Scalars['Int']['output'];
|
|
41718
42209
|
inTransit: Scalars['Int']['output'];
|
|
42210
|
+
outForDelivery: Scalars['Int']['output'];
|
|
41719
42211
|
pending: Scalars['Int']['output'];
|
|
42212
|
+
pickedUp: Scalars['Int']['output'];
|
|
42213
|
+
returned: Scalars['Int']['output'];
|
|
41720
42214
|
total: Scalars['Int']['output'];
|
|
41721
42215
|
};
|
|
41722
42216
|
export type MtwDeliveryJobStatusHistory = {
|
|
@@ -41788,6 +42282,12 @@ export type MtwDriver = {
|
|
|
41788
42282
|
vehicleId?: Maybe<Scalars['String']['output']>;
|
|
41789
42283
|
workspaceId: Scalars['ID']['output'];
|
|
41790
42284
|
};
|
|
42285
|
+
export type MtwDriverSuggestion = {
|
|
42286
|
+
__typename?: 'MtwDriverSuggestion';
|
|
42287
|
+
driver: MtwDriver;
|
|
42288
|
+
reasons: Array<Scalars['String']['output']>;
|
|
42289
|
+
score: Scalars['Int']['output'];
|
|
42290
|
+
};
|
|
41791
42291
|
export type MtwEmissionsBreakdown = {
|
|
41792
42292
|
__typename?: 'MtwEmissionsBreakdown';
|
|
41793
42293
|
co2eKg: Scalars['Float']['output'];
|
|
@@ -41822,6 +42322,36 @@ export type MtwFinanceMetrics = {
|
|
|
41822
42322
|
openInvoices: Scalars['Int']['output'];
|
|
41823
42323
|
revenue: MtwRevenueMetrics;
|
|
41824
42324
|
};
|
|
42325
|
+
/** A compliance or maintenance item that needs attention, computed live from vehicle service markers and driver licence expiry. */
|
|
42326
|
+
export type MtwFleetAlert = {
|
|
42327
|
+
__typename?: 'MtwFleetAlert';
|
|
42328
|
+
/** Negative when already past due. */
|
|
42329
|
+
daysUntilDue?: Maybe<Scalars['Int']['output']>;
|
|
42330
|
+
dueDate?: Maybe<Scalars['DateTime']['output']>;
|
|
42331
|
+
id: Scalars['ID']['output'];
|
|
42332
|
+
/** Negative when the due mileage has already been passed. Vehicles only. */
|
|
42333
|
+
kmUntilDue?: Maybe<Scalars['Float']['output']>;
|
|
42334
|
+
message: Scalars['String']['output'];
|
|
42335
|
+
severity: MtwFleetAlertSeverity;
|
|
42336
|
+
subjectId: Scalars['ID']['output'];
|
|
42337
|
+
subjectName: Scalars['String']['output'];
|
|
42338
|
+
subjectType: MtwFleetAlertSubjectType;
|
|
42339
|
+
type: MtwFleetAlertType;
|
|
42340
|
+
};
|
|
42341
|
+
export declare enum MtwFleetAlertSeverity {
|
|
42342
|
+
Critical = "CRITICAL",
|
|
42343
|
+
Warning = "WARNING"
|
|
42344
|
+
}
|
|
42345
|
+
export declare enum MtwFleetAlertSubjectType {
|
|
42346
|
+
Driver = "DRIVER",
|
|
42347
|
+
Vehicle = "VEHICLE"
|
|
42348
|
+
}
|
|
42349
|
+
export declare enum MtwFleetAlertType {
|
|
42350
|
+
LicenseExpired = "LICENSE_EXPIRED",
|
|
42351
|
+
LicenseExpiring = "LICENSE_EXPIRING",
|
|
42352
|
+
MaintenanceDueSoon = "MAINTENANCE_DUE_SOON",
|
|
42353
|
+
MaintenanceOverdue = "MAINTENANCE_OVERDUE"
|
|
42354
|
+
}
|
|
41825
42355
|
export type MtwFleetStats = {
|
|
41826
42356
|
__typename?: 'MtwFleetStats';
|
|
41827
42357
|
activeVehicles: Scalars['Int']['output'];
|
|
@@ -41949,6 +42479,19 @@ export type MtwInventoryTransaction = {
|
|
|
41949
42479
|
warehouseId: Scalars['ID']['output'];
|
|
41950
42480
|
workspaceId: Scalars['ID']['output'];
|
|
41951
42481
|
};
|
|
42482
|
+
/** An estimate from the caller's own inputs — not a quote from anyone. */
|
|
42483
|
+
export type MtwOwnFleetEstimate = {
|
|
42484
|
+
__typename?: 'MtwOwnFleetEstimate';
|
|
42485
|
+
/** fixedCost + distanceKm * costPerKm. */
|
|
42486
|
+
cost: Scalars['Float']['output'];
|
|
42487
|
+
costPerKm: Scalars['Float']['output'];
|
|
42488
|
+
currency: Scalars['String']['output'];
|
|
42489
|
+
distanceKm: Scalars['Float']['output'];
|
|
42490
|
+
fixedCost: Scalars['Float']['output'];
|
|
42491
|
+
isCheaperThanCouriers: Scalars['Boolean']['output'];
|
|
42492
|
+
/** Cheapest courier price minus this estimate. Positive means running your own vehicle is cheaper. Null when no courier quoted. */
|
|
42493
|
+
savingsVsCheapestCourier?: Maybe<Scalars['Float']['output']>;
|
|
42494
|
+
};
|
|
41952
42495
|
/** Electronic proof-of-delivery (ePOD) capture (BOFF-4399). Signature + recipient name + geo-timestamp are always required; photos are optional and referenced by `wspace-files-svc` File id (never stored as blobs here). */
|
|
41953
42496
|
export type MtwProofOfDelivery = {
|
|
41954
42497
|
__typename?: 'MtwProofOfDelivery';
|
|
@@ -42010,6 +42553,16 @@ export type MtwRoute = {
|
|
|
42010
42553
|
waypoints: Scalars['JSON']['output'];
|
|
42011
42554
|
workspaceId: Scalars['ID']['output'];
|
|
42012
42555
|
};
|
|
42556
|
+
export type MtwRouteStats = {
|
|
42557
|
+
__typename?: 'MtwRouteStats';
|
|
42558
|
+
completed: Scalars['Int']['output'];
|
|
42559
|
+
inProgress: Scalars['Int']['output'];
|
|
42560
|
+
optimized: Scalars['Int']['output'];
|
|
42561
|
+
planned: Scalars['Int']['output'];
|
|
42562
|
+
total: Scalars['Int']['output'];
|
|
42563
|
+
totalDistance: Scalars['Float']['output'];
|
|
42564
|
+
totalDuration: Scalars['Float']['output'];
|
|
42565
|
+
};
|
|
42013
42566
|
export type MtwShipment = {
|
|
42014
42567
|
__typename?: 'MtwShipment';
|
|
42015
42568
|
actualDelivery?: Maybe<Scalars['DateTime']['output']>;
|
|
@@ -42042,6 +42595,9 @@ export type MtwShipment = {
|
|
|
42042
42595
|
updatedBy?: Maybe<Scalars['String']['output']>;
|
|
42043
42596
|
workspaceId: Scalars['ID']['output'];
|
|
42044
42597
|
};
|
|
42598
|
+
export type MtwShipmentLegsArgs = {
|
|
42599
|
+
pagination?: InputMaybe<PaginationInput>;
|
|
42600
|
+
};
|
|
42045
42601
|
export type MtwShipmentTrackingEventsArgs = {
|
|
42046
42602
|
pagination?: InputMaybe<PaginationInput>;
|
|
42047
42603
|
};
|
|
@@ -42085,6 +42641,34 @@ export type MtwShipmentLeg = {
|
|
|
42085
42641
|
widthCm?: Maybe<Scalars['Float']['output']>;
|
|
42086
42642
|
workspaceId: Scalars['ID']['output'];
|
|
42087
42643
|
};
|
|
42644
|
+
export type MtwShippingQuote = {
|
|
42645
|
+
__typename?: 'MtwShippingQuote';
|
|
42646
|
+
courierId: Scalars['String']['output'];
|
|
42647
|
+
courierName: Scalars['String']['output'];
|
|
42648
|
+
currency: Scalars['String']['output'];
|
|
42649
|
+
estimatedDeliveryDate?: Maybe<Scalars['String']['output']>;
|
|
42650
|
+
estimatedDeliveryDays?: Maybe<Scalars['Int']['output']>;
|
|
42651
|
+
isCheapest: Scalars['Boolean']['output'];
|
|
42652
|
+
isFastest: Scalars['Boolean']['output'];
|
|
42653
|
+
/** Flagged by the carrier itself as its recommendation. */
|
|
42654
|
+
isRecommended: Scalars['Boolean']['output'];
|
|
42655
|
+
mode?: Maybe<MtwCarrierServiceMode>;
|
|
42656
|
+
price: Scalars['Float']['output'];
|
|
42657
|
+
provider: MtwCarrierProvider;
|
|
42658
|
+
/** 0-5, when the carrier publishes one. */
|
|
42659
|
+
rating?: Maybe<Scalars['Float']['output']>;
|
|
42660
|
+
};
|
|
42661
|
+
export type MtwShippingQuoteResult = {
|
|
42662
|
+
__typename?: 'MtwShippingQuoteResult';
|
|
42663
|
+
/** max(dead weight, volumetric weight) actually sent to the carriers. */
|
|
42664
|
+
chargeableWeightKg: Scalars['Float']['output'];
|
|
42665
|
+
/** Present only when the input carried ownFleet. */
|
|
42666
|
+
ownFleet?: Maybe<MtwOwnFleetEstimate>;
|
|
42667
|
+
/** One entry per carrier queried, so a failing carrier is visible rather than silently missing. */
|
|
42668
|
+
providers: Array<MtwCarrierOutcome>;
|
|
42669
|
+
/** Every quote from every connected carrier, cheapest first. */
|
|
42670
|
+
quotes: Array<MtwShippingQuote>;
|
|
42671
|
+
};
|
|
42088
42672
|
export type MtwTrackingAlert = {
|
|
42089
42673
|
__typename?: 'MtwTrackingAlert';
|
|
42090
42674
|
alertType: Scalars['String']['output'];
|
|
@@ -42121,10 +42705,13 @@ export type MtwVehicle = {
|
|
|
42121
42705
|
fuelLevel?: Maybe<Scalars['Float']['output']>;
|
|
42122
42706
|
fuelType?: Maybe<FuelType>;
|
|
42123
42707
|
id: Scalars['ID']['output'];
|
|
42708
|
+
lastServiceDate?: Maybe<Scalars['DateTime']['output']>;
|
|
42124
42709
|
licensePlate?: Maybe<Scalars['String']['output']>;
|
|
42125
42710
|
make?: Maybe<Scalars['String']['output']>;
|
|
42126
42711
|
mileage?: Maybe<Scalars['Float']['output']>;
|
|
42127
42712
|
model?: Maybe<Scalars['String']['output']>;
|
|
42713
|
+
nextServiceDueDate?: Maybe<Scalars['DateTime']['output']>;
|
|
42714
|
+
nextServiceDueMileage?: Maybe<Scalars['Float']['output']>;
|
|
42128
42715
|
onBehalfOf: Scalars['String']['output'];
|
|
42129
42716
|
ownershipType?: Maybe<Scalars['String']['output']>;
|
|
42130
42717
|
status: VehicleStatus;
|
|
@@ -42135,6 +42722,12 @@ export type MtwVehicle = {
|
|
|
42135
42722
|
workspaceId: Scalars['ID']['output'];
|
|
42136
42723
|
year?: Maybe<Scalars['Int']['output']>;
|
|
42137
42724
|
};
|
|
42725
|
+
export type MtwVehicleSuggestion = {
|
|
42726
|
+
__typename?: 'MtwVehicleSuggestion';
|
|
42727
|
+
reasons: Array<Scalars['String']['output']>;
|
|
42728
|
+
score: Scalars['Int']['output'];
|
|
42729
|
+
vehicle: MtwVehicle;
|
|
42730
|
+
};
|
|
42138
42731
|
export type MtwWarehouse = {
|
|
42139
42732
|
__typename?: 'MtwWarehouse';
|
|
42140
42733
|
address: Scalars['JSON']['output'];
|
|
@@ -42183,6 +42776,12 @@ export type MtwWarehouseLocation = {
|
|
|
42183
42776
|
workspaceId: Scalars['ID']['output'];
|
|
42184
42777
|
zone?: Maybe<Scalars['String']['output']>;
|
|
42185
42778
|
};
|
|
42779
|
+
export type MtwWarehouseStats = {
|
|
42780
|
+
__typename?: 'MtwWarehouseStats';
|
|
42781
|
+
active: Scalars['Int']['output'];
|
|
42782
|
+
avgUtilization: Scalars['Float']['output'];
|
|
42783
|
+
total: Scalars['Int']['output'];
|
|
42784
|
+
};
|
|
42186
42785
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
42187
42786
|
export type Mutation = {
|
|
42188
42787
|
__typename?: 'Mutation';
|
|
@@ -42357,6 +42956,7 @@ export type Mutation = {
|
|
|
42357
42956
|
approveGgnomadDamageClaim: GgnomadDamageClaim;
|
|
42358
42957
|
/** BOFF-4388 — operator-only (see GGNOMAD_ROLES marketplace-operator): approves a PENDING_REVIEW listing, moving it to ACTIVE. */
|
|
42359
42958
|
approveGgnomadListing: GgnomadListing;
|
|
42959
|
+
approveHealthyBowlLabourEntry: HealthyBowlLabourEntry;
|
|
42360
42960
|
approveHousingvistaVerificationItem: HousingVistaVerificationItem;
|
|
42361
42961
|
approveJoinRequest: GroupMembership;
|
|
42362
42962
|
approveRequest: TimeApprovalRequest;
|
|
@@ -43137,6 +43737,8 @@ export type Mutation = {
|
|
|
43137
43737
|
createDataSink: DataSink;
|
|
43138
43738
|
createDeliveryJob: MtwDeliveryJob;
|
|
43139
43739
|
createDigitalTwin: DigitalTwin;
|
|
43740
|
+
/** Create a disposable workspace (BOFF-6560): the ONLY supported path that can set `Workspace.isDisposable`. Restricted to service actors — same security model as syncFromGlobal (actorTypes over action/resource RBAC, because the workspace doesn't exist yet and this is M2M-only by design). No user/billing quota is enforced; disposable workspaces are ops/test tooling, not customer seats. Callers (e.g. a product's demo-seed job) are responsible for tearing the workspace down through the normal deleteWorkspace mutation when done. */
|
|
43741
|
+
createDisposableWorkspace: Workspace;
|
|
43140
43742
|
/** Create a new docs page */
|
|
43141
43743
|
createDocsPage: VibecontrolsDocsPage;
|
|
43142
43744
|
createDocsShareLink: ShareGrant;
|
|
@@ -43273,6 +43875,7 @@ export type Mutation = {
|
|
|
43273
43875
|
/** Sponsor: open a DRAFT aggregation lot for a contract. */
|
|
43274
43876
|
createHealthyBowlContractAggregationLot: HealthyBowlContractAggregationLot;
|
|
43275
43877
|
createHealthyBowlCostCenter: HealthyBowlCostCenter;
|
|
43878
|
+
createHealthyBowlCrew: HealthyBowlCrew;
|
|
43276
43879
|
createHealthyBowlCrop: Crop;
|
|
43277
43880
|
createHealthyBowlCsaPickupLocation: HealthyBowlPickupLocation;
|
|
43278
43881
|
createHealthyBowlCsaPlan: CsaPlan;
|
|
@@ -43303,6 +43906,8 @@ export type Mutation = {
|
|
|
43303
43906
|
createHealthyBowlIrrigationAutomation: IrrigationAutomation;
|
|
43304
43907
|
createHealthyBowlIrrigationSchedule: IrrigationSchedule;
|
|
43305
43908
|
createHealthyBowlLedgerAccount: HealthyBowlLedgerAccount;
|
|
43909
|
+
/** BOFF-6077 — add a tranche to a loan's release schedule. */
|
|
43910
|
+
createHealthyBowlLoanMilestone: HealthyBowlLoanMilestone;
|
|
43306
43911
|
createHealthyBowlMapFeature: MapFeature;
|
|
43307
43912
|
createHealthyBowlMarketplaceProduct: MarketplaceProduct;
|
|
43308
43913
|
createHealthyBowlMedicationLibraryItem: MedicationLibraryItem;
|
|
@@ -43342,6 +43947,7 @@ export type Mutation = {
|
|
|
43342
43947
|
/** Log a watering run (manual now; also called by FluidGrids automation later). */
|
|
43343
43948
|
createHealthyBowlWateringRun: WateringRun;
|
|
43344
43949
|
createHealthyBowlWholesaleOrder: WholesaleOrder;
|
|
43950
|
+
createHealthyBowlWorker: HealthyBowlWorker;
|
|
43345
43951
|
createHousingvistaAmcContract: HousingVistaAmcContract;
|
|
43346
43952
|
createHousingvistaAreaInsight: HousingVistaAreaInsight;
|
|
43347
43953
|
createHousingvistaAsset: HousingVistaAsset;
|
|
@@ -43523,6 +44129,10 @@ export type Mutation = {
|
|
|
43523
44129
|
deactivateVibecontrolsAgent: VibecontrolsAgent;
|
|
43524
44130
|
/** Deactivate a workflow definition (sets status to DRAFT, disables scheduled triggers) */
|
|
43525
44131
|
deactivateWorkflowDefinition: WorkflowDefinition;
|
|
44132
|
+
/** Accept or reject a proposal. A BLOCKED proposal cannot be decided at all. */
|
|
44133
|
+
decideHealthyBowlAgronomyDecision: AgronomyDecision;
|
|
44134
|
+
/** BOFF-3676 — record a human verdict on a recommendation. ACCEPTED moves it to ACKNOWLEDGED, not RESOLVED: accepting advice is not doing the work, and resolving it would hide outstanding work from every "what needs doing" read. Re-deciding is refused rather than overwritten — the first verdict is the record of what someone judged. */
|
|
44135
|
+
decideHealthyBowlFarmRecommendation: HealthyBowlFarmRecommendation;
|
|
43526
44136
|
declareLifeValue: TimeCampusLifeValue;
|
|
43527
44137
|
/** Decline a file/folder share invitation. */
|
|
43528
44138
|
declineFileShare: Scalars['Boolean']['output'];
|
|
@@ -43690,6 +44300,7 @@ export type Mutation = {
|
|
|
43690
44300
|
deleteHealthyBowlCompostBatch: Scalars['Boolean']['output'];
|
|
43691
44301
|
deleteHealthyBowlContact: Scalars['Boolean']['output'];
|
|
43692
44302
|
deleteHealthyBowlCostCenter: Scalars['Boolean']['output'];
|
|
44303
|
+
deleteHealthyBowlCrew: Scalars['Boolean']['output'];
|
|
43693
44304
|
deleteHealthyBowlCrop: Scalars['Boolean']['output'];
|
|
43694
44305
|
deleteHealthyBowlCsaPlan: Scalars['Boolean']['output'];
|
|
43695
44306
|
deleteHealthyBowlDeliveryRoute: Scalars['Boolean']['output'];
|
|
@@ -43724,6 +44335,7 @@ export type Mutation = {
|
|
|
43724
44335
|
deleteHealthyBowlIrrigationAutomation: Scalars['Boolean']['output'];
|
|
43725
44336
|
deleteHealthyBowlIrrigationSchedule: Scalars['Boolean']['output'];
|
|
43726
44337
|
deleteHealthyBowlJournalEntry: Scalars['Boolean']['output'];
|
|
44338
|
+
deleteHealthyBowlLabourEntry: Scalars['Boolean']['output'];
|
|
43727
44339
|
deleteHealthyBowlLedgerAccount: Scalars['Boolean']['output'];
|
|
43728
44340
|
deleteHealthyBowlMapFeature: Scalars['Boolean']['output'];
|
|
43729
44341
|
deleteHealthyBowlMarketplaceProduct: Scalars['Boolean']['output'];
|
|
@@ -43756,6 +44368,7 @@ export type Mutation = {
|
|
|
43756
44368
|
deleteHealthyBowlTreatment: Scalars['Boolean']['output'];
|
|
43757
44369
|
deleteHealthyBowlVaccination: Scalars['Boolean']['output'];
|
|
43758
44370
|
deleteHealthyBowlWholesaleOrder: Scalars['Boolean']['output'];
|
|
44371
|
+
deleteHealthyBowlWorker: Scalars['Boolean']['output'];
|
|
43759
44372
|
/** Delete a saved yield scenario. */
|
|
43760
44373
|
deleteHealthyBowlYieldScenario: Scalars['Boolean']['output'];
|
|
43761
44374
|
deleteHousingvistaAmcContract: Scalars['Boolean']['output'];
|
|
@@ -43937,6 +44550,8 @@ export type Mutation = {
|
|
|
43937
44550
|
dispatchHealthyBowlAccountingSync: Scalars['Int']['output'];
|
|
43938
44551
|
/** FluidGrids callback: close every LIVE auction in the workspace whose endTime has passed, creating each winner Order. Returns the number of auctions closed. Called anonymously by the workspace's auction-sweep cron over the internal gateway, so it is authorized by an HMAC dispatch secret (HMAC-SHA256 of workspaceId keyed by INTERNAL_SERVICE_TOKEN) rather than by a user token — the same shape as dispatchHealthyBowlWateringRun. */
|
|
43939
44552
|
dispatchHealthyBowlAuctionSweep: Scalars['Int']['output'];
|
|
44553
|
+
/** FluidGrids callback: send due confirmed-consultation reminders. Authorized by a per-workspace HMAC. */
|
|
44554
|
+
dispatchHealthyBowlConsultReminderSweep: Scalars['Int']['output'];
|
|
43940
44555
|
/** FluidGrids callback: the flow's action node calls THIS to make the member-facing send. Sends an IN_APP notification via global-notification-svc and stamps notificationSentAt. Guarded by an HMAC(INTERNAL_SERVICE_TOKEN, csaDeliveryId) dispatchSecret (timing-safe compare). Public so the unauthenticated node can reach it through the gateway. */
|
|
43941
44556
|
dispatchHealthyBowlCsaNotification: Scalars['Boolean']['output'];
|
|
43942
44557
|
/** Marks the route IN_PROGRESS, flips every stop's CsaDelivery to DISPATCHED, and triggers the FluidGrids flow `healthybowl-csa-box-dispatch` (one run per member) over wspace-int-gateway. Stores the WorkflowRun id on each CsaDelivery. Does NOT send the notification itself — the flow calls back to dispatchHealthyBowlCsaNotification. */
|
|
@@ -44202,6 +44817,8 @@ export type Mutation = {
|
|
|
44202
44817
|
generateGroupShareLink: GroupShareLink;
|
|
44203
44818
|
/** AI-assisted (LLM, with deterministic fallback) budget reallocation recommendation. */
|
|
44204
44819
|
generateHeadshotmarketingAdBudgetRecommendation: HeadshotmarketingAdBudgetRecommendation;
|
|
44820
|
+
/** BOFF-6022 — generate an analytics report over data this workspace already holds. `type` accepts FINANCIAL (cost by crop, from posted ledger lines) and CROP (harvest yield). LIVESTOCK, WEATHER and MARKETPLACE exist on the enum but have no builder yet and are refused with a readable message — emitting an empty document under a real-looking title would recreate the very problem this closes, a surface that appears to work and produces nothing. The figures are snapshotted onto the row, so the report keeps meaning what it meant after the underlying transactions change. */
|
|
44821
|
+
generateHealthyBowlAnalyticsReport: AnalyticsReport;
|
|
44205
44822
|
generateHealthyBowlCertificateOfOrigin: CertificateOfOrigin;
|
|
44206
44823
|
/** Build a numbered, ordered route from the SCHEDULED CSA deliveries in a date range. */
|
|
44207
44824
|
generateHealthyBowlDeliveryRoute: DeliveryRoute;
|
|
@@ -44793,6 +45410,7 @@ export type Mutation = {
|
|
|
44793
45410
|
/** Freeze an inventory's activity snapshots (DRAFT → LOCKED). */
|
|
44794
45411
|
lockHealthyBowlGhgInventory: HbGhgInventory;
|
|
44795
45412
|
lockVault: Vault;
|
|
45413
|
+
logHealthyBowlLabourEntry: HealthyBowlLabourEntry;
|
|
44796
45414
|
/** Log a medication treatment: computes per-produce clear dates and fires the 'withdrawal started' in-app notification. */
|
|
44797
45415
|
logHealthyBowlMedicationTreatment: MedicationTreatment;
|
|
44798
45416
|
/** One-tap "Log to Pest Issues": create a persisted PestIssue pre-filled from a scan's diagnosis, entering the normal open→monitoring→resolved workflow. */
|
|
@@ -45227,6 +45845,8 @@ export type Mutation = {
|
|
|
45227
45845
|
promptUpdateProvider: PromptProvider;
|
|
45228
45846
|
promptUpdateTemplate: PromptTemplateDef;
|
|
45229
45847
|
propagateTagToChildren: Array<UniversalTagAssignment>;
|
|
45848
|
+
/** Run an agronomic sweep and return the proposals it wrote. A second sweep over unchanged data updates the open proposal rather than adding another — otherwise the inbox becomes a pile of identical cards, which is how a farmer learns to ignore it. Returns BLOCKED rows too: a treatment the compliance rail refused is recorded so the farmer can see it was considered and why it was refused. Dropping it silently looks identical to the engine never having noticed. */
|
|
45849
|
+
proposeHealthyBowlAgronomyDecisions: AgronomyDecisionSweepResult;
|
|
45230
45850
|
/** Proxy an HTTP request to a sandbox service. Used by the frontend to communicate with services running inside sandboxes (e.g., ai-assistant) through the gateway. */
|
|
45231
45851
|
proxySandboxRequest: ProxySandboxResponse;
|
|
45232
45852
|
pswAddTeamAssignment: PswTeamAssignment;
|
|
@@ -45379,6 +45999,7 @@ export type Mutation = {
|
|
|
45379
45999
|
recordKnowledgeArticleView: KnowledgeArticle;
|
|
45380
46000
|
recordProvenance: ProvenanceRecord;
|
|
45381
46001
|
recordTimeCampusImpersonationAudit: TimeCampusImpersonationAuditEntry;
|
|
46002
|
+
recordVehicleService: MtwVehicle;
|
|
45382
46003
|
recordWorkPattern: WorkPattern;
|
|
45383
46004
|
/** Redeems points from the calling actor's loyalty account for a discount amount (calculation only — no live payment capture). Throws INSUFFICIENT_LOYALTY_POINTS if the account's balance is below `points`. */
|
|
45384
46005
|
redeemGgnomadLoyaltyPoints: GgnomadLoyaltyRedemption;
|
|
@@ -45444,6 +46065,8 @@ export type Mutation = {
|
|
|
45444
46065
|
releaseCrewEscrowRecord: CrewEscrowRecord;
|
|
45445
46066
|
/** Release a file lock */
|
|
45446
46067
|
releaseFileLock: ReleaseLockResponse;
|
|
46068
|
+
/** BOFF-6077 — authorise a milestone's release against real farm evidence. The evidence record is resolved **in this workspace** before anything is written; without that a farm could authorise its own tranche by typing any uuid, and the gate would be decorative. Records an authorisation. **Moves no money** — nothing in the platform can hold any. */
|
|
46069
|
+
releaseHealthyBowlLoanMilestone: HealthyBowlLoanMilestone;
|
|
45447
46070
|
releaseLegalHold: LegalHold;
|
|
45448
46071
|
/** Release control of a session */
|
|
45449
46072
|
releaseSessionControl: Scalars['Boolean']['output'];
|
|
@@ -45571,6 +46194,8 @@ export type Mutation = {
|
|
|
45571
46194
|
reportAiTokenUsage: Scalars['Boolean']['output'];
|
|
45572
46195
|
/** Records the real token usage of a completed assistant turn. The resolver computes COST-WEIGHTED credits server-side (billing.quoteAiCredits, per-model prices) and charges them once via addUsageForWorkspace — so the amount is never client-supplied. No @usage(trackUsage) directive here: that would charge a second time (flat token count) on top of the resolver's weighted charge. */
|
|
45573
46196
|
reportGovAiTokenUsage: Scalars['Boolean']['output'];
|
|
46197
|
+
/** Record and charge the AI credits a completed HealthyBowl assistant turn consumed. Best-effort by contract: the answer has already been produced and shown to the farmer, so a billing or pricing failure must never fail this mutation. It logs and returns true. Callers should not branch on the result. `resource: "ai-prompt"` reuses the platform's existing AI-prompt permission rather than introducing a new resource type: RBAC is default-DENY and an unregistered resource would reject every caller, silently reducing this meter to a no-op. It is the same resource VibeControls' equivalent mutation uses. */
|
|
46198
|
+
reportHealthyBowlAiTokenUsage: Scalars['Boolean']['output'];
|
|
45574
46199
|
reportMessage: ReportMessagePayload;
|
|
45575
46200
|
reprocessTimeCampusTimeline: TimeCampusAdminMutationResult;
|
|
45576
46201
|
/** Request input-loan facilitation: creates a time-bounded, revocable FinancierAccessGrant (UC-14) sharing the farmer's field + input-plan records with the lender, plus the loan request row. No always-on data sharing. communityFunded is rejected unless the flag is ON. */
|
|
@@ -45889,12 +46514,16 @@ export type Mutation = {
|
|
|
45889
46514
|
/** Set a view as the default */
|
|
45890
46515
|
setDefaultView: DashboardView;
|
|
45891
46516
|
setEventWebhook: WebhookConfig;
|
|
46517
|
+
/** BOFF-6030 — publish or update a consultant's weekly availability. One rule per weekday. */
|
|
46518
|
+
setHealthyBowlConsultAvailability: Scalars['ID']['output'];
|
|
45892
46519
|
/** Replace the full structured-tag set on a HealthyBowl entity (entity-owned tags, reuse wspace-tags-svc). */
|
|
45893
46520
|
setHealthyBowlEntityTags: Array<HealthyBowlTag>;
|
|
45894
46521
|
/** Attach, clear or waive one document slot on an existing policy (BOFF-6079). Works AFTER submit on purpose: PMFBY enrolment windows are short, and a farmer who submits with the optional paperwork outstanding must be able to finish later rather than start again. */
|
|
45895
46522
|
setHealthyBowlInsuranceDocument: HealthyBowlInsurancePolicy;
|
|
45896
46523
|
/** Publish (or unpublish) one of YOUR OWN listings to the shared cross-farm market. Workspace-scoped: a farm can only ever change the sharing flag on its own listings. */
|
|
45897
46524
|
setHealthyBowlListingShared: MarketplaceProduct;
|
|
46525
|
+
/** BOFF-6077 — record what the lender has committed to release across this loan's milestones. */
|
|
46526
|
+
setHealthyBowlLoanEscrowCommitment: HealthyBowlLoanFacilitation;
|
|
45898
46527
|
/** Set a paddock's own rest target. Writes to the field row, so it uses the field RBAC pair rather than the animal one. */
|
|
45899
46528
|
setHealthyBowlPaddockRest: HealthyBowlPaddockGrazing;
|
|
45900
46529
|
/** Replace a product's whole quantity ladder in one transaction (BOFF-6091). Refuses duplicate thresholds. */
|
|
@@ -46577,6 +47206,7 @@ export type Mutation = {
|
|
|
46577
47206
|
updateHealthyBowlConsultationStatus: Consultation;
|
|
46578
47207
|
updateHealthyBowlContact: HealthyBowlContact;
|
|
46579
47208
|
updateHealthyBowlCostCenter: HealthyBowlCostCenter;
|
|
47209
|
+
updateHealthyBowlCrew: HealthyBowlCrew;
|
|
46580
47210
|
updateHealthyBowlCrop: Crop;
|
|
46581
47211
|
updateHealthyBowlCsaDelivery: CsaDelivery;
|
|
46582
47212
|
updateHealthyBowlCsaMembership: CsaMembership;
|
|
@@ -46609,6 +47239,7 @@ export type Mutation = {
|
|
|
46609
47239
|
updateHealthyBowlIrrigationAutomation: IrrigationAutomation;
|
|
46610
47240
|
/** Update a schedule; also handles pause/resume via the status field. */
|
|
46611
47241
|
updateHealthyBowlIrrigationSchedule: IrrigationSchedule;
|
|
47242
|
+
updateHealthyBowlLabourEntry: HealthyBowlLabourEntry;
|
|
46612
47243
|
updateHealthyBowlLedgerAccount: HealthyBowlLedgerAccount;
|
|
46613
47244
|
updateHealthyBowlLoanFacilitation: HealthyBowlLoanFacilitation;
|
|
46614
47245
|
updateHealthyBowlMapFeature: MapFeature;
|
|
@@ -46630,6 +47261,7 @@ export type Mutation = {
|
|
|
46630
47261
|
updateHealthyBowlRecipe: Recipe;
|
|
46631
47262
|
/** Update the workspace satellite ingestion settings. */
|
|
46632
47263
|
updateHealthyBowlSatelliteSettings: HbSatelliteSettings;
|
|
47264
|
+
updateHealthyBowlSchemeApplicationStatus: SchemeApplication;
|
|
46633
47265
|
updateHealthyBowlSeedLot: SeedLot;
|
|
46634
47266
|
updateHealthyBowlSensorProbe: SensorProbe;
|
|
46635
47267
|
updateHealthyBowlSoilTest: SoilTest;
|
|
@@ -46644,6 +47276,7 @@ export type Mutation = {
|
|
|
46644
47276
|
updateHealthyBowlTreatment: Treatment;
|
|
46645
47277
|
updateHealthyBowlVaccination: Vaccination;
|
|
46646
47278
|
updateHealthyBowlWholesaleOrder: WholesaleOrder;
|
|
47279
|
+
updateHealthyBowlWorker: HealthyBowlWorker;
|
|
46647
47280
|
updateHousingvistaAmcContract: HousingVistaAmcContract;
|
|
46648
47281
|
updateHousingvistaAreaInsight: HousingVistaAreaInsight;
|
|
46649
47282
|
updateHousingvistaAsset: HousingVistaAsset;
|
|
@@ -47390,6 +48023,11 @@ export type MutationApproveGgnomadListingArgs = {
|
|
|
47390
48023
|
note?: InputMaybe<Scalars['String']['input']>;
|
|
47391
48024
|
};
|
|
47392
48025
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
48026
|
+
export type MutationApproveHealthyBowlLabourEntryArgs = {
|
|
48027
|
+
context: ContextInput;
|
|
48028
|
+
id: Scalars['ID']['input'];
|
|
48029
|
+
};
|
|
48030
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
47393
48031
|
export type MutationApproveHousingvistaVerificationItemArgs = {
|
|
47394
48032
|
id: Scalars['ID']['input'];
|
|
47395
48033
|
notes?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -49759,6 +50397,10 @@ export type MutationCreateDigitalTwinArgs = {
|
|
|
49759
50397
|
input: CreateDigitalTwinInput;
|
|
49760
50398
|
};
|
|
49761
50399
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
50400
|
+
export type MutationCreateDisposableWorkspaceArgs = {
|
|
50401
|
+
input: CreateDisposableWorkspaceInput;
|
|
50402
|
+
};
|
|
50403
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
49762
50404
|
export type MutationCreateDocsPageArgs = {
|
|
49763
50405
|
input: CreateVibecontrolsDocsPageInput;
|
|
49764
50406
|
};
|
|
@@ -50128,6 +50770,10 @@ export type MutationCreateHealthyBowlCostCenterArgs = {
|
|
|
50128
50770
|
input: CreateHealthyBowlCostCenterInput;
|
|
50129
50771
|
};
|
|
50130
50772
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
50773
|
+
export type MutationCreateHealthyBowlCrewArgs = {
|
|
50774
|
+
input: CreateHealthyBowlCrewInput;
|
|
50775
|
+
};
|
|
50776
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
50131
50777
|
export type MutationCreateHealthyBowlCropArgs = {
|
|
50132
50778
|
input: CreateCropInput;
|
|
50133
50779
|
};
|
|
@@ -50236,6 +50882,10 @@ export type MutationCreateHealthyBowlLedgerAccountArgs = {
|
|
|
50236
50882
|
input: CreateHealthyBowlLedgerAccountInput;
|
|
50237
50883
|
};
|
|
50238
50884
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
50885
|
+
export type MutationCreateHealthyBowlLoanMilestoneArgs = {
|
|
50886
|
+
input: CreateHealthyBowlLoanMilestoneInput;
|
|
50887
|
+
};
|
|
50888
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
50239
50889
|
export type MutationCreateHealthyBowlMapFeatureArgs = {
|
|
50240
50890
|
input: CreateHealthyBowlMapFeatureInput;
|
|
50241
50891
|
};
|
|
@@ -50374,6 +51024,10 @@ export type MutationCreateHealthyBowlWholesaleOrderArgs = {
|
|
|
50374
51024
|
input: CreateHealthyBowlWholesaleOrderInput;
|
|
50375
51025
|
};
|
|
50376
51026
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
51027
|
+
export type MutationCreateHealthyBowlWorkerArgs = {
|
|
51028
|
+
input: CreateHealthyBowlWorkerInput;
|
|
51029
|
+
};
|
|
51030
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
50377
51031
|
export type MutationCreateHousingvistaAmcContractArgs = {
|
|
50378
51032
|
input: HousingVistaCreateAmcContractInput;
|
|
50379
51033
|
};
|
|
@@ -50930,6 +51584,14 @@ export type MutationDeactivateWorkflowDefinitionArgs = {
|
|
|
50930
51584
|
id: Scalars['ID']['input'];
|
|
50931
51585
|
};
|
|
50932
51586
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
51587
|
+
export type MutationDecideHealthyBowlAgronomyDecisionArgs = {
|
|
51588
|
+
input: DecideAgronomyDecisionInput;
|
|
51589
|
+
};
|
|
51590
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
51591
|
+
export type MutationDecideHealthyBowlFarmRecommendationArgs = {
|
|
51592
|
+
input: DecideHealthyBowlFarmRecommendationInput;
|
|
51593
|
+
};
|
|
51594
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
50933
51595
|
export type MutationDeclareLifeValueArgs = {
|
|
50934
51596
|
input: TimeCampusLifeValueInput;
|
|
50935
51597
|
};
|
|
@@ -51431,6 +52093,11 @@ export type MutationDeleteHealthyBowlCostCenterArgs = {
|
|
|
51431
52093
|
id: Scalars['ID']['input'];
|
|
51432
52094
|
};
|
|
51433
52095
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
52096
|
+
export type MutationDeleteHealthyBowlCrewArgs = {
|
|
52097
|
+
context: ContextInput;
|
|
52098
|
+
id: Scalars['ID']['input'];
|
|
52099
|
+
};
|
|
52100
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
51434
52101
|
export type MutationDeleteHealthyBowlCropArgs = {
|
|
51435
52102
|
context: ContextInput;
|
|
51436
52103
|
id: Scalars['ID']['input'];
|
|
@@ -51592,6 +52259,11 @@ export type MutationDeleteHealthyBowlJournalEntryArgs = {
|
|
|
51592
52259
|
id: Scalars['ID']['input'];
|
|
51593
52260
|
};
|
|
51594
52261
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
52262
|
+
export type MutationDeleteHealthyBowlLabourEntryArgs = {
|
|
52263
|
+
context: ContextInput;
|
|
52264
|
+
id: Scalars['ID']['input'];
|
|
52265
|
+
};
|
|
52266
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
51595
52267
|
export type MutationDeleteHealthyBowlLedgerAccountArgs = {
|
|
51596
52268
|
context: ContextInput;
|
|
51597
52269
|
id: Scalars['ID']['input'];
|
|
@@ -51747,6 +52419,11 @@ export type MutationDeleteHealthyBowlWholesaleOrderArgs = {
|
|
|
51747
52419
|
id: Scalars['ID']['input'];
|
|
51748
52420
|
};
|
|
51749
52421
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
52422
|
+
export type MutationDeleteHealthyBowlWorkerArgs = {
|
|
52423
|
+
context: ContextInput;
|
|
52424
|
+
id: Scalars['ID']['input'];
|
|
52425
|
+
};
|
|
52426
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
51750
52427
|
export type MutationDeleteHealthyBowlYieldScenarioArgs = {
|
|
51751
52428
|
context: ContextInput;
|
|
51752
52429
|
id: Scalars['ID']['input'];
|
|
@@ -52311,6 +52988,10 @@ export type MutationDispatchHealthyBowlAuctionSweepArgs = {
|
|
|
52311
52988
|
input: DispatchHealthyBowlAuctionSweepInput;
|
|
52312
52989
|
};
|
|
52313
52990
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
52991
|
+
export type MutationDispatchHealthyBowlConsultReminderSweepArgs = {
|
|
52992
|
+
input: DispatchHealthyBowlConsultReminderSweepInput;
|
|
52993
|
+
};
|
|
52994
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
52314
52995
|
export type MutationDispatchHealthyBowlCsaNotificationArgs = {
|
|
52315
52996
|
input: DispatchHealthyBowlCsaNotificationInput;
|
|
52316
52997
|
};
|
|
@@ -53165,6 +53846,14 @@ export type MutationGenerateHeadshotmarketingAdBudgetRecommendationArgs = {
|
|
|
53165
53846
|
adCampaignId: Scalars['ID']['input'];
|
|
53166
53847
|
};
|
|
53167
53848
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
53849
|
+
export type MutationGenerateHealthyBowlAnalyticsReportArgs = {
|
|
53850
|
+
context: ContextInput;
|
|
53851
|
+
endDate: Scalars['String']['input'];
|
|
53852
|
+
startDate: Scalars['String']['input'];
|
|
53853
|
+
title?: InputMaybe<Scalars['String']['input']>;
|
|
53854
|
+
type: HealthyBowlGeneratableReportType;
|
|
53855
|
+
};
|
|
53856
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
53168
53857
|
export type MutationGenerateHealthyBowlCertificateOfOriginArgs = {
|
|
53169
53858
|
input: GenerateCertificateOfOriginInput;
|
|
53170
53859
|
};
|
|
@@ -54879,6 +55568,10 @@ export type MutationLockVaultArgs = {
|
|
|
54879
55568
|
id: Scalars['ID']['input'];
|
|
54880
55569
|
};
|
|
54881
55570
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
55571
|
+
export type MutationLogHealthyBowlLabourEntryArgs = {
|
|
55572
|
+
input: LogHealthyBowlLabourEntryInput;
|
|
55573
|
+
};
|
|
55574
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
54882
55575
|
export type MutationLogHealthyBowlMedicationTreatmentArgs = {
|
|
54883
55576
|
input: LogMedicationTreatmentInput;
|
|
54884
55577
|
};
|
|
@@ -56048,6 +56741,10 @@ export type MutationPropagateTagToChildrenArgs = {
|
|
|
56048
56741
|
assignmentId: Scalars['ID']['input'];
|
|
56049
56742
|
};
|
|
56050
56743
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
56744
|
+
export type MutationProposeHealthyBowlAgronomyDecisionsArgs = {
|
|
56745
|
+
input: ProposeAgronomyDecisionsInput;
|
|
56746
|
+
};
|
|
56747
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
56051
56748
|
export type MutationProxySandboxRequestArgs = {
|
|
56052
56749
|
input: ProxySandboxRequestInput;
|
|
56053
56750
|
};
|
|
@@ -56485,6 +57182,11 @@ export type MutationRecordTimeCampusImpersonationAuditArgs = {
|
|
|
56485
57182
|
input: RecordTimeCampusImpersonationInput;
|
|
56486
57183
|
};
|
|
56487
57184
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
57185
|
+
export type MutationRecordVehicleServiceArgs = {
|
|
57186
|
+
id: Scalars['ID']['input'];
|
|
57187
|
+
input: RecordVehicleServiceInput;
|
|
57188
|
+
};
|
|
57189
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
56488
57190
|
export type MutationRecordWorkPatternArgs = {
|
|
56489
57191
|
input: RecordWorkPatternInput;
|
|
56490
57192
|
};
|
|
@@ -56664,6 +57366,10 @@ export type MutationReleaseFileLockArgs = {
|
|
|
56664
57366
|
input: ReleaseLockInput;
|
|
56665
57367
|
};
|
|
56666
57368
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
57369
|
+
export type MutationReleaseHealthyBowlLoanMilestoneArgs = {
|
|
57370
|
+
input: ReleaseHealthyBowlLoanMilestoneInput;
|
|
57371
|
+
};
|
|
57372
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
56667
57373
|
export type MutationReleaseLegalHoldArgs = {
|
|
56668
57374
|
id: Scalars['ID']['input'];
|
|
56669
57375
|
};
|
|
@@ -57059,6 +57765,10 @@ export type MutationReportGovAiTokenUsageArgs = {
|
|
|
57059
57765
|
input: ReportGovAiTokenUsageInput;
|
|
57060
57766
|
};
|
|
57061
57767
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
57768
|
+
export type MutationReportHealthyBowlAiTokenUsageArgs = {
|
|
57769
|
+
input: ReportHealthyBowlAiTokenUsageInput;
|
|
57770
|
+
};
|
|
57771
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
57062
57772
|
export type MutationReportMessageArgs = {
|
|
57063
57773
|
messageId: Scalars['ID']['input'];
|
|
57064
57774
|
reason: Scalars['String']['input'];
|
|
@@ -58001,6 +58711,10 @@ export type MutationSetEventWebhookArgs = {
|
|
|
58001
58711
|
eventId: Scalars['ID']['input'];
|
|
58002
58712
|
};
|
|
58003
58713
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
58714
|
+
export type MutationSetHealthyBowlConsultAvailabilityArgs = {
|
|
58715
|
+
input: SetHealthyBowlConsultAvailabilityInput;
|
|
58716
|
+
};
|
|
58717
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
58004
58718
|
export type MutationSetHealthyBowlEntityTagsArgs = {
|
|
58005
58719
|
input: SetHealthyBowlEntityTagsInput;
|
|
58006
58720
|
};
|
|
@@ -58015,6 +58729,10 @@ export type MutationSetHealthyBowlListingSharedArgs = {
|
|
|
58015
58729
|
shared: Scalars['Boolean']['input'];
|
|
58016
58730
|
};
|
|
58017
58731
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
58732
|
+
export type MutationSetHealthyBowlLoanEscrowCommitmentArgs = {
|
|
58733
|
+
input: SetHealthyBowlLoanEscrowCommitmentInput;
|
|
58734
|
+
};
|
|
58735
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
58018
58736
|
export type MutationSetHealthyBowlPaddockRestArgs = {
|
|
58019
58737
|
input: SetHealthyBowlPaddockRestInput;
|
|
58020
58738
|
};
|
|
@@ -60191,6 +60909,10 @@ export type MutationUpdateHealthyBowlCostCenterArgs = {
|
|
|
60191
60909
|
input: UpdateHealthyBowlCostCenterInput;
|
|
60192
60910
|
};
|
|
60193
60911
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
60912
|
+
export type MutationUpdateHealthyBowlCrewArgs = {
|
|
60913
|
+
input: UpdateHealthyBowlCrewInput;
|
|
60914
|
+
};
|
|
60915
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
60194
60916
|
export type MutationUpdateHealthyBowlCropArgs = {
|
|
60195
60917
|
input: UpdateCropInput;
|
|
60196
60918
|
};
|
|
@@ -60307,6 +61029,10 @@ export type MutationUpdateHealthyBowlIrrigationScheduleArgs = {
|
|
|
60307
61029
|
input: UpdateHealthyBowlIrrigationScheduleInput;
|
|
60308
61030
|
};
|
|
60309
61031
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
61032
|
+
export type MutationUpdateHealthyBowlLabourEntryArgs = {
|
|
61033
|
+
input: UpdateHealthyBowlLabourEntryInput;
|
|
61034
|
+
};
|
|
61035
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
60310
61036
|
export type MutationUpdateHealthyBowlLedgerAccountArgs = {
|
|
60311
61037
|
input: UpdateHealthyBowlLedgerAccountInput;
|
|
60312
61038
|
};
|
|
@@ -60398,6 +61124,10 @@ export type MutationUpdateHealthyBowlSatelliteSettingsArgs = {
|
|
|
60398
61124
|
input: HbUpdateSatelliteSettingsInput;
|
|
60399
61125
|
};
|
|
60400
61126
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
61127
|
+
export type MutationUpdateHealthyBowlSchemeApplicationStatusArgs = {
|
|
61128
|
+
input: UpdateSchemeApplicationStatusInput;
|
|
61129
|
+
};
|
|
61130
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
60401
61131
|
export type MutationUpdateHealthyBowlSeedLotArgs = {
|
|
60402
61132
|
input: UpdateHealthyBowlSeedLotInput;
|
|
60403
61133
|
};
|
|
@@ -60454,6 +61184,10 @@ export type MutationUpdateHealthyBowlWholesaleOrderArgs = {
|
|
|
60454
61184
|
input: UpdateHealthyBowlWholesaleOrderInput;
|
|
60455
61185
|
};
|
|
60456
61186
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
61187
|
+
export type MutationUpdateHealthyBowlWorkerArgs = {
|
|
61188
|
+
input: UpdateHealthyBowlWorkerInput;
|
|
61189
|
+
};
|
|
61190
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
60457
61191
|
export type MutationUpdateHousingvistaAmcContractArgs = {
|
|
60458
61192
|
id: Scalars['ID']['input'];
|
|
60459
61193
|
input: HousingVistaUpdateAmcContractInput;
|
|
@@ -62542,6 +63276,15 @@ export declare enum OverrideType {
|
|
|
62542
63276
|
/** Explicitly grant permission (overrides denial) */
|
|
62543
63277
|
Grant = "GRANT"
|
|
62544
63278
|
}
|
|
63279
|
+
/** The business's own vehicle cost for the same lane. Nothing is assumed: the estimate exists only when the caller supplies its own cost per km, because inventing a fleet's costs would make the comparison meaningless. */
|
|
63280
|
+
export type OwnFleetInput = {
|
|
63281
|
+
/** The business's own cost to run a vehicle one km (fuel, driver, wear), in INR. */
|
|
63282
|
+
costPerKm: Scalars['Float']['input'];
|
|
63283
|
+
/** Road distance between pickup and delivery, in km. */
|
|
63284
|
+
distanceKm: Scalars['Float']['input'];
|
|
63285
|
+
/** Fixed cost per trip (loading, dispatch), in INR. */
|
|
63286
|
+
fixedCost?: InputMaybe<Scalars['Float']['input']>;
|
|
63287
|
+
};
|
|
62545
63288
|
export declare enum PackageKind {
|
|
62546
63289
|
A2AAgent = "A2A_AGENT",
|
|
62547
63290
|
Agent = "AGENT",
|
|
@@ -64952,6 +65695,8 @@ export type PlantingPlan = {
|
|
|
64952
65695
|
bedId?: Maybe<Scalars['ID']['output']>;
|
|
64953
65696
|
cropId?: Maybe<Scalars['ID']['output']>;
|
|
64954
65697
|
cropName: Scalars['String']['output'];
|
|
65698
|
+
/** BOFF-6100 — authoritative plants-per-square-metre derived with the seed figures. */
|
|
65699
|
+
density?: Maybe<Scalars['Float']['output']>;
|
|
64955
65700
|
endDate?: Maybe<Scalars['String']['output']>;
|
|
64956
65701
|
expectedYield?: Maybe<Scalars['Float']['output']>;
|
|
64957
65702
|
fertilizers: Array<Scalars['String']['output']>;
|
|
@@ -66275,6 +67020,11 @@ export type PropertyFilterInput = {
|
|
|
66275
67020
|
property: Scalars['String']['input'];
|
|
66276
67021
|
value?: InputMaybe<Scalars['JSON']['input']>;
|
|
66277
67022
|
};
|
|
67023
|
+
export type ProposeAgronomyDecisionsInput = {
|
|
67024
|
+
context: ContextInput;
|
|
67025
|
+
/** IRRIGATION | TREATMENT. */
|
|
67026
|
+
decisionType: Scalars['String']['input'];
|
|
67027
|
+
};
|
|
66278
67028
|
export type ProvenanceRecord = {
|
|
66279
67029
|
__typename?: 'ProvenanceRecord';
|
|
66280
67030
|
assetId: Scalars['ID']['output'];
|
|
@@ -67705,6 +68455,7 @@ export type Query = {
|
|
|
67705
68455
|
assetDeadlineAlerts: Array<AssetDeadlineAlert>;
|
|
67706
68456
|
assetRegister: Array<Asset>;
|
|
67707
68457
|
assets: Array<Asset>;
|
|
68458
|
+
assignmentSuggestions: MtwAssignmentSuggestions;
|
|
67708
68459
|
/** The transcript of one of my assistant chats, oldest first. */
|
|
67709
68460
|
assistantConversationMessages: Array<AssistantHistoryMessage>;
|
|
67710
68461
|
/** My assistant chats for one product, newest first. */
|
|
@@ -67861,6 +68612,7 @@ export type Query = {
|
|
|
67861
68612
|
callSession?: Maybe<CallSession>;
|
|
67862
68613
|
capacityOverview: CapacityOverview;
|
|
67863
68614
|
cargoItem?: Maybe<MtwCargoItem>;
|
|
68615
|
+
cargoItemStats: MtwCargoItemStats;
|
|
67864
68616
|
cargoItems: Array<MtwCargoItem>;
|
|
67865
68617
|
cargoItemsCount: Scalars['Int']['output'];
|
|
67866
68618
|
changeRequest?: Maybe<ChangeRequest>;
|
|
@@ -68112,6 +68864,7 @@ export type Query = {
|
|
|
68112
68864
|
crewfoundryHealth: Scalars['String']['output'];
|
|
68113
68865
|
customNodes: NodesPaginatedResponse;
|
|
68114
68866
|
customer?: Maybe<MtwCustomer>;
|
|
68867
|
+
customerStats: MtwCustomerStats;
|
|
68115
68868
|
customers: Array<MtwCustomer>;
|
|
68116
68869
|
customersCount: Scalars['Int']['output'];
|
|
68117
68870
|
dashboard?: Maybe<AnalyticsDashboard>;
|
|
@@ -68306,6 +69059,7 @@ export type Query = {
|
|
|
68306
69059
|
/** Find shortest path between two nodes */
|
|
68307
69060
|
findShortestPath?: Maybe<GraphPath>;
|
|
68308
69061
|
findSynonyms: Array<UniversalTag>;
|
|
69062
|
+
fleetAlerts: Array<MtwFleetAlert>;
|
|
68309
69063
|
fleetStats: MtwFleetStats;
|
|
68310
69064
|
/** Tags currently assigned to a FluidGrids entity */
|
|
68311
69065
|
fluidgridsEntityTags: Array<FluidgridsTagAssignment>;
|
|
@@ -68506,7 +69260,11 @@ export type Query = {
|
|
|
68506
69260
|
getHealthyBowlActiveWithdrawals: Array<MedicationTreatment>;
|
|
68507
69261
|
getHealthyBowlAggregationLotDetail: HealthyBowlAggregationLotDetail;
|
|
68508
69262
|
getHealthyBowlAggregationLots: Array<HealthyBowlAggregationLot>;
|
|
69263
|
+
/** Decisions in this workspace, newest first. */
|
|
69264
|
+
getHealthyBowlAgronomyDecisions: Array<AgronomyDecision>;
|
|
68509
69265
|
getHealthyBowlAnalyticsData: HealthyBowlAnalyticsDataPayload;
|
|
69266
|
+
/** BOFF-6022 — download a generated analytics report as a PDF. Re-rendered from the snapshot stored on the report row, never from live data: a report downloaded next month must carry the numbers it was generated with, not today's re-derived under an old title. A report belonging to another workspace answers NOT_FOUND, so its existence is not observable. */
|
|
69267
|
+
getHealthyBowlAnalyticsReportExport: HealthyBowlAccountingExport;
|
|
68510
69268
|
/** Per-animal withdrawal roll-up + treatment history (animal detail / block gates). */
|
|
68511
69269
|
getHealthyBowlAnimalWithdrawalStatus: AnimalWithdrawalStatus;
|
|
68512
69270
|
/** BOFF-6026 — what the farm owns, owes and is worth as of a date. The document a lender asks for. */
|
|
@@ -68534,6 +69292,8 @@ export type Query = {
|
|
|
68534
69292
|
/** Filter by status (OPEN | ACKNOWLEDGED | RESOLVED | DISMISSED) and/or type. */
|
|
68535
69293
|
getHealthyBowlComplianceFlags: Array<ComplianceFlag>;
|
|
68536
69294
|
getHealthyBowlComplianceOverview: HealthyBowlComplianceOverviewPayload;
|
|
69295
|
+
/** BOFF-6043 — the whole audit evidence bundle as one PDF: certifications with their checklists, compliance documents and audit history. Says so plainly when it is truncated. A compliance document that quietly omits rows is worse than one that refuses — an auditor reads absence as "this farm has none". */
|
|
69296
|
+
getHealthyBowlCompliancePack: ComplianceExportFile;
|
|
68537
69297
|
getHealthyBowlCompostBatches: Array<CompostBatch>;
|
|
68538
69298
|
getHealthyBowlConsultantAssignments: Array<HealthyBowlConsultantAssignment>;
|
|
68539
69299
|
getHealthyBowlConsultations: Array<Consultation>;
|
|
@@ -68555,6 +69315,8 @@ export type Query = {
|
|
|
68555
69315
|
getHealthyBowlCoopOverview: HealthyBowlCoopOverview;
|
|
68556
69316
|
getHealthyBowlCostByCrop: HealthyBowlCostByCropReport;
|
|
68557
69317
|
getHealthyBowlCostCenters: Array<HealthyBowlCostCenter>;
|
|
69318
|
+
getHealthyBowlCrewTimesheet: HealthyBowlCrewTimesheet;
|
|
69319
|
+
getHealthyBowlCrews: Array<HealthyBowlCrew>;
|
|
68558
69320
|
/** Fields-list table: every field with its NDVI health score, trend, stressed-zone count and yield estimate. */
|
|
68559
69321
|
getHealthyBowlCropHealthOverview: HbCropHealthOverview;
|
|
68560
69322
|
getHealthyBowlCropsData: HealthyBowlCropsDataPayload;
|
|
@@ -68574,6 +69336,8 @@ export type Query = {
|
|
|
68574
69336
|
/** Distribution dashboard summary (KPI cards + per-channel breakdown). */
|
|
68575
69337
|
getHealthyBowlDistributionSummary: DistributionSummary;
|
|
68576
69338
|
getHealthyBowlEudrStatement: HbEudrStatement;
|
|
69339
|
+
/** BOFF-6030 — bookable slots for a consultant, taken ones marked unavailable. Derived from the consultant's weekly rules minus what is already booked, rather than read from a materialised calendar: materialising forward needs a horizon, and a horizon silently runs out. */
|
|
69340
|
+
getHealthyBowlExpertAvailability: Array<ConsultSlot>;
|
|
68577
69341
|
/** Everything on this farm that wants a human, in one ranked list. `horizonDays` bounds the DATED signals (withdrawal clear dates, scheme deadlines); omitted it defaults to 7 and it is clamped to 1–90. Live signals (sensor alerts, weather events, stressed zones) are not horizon-filtered — they are already now. */
|
|
68578
69342
|
getHealthyBowlFarmAttentionDigest: HealthyBowlAttentionDigest;
|
|
68579
69343
|
/** Sponsor: one contract by id. */
|
|
@@ -68609,6 +69373,8 @@ export type Query = {
|
|
|
68609
69373
|
getHealthyBowlGrowSpaces: Array<GrowSpace>;
|
|
68610
69374
|
getHealthyBowlIcsData: HealthyBowlIcsDataPayload;
|
|
68611
69375
|
getHealthyBowlIcsGroupDetail: IcsGroupDetail;
|
|
69376
|
+
/** BOFF-6043 — the ICS group report: members, conversion status and inspection coverage. Grower mobile numbers are deliberately omitted — an auditor verifying an internal control system does not need them, and a downloadable list of farmers' phone numbers in every audit bundle cannot be recalled once it exists. */
|
|
69377
|
+
getHealthyBowlIcsGroupReport: ComplianceExportFile;
|
|
68612
69378
|
getHealthyBowlIcsGrowerDetail: IcsGrowerDetail;
|
|
68613
69379
|
/** Budget-vs-Actual + Input-Mix + cost-by-crop analytics rolled up from the plan rows. */
|
|
68614
69380
|
getHealthyBowlInputBudgetAnalytics: HealthyBowlInputBudgetAnalytics;
|
|
@@ -68627,11 +69393,15 @@ export type Query = {
|
|
|
68627
69393
|
getHealthyBowlInvoicePdf: HealthyBowlInvoicePdf;
|
|
68628
69394
|
getHealthyBowlJournalEntries: Array<HealthyBowlJournalEntry>;
|
|
68629
69395
|
getHealthyBowlJournalEntry?: Maybe<HealthyBowlJournalEntry>;
|
|
69396
|
+
getHealthyBowlLabourEntries: Array<HealthyBowlLabourEntry>;
|
|
69397
|
+
getHealthyBowlLabourSummary: HealthyBowlLabourSummary;
|
|
68630
69398
|
getHealthyBowlLivestockData: HealthyBowlLivestockDataPayload;
|
|
68631
69399
|
getHealthyBowlLoanFacilitation: HealthyBowlLoanFacilitation;
|
|
68632
69400
|
getHealthyBowlLoanFacilitations: Array<HealthyBowlLoanFacilitation>;
|
|
68633
69401
|
/** Exact balances, immutable schedule, and externally completed money-event history for one loan. */
|
|
68634
69402
|
getHealthyBowlLoanFinancialDetail: HealthyBowlLoanFinancialDetail;
|
|
69403
|
+
/** BOFF-6077 — the release schedule for one facilitated loan, in sequence order. */
|
|
69404
|
+
getHealthyBowlLoanMilestones: Array<HealthyBowlLoanMilestone>;
|
|
68635
69405
|
/** Machinery spend AssetHandler holds for this workspace (BOFF-6121), flagged with whether it has already been imported into the HealthyBowl ledger. Reads are best-effort across the service boundary: when AssetHandler is unreachable this returns an empty list rather than failing, so the Financial section stays usable. */
|
|
68636
69406
|
getHealthyBowlMachinerySpend: Array<HealthyBowlMachinerySpendRow>;
|
|
68637
69407
|
/** A commodity's daily min/modal/max trend over the trailing `days` window (default 30). */
|
|
@@ -68724,6 +69494,7 @@ export type Query = {
|
|
|
68724
69494
|
getHealthyBowlWithdrawalCalendar: Array<WithdrawalCalendarEntry>;
|
|
68725
69495
|
/** The four dashboard stat cards. */
|
|
68726
69496
|
getHealthyBowlWithdrawalSummary: WithdrawalSummary;
|
|
69497
|
+
getHealthyBowlWorkers: Array<HealthyBowlWorker>;
|
|
68727
69498
|
/** The live rule-based season yield forecast for a field (computed from stored NDVI history). */
|
|
68728
69499
|
getHealthyBowlYieldForecast: HbYieldForecast;
|
|
68729
69500
|
/** Saved yield scenarios for a field. */
|
|
@@ -69236,6 +70007,8 @@ export type Query = {
|
|
|
69236
70007
|
healthyBowlAnimalDepth: HealthyBowlAnimalDepthRecord;
|
|
69237
70008
|
/** Animal groups with computed member counts. */
|
|
69238
70009
|
healthyBowlAnimalGroups: Array<HealthyBowlAnimalGroup>;
|
|
70010
|
+
/** An animal's pedigree — ancestors N generations up, plus its recorded offspring. `ancestorDepth` defaults to 4 and is clamped to 1..8; `offspringDepth` defaults to 1 (direct children) and is clamped to 1..4. A depth outside the range is clamped rather than rejected — it reads as "as much as you can give me" — and the applied value is echoed back on the payload. Culled/sold ancestors are RETURNED with `archived: true` rather than dropped, so a branch does not vanish when a cow is sold (BOFF-6011). Offspring are live-only. Reuses the seeded `healthybowl_animal` resource like every other query here — no new RBAC resource, so no seed-gap 403. */
|
|
70011
|
+
healthyBowlAnimalPedigree: HealthyBowlAnimalPedigree;
|
|
69239
70012
|
/** Read a single auction by id. A live auction past endTime auto-closes on read. */
|
|
69240
70013
|
healthyBowlAuction?: Maybe<Auction>;
|
|
69241
70014
|
/** List auctions for the workspace. Pass status to filter (draft/live/closed/cancelled). Live auctions past endTime auto-close on read. */
|
|
@@ -69254,7 +70027,7 @@ export type Query = {
|
|
|
69254
70027
|
healthyBowlGrazing: HealthyBowlGrazingView;
|
|
69255
70028
|
/** Grazing events for one paddock or one animal, newest first. */
|
|
69256
70029
|
healthyBowlGrazingEvents: Array<HealthyBowlGrazingEvent>;
|
|
69257
|
-
/** Deep herd view: one row per animal with group/BCS/ADG/withdrawal + a herd compliance summary.
|
|
70030
|
+
/** Deep herd view: one row per animal with group/BCS/ADG/withdrawal + a herd compliance summary. `search` matches tag number, name or EID (case-insensitive, substring) across the whole herd; `groups[].animalCount` always counts the herd, never the matches. Archived (soft-deleted) animals are excluded unless asked for — they are still valid dam/sire references, which is what `includeArchived` exists for (BOFF-6195). They are additive to `rows` ONLY: `summary` and every `groups[].animalCount` always describe the LIVE herd, so opening a genealogy picker can never move the compliance figures on the herd list. */
|
|
69258
70031
|
healthyBowlHerdDepth: HealthyBowlHerdDepthView;
|
|
69259
70032
|
/** Orders placed AGAINST this farm by a buyer in another workspace. Cross-workspace by necessity — the row lives in the buyer's workspace. `sellerWorkspaceId` is pinned to the caller's own workspace, so a farm can only ever see orders naming itself as seller. */
|
|
69260
70033
|
healthyBowlIncomingOrders: Array<Order>;
|
|
@@ -69284,6 +70057,8 @@ export type Query = {
|
|
|
69284
70057
|
healthyBowlPlantCatalog: Array<PlantCatalogEntry>;
|
|
69285
70058
|
/** I-7 — list planting/execution activities, optionally scoped to a plan or bed. */
|
|
69286
70059
|
healthyBowlPlantingActivities: Array<PlantingActivity>;
|
|
70060
|
+
/** BOFF-6100 — bed capacity and seed rate for a field, derived on the server. The same maths also runs in the browser so a farmer dragging a spacing slider sees numbers move without a round trip. This is the copy that decides what gets *written*: spec 02 §3.8 asks for a pure server-side calculator because two clients could otherwise disagree about plants-per-area for the same field. */
|
|
70061
|
+
healthyBowlPlantingEstimate: HealthyBowlPlantingEstimate;
|
|
69287
70062
|
/** I-8 — planned-vs-actual execution rollup for a single planting plan. */
|
|
69288
70063
|
healthyBowlPlantingPlanExecution: HealthyBowlPlanExecution;
|
|
69289
70064
|
/** Read a single seed lot by id. */
|
|
@@ -69437,8 +70212,10 @@ export type Query = {
|
|
|
69437
70212
|
introspectNode?: Maybe<NodeIntrospection>;
|
|
69438
70213
|
inventoryItem?: Maybe<MtwInventoryItem>;
|
|
69439
70214
|
inventoryItems: Array<MtwInventoryItem>;
|
|
70215
|
+
inventoryItemsCount: Scalars['Int']['output'];
|
|
69440
70216
|
inventoryStats: MtwInventoryStats;
|
|
69441
70217
|
inventoryTransactions: Array<MtwInventoryTransaction>;
|
|
70218
|
+
inventoryTransactionsCount: Scalars['Int']['output'];
|
|
69442
70219
|
/** Get a single invitation by ID. This is the FE invitation-acceptance preview endpoint, so it must work for the invitee before they're a member of the target workspace. We can't gate it on `scopeType: "wspace"` (no workspace token yet), but we MUST require authentication to prevent unauthenticated UUID-enumeration leaking PII (email, roleIds, status). `scopeType: "self"` is the right gateway primitive here — it asserts a valid actor without requiring workspace context — and the resolver enforces the actual ownership predicate (caller is the invitation's recipient OR holds a workspace token for the invitation's workspace). Reviewed: PR #66 claude (HIGH SEC). */
|
|
69443
70220
|
invitation?: Maybe<Invitation>;
|
|
69444
70221
|
/** Get multiple invitations with filtering and pagination. Workspace scope is read from gateway context (x-workspace-id header). */
|
|
@@ -69711,6 +70488,7 @@ export type Query = {
|
|
|
69711
70488
|
myNavPreferences: NavPreferences;
|
|
69712
70489
|
/** Type C self-list: delivery jobs assigned to the CALLING driver that are out for delivery/in transit and still awaiting ePOD capture. Feeds the driver-facing capture flow's job picker. */
|
|
69713
70490
|
myPendingEpodDeliveryJobs: Array<MtwDeliveryJob>;
|
|
70491
|
+
myPendingEpodDeliveryJobsCount: Scalars['Int']['output'];
|
|
69714
70492
|
/** Get all pending invitations for the current authenticated user. Self-scoped: the resolver resolves the invitee email server-side from ctx.actorId; no client-supplied identity is accepted. */
|
|
69715
70493
|
myPendingInvitations: Array<Invitation>;
|
|
69716
70494
|
/** Invitee-side: list pending invites whose `inviteeEmail` matches the caller's email (resolved from the tenant backend). `scopeType: "self"` because access is the user's own email — membership in any workspace is irrelevant. */
|
|
@@ -70132,6 +70910,7 @@ export type Query = {
|
|
|
70132
70910
|
/** List roles with bounded offset metadata for export/reporting clients. */
|
|
70133
70911
|
rolesPage: RolePage;
|
|
70134
70912
|
route?: Maybe<MtwRoute>;
|
|
70913
|
+
routeStats: MtwRouteStats;
|
|
70135
70914
|
routes: Array<MtwRoute>;
|
|
70136
70915
|
routesCount: Scalars['Int']['output'];
|
|
70137
70916
|
runningTimers: Array<RunningTimer>;
|
|
@@ -70253,6 +71032,7 @@ export type Query = {
|
|
|
70253
71032
|
shipmentTracking: Array<MtwTrackingEvent>;
|
|
70254
71033
|
shipments: Array<MtwShipment>;
|
|
70255
71034
|
shipmentsCount: Scalars['Int']['output'];
|
|
71035
|
+
shippingQuotes: MtwShippingQuoteResult;
|
|
70256
71036
|
siemDestinations: Array<SiemDestination>;
|
|
70257
71037
|
softwareAssets: Array<SoftwareAsset>;
|
|
70258
71038
|
subAgent?: Maybe<SubAiAgent>;
|
|
@@ -70599,6 +71379,7 @@ export type Query = {
|
|
|
70599
71379
|
visibilityRules: Array<VisibilityRule>;
|
|
70600
71380
|
waitForSandboxRunning?: Maybe<Sandbox>;
|
|
70601
71381
|
warehouse?: Maybe<MtwWarehouse>;
|
|
71382
|
+
warehouseStats: MtwWarehouseStats;
|
|
70602
71383
|
warehouses: Array<MtwWarehouse>;
|
|
70603
71384
|
warehousesCount: Scalars['Int']['output'];
|
|
70604
71385
|
/** Get specific webhook by ID */
|
|
@@ -71210,6 +71991,11 @@ export type QueryAssetsArgs = {
|
|
|
71210
71991
|
pagination?: InputMaybe<AssetHandlerPaginationInput>;
|
|
71211
71992
|
};
|
|
71212
71993
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
71994
|
+
export type QueryAssignmentSuggestionsArgs = {
|
|
71995
|
+
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
71996
|
+
routeId: Scalars['ID']['input'];
|
|
71997
|
+
};
|
|
71998
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
71213
71999
|
export type QueryAssistantConversationMessagesArgs = {
|
|
71214
72000
|
conversationId: Scalars['ID']['input'];
|
|
71215
72001
|
first?: InputMaybe<Scalars['Int']['input']>;
|
|
@@ -73893,10 +74679,20 @@ export type QueryGetHealthyBowlAggregationLotsArgs = {
|
|
|
73893
74679
|
icsGroupId?: InputMaybe<Scalars['ID']['input']>;
|
|
73894
74680
|
};
|
|
73895
74681
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74682
|
+
export type QueryGetHealthyBowlAgronomyDecisionsArgs = {
|
|
74683
|
+
context: ContextInput;
|
|
74684
|
+
filter?: InputMaybe<AgronomyDecisionFilterInput>;
|
|
74685
|
+
};
|
|
74686
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
73896
74687
|
export type QueryGetHealthyBowlAnalyticsDataArgs = {
|
|
73897
74688
|
context: ContextInput;
|
|
73898
74689
|
};
|
|
73899
74690
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74691
|
+
export type QueryGetHealthyBowlAnalyticsReportExportArgs = {
|
|
74692
|
+
context: ContextInput;
|
|
74693
|
+
reportId: Scalars['ID']['input'];
|
|
74694
|
+
};
|
|
74695
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
73900
74696
|
export type QueryGetHealthyBowlAnimalWithdrawalStatusArgs = {
|
|
73901
74697
|
animalId: Scalars['ID']['input'];
|
|
73902
74698
|
context: ContextInput;
|
|
@@ -73992,6 +74788,10 @@ export type QueryGetHealthyBowlComplianceOverviewArgs = {
|
|
|
73992
74788
|
context: ContextInput;
|
|
73993
74789
|
};
|
|
73994
74790
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74791
|
+
export type QueryGetHealthyBowlCompliancePackArgs = {
|
|
74792
|
+
context: ContextInput;
|
|
74793
|
+
};
|
|
74794
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
73995
74795
|
export type QueryGetHealthyBowlCompostBatchesArgs = {
|
|
73996
74796
|
context: ContextInput;
|
|
73997
74797
|
gardenId?: InputMaybe<Scalars['ID']['input']>;
|
|
@@ -74060,6 +74860,17 @@ export type QueryGetHealthyBowlCostCentersArgs = {
|
|
|
74060
74860
|
kind?: InputMaybe<Scalars['String']['input']>;
|
|
74061
74861
|
};
|
|
74062
74862
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74863
|
+
export type QueryGetHealthyBowlCrewTimesheetArgs = {
|
|
74864
|
+
context: ContextInput;
|
|
74865
|
+
crewId: Scalars['ID']['input'];
|
|
74866
|
+
weekStart?: InputMaybe<Scalars['String']['input']>;
|
|
74867
|
+
};
|
|
74868
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74869
|
+
export type QueryGetHealthyBowlCrewsArgs = {
|
|
74870
|
+
activeOnly?: InputMaybe<Scalars['Boolean']['input']>;
|
|
74871
|
+
context: ContextInput;
|
|
74872
|
+
};
|
|
74873
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74063
74874
|
export type QueryGetHealthyBowlCropHealthOverviewArgs = {
|
|
74064
74875
|
context: ContextInput;
|
|
74065
74876
|
};
|
|
@@ -74145,6 +74956,11 @@ export type QueryGetHealthyBowlEudrStatementArgs = {
|
|
|
74145
74956
|
id: Scalars['ID']['input'];
|
|
74146
74957
|
};
|
|
74147
74958
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74959
|
+
export type QueryGetHealthyBowlExpertAvailabilityArgs = {
|
|
74960
|
+
context: ContextInput;
|
|
74961
|
+
input: HealthyBowlExpertAvailabilityInput;
|
|
74962
|
+
};
|
|
74963
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74148
74964
|
export type QueryGetHealthyBowlFarmAttentionDigestArgs = {
|
|
74149
74965
|
context: ContextInput;
|
|
74150
74966
|
horizonDays?: InputMaybe<Scalars['Int']['input']>;
|
|
@@ -74308,6 +75124,11 @@ export type QueryGetHealthyBowlIcsGroupDetailArgs = {
|
|
|
74308
75124
|
id: Scalars['ID']['input'];
|
|
74309
75125
|
};
|
|
74310
75126
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
75127
|
+
export type QueryGetHealthyBowlIcsGroupReportArgs = {
|
|
75128
|
+
context: ContextInput;
|
|
75129
|
+
icsGroupId: Scalars['ID']['input'];
|
|
75130
|
+
};
|
|
75131
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74311
75132
|
export type QueryGetHealthyBowlIcsGrowerDetailArgs = {
|
|
74312
75133
|
context: ContextInput;
|
|
74313
75134
|
id: Scalars['ID']['input'];
|
|
@@ -74382,6 +75203,23 @@ export type QueryGetHealthyBowlJournalEntryArgs = {
|
|
|
74382
75203
|
id: Scalars['ID']['input'];
|
|
74383
75204
|
};
|
|
74384
75205
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
75206
|
+
export type QueryGetHealthyBowlLabourEntriesArgs = {
|
|
75207
|
+
context: ContextInput;
|
|
75208
|
+
crewId?: InputMaybe<Scalars['ID']['input']>;
|
|
75209
|
+
endDate?: InputMaybe<Scalars['String']['input']>;
|
|
75210
|
+
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
75211
|
+
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
75212
|
+
startDate?: InputMaybe<Scalars['String']['input']>;
|
|
75213
|
+
status?: InputMaybe<Scalars['String']['input']>;
|
|
75214
|
+
workerId?: InputMaybe<Scalars['ID']['input']>;
|
|
75215
|
+
};
|
|
75216
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
75217
|
+
export type QueryGetHealthyBowlLabourSummaryArgs = {
|
|
75218
|
+
context: ContextInput;
|
|
75219
|
+
endDate?: InputMaybe<Scalars['String']['input']>;
|
|
75220
|
+
startDate?: InputMaybe<Scalars['String']['input']>;
|
|
75221
|
+
};
|
|
75222
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74385
75223
|
export type QueryGetHealthyBowlLivestockDataArgs = {
|
|
74386
75224
|
context: ContextInput;
|
|
74387
75225
|
};
|
|
@@ -74401,6 +75239,11 @@ export type QueryGetHealthyBowlLoanFinancialDetailArgs = {
|
|
|
74401
75239
|
loanId: Scalars['ID']['input'];
|
|
74402
75240
|
};
|
|
74403
75241
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
75242
|
+
export type QueryGetHealthyBowlLoanMilestonesArgs = {
|
|
75243
|
+
context: ContextInput;
|
|
75244
|
+
loanId: Scalars['ID']['input'];
|
|
75245
|
+
};
|
|
75246
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74404
75247
|
export type QueryGetHealthyBowlMachinerySpendArgs = {
|
|
74405
75248
|
context: ContextInput;
|
|
74406
75249
|
};
|
|
@@ -74693,6 +75536,12 @@ export type QueryGetHealthyBowlWithdrawalSummaryArgs = {
|
|
|
74693
75536
|
context: ContextInput;
|
|
74694
75537
|
};
|
|
74695
75538
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
75539
|
+
export type QueryGetHealthyBowlWorkersArgs = {
|
|
75540
|
+
activeOnly?: InputMaybe<Scalars['Boolean']['input']>;
|
|
75541
|
+
context: ContextInput;
|
|
75542
|
+
search?: InputMaybe<Scalars['String']['input']>;
|
|
75543
|
+
};
|
|
75544
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
74696
75545
|
export type QueryGetHealthyBowlYieldForecastArgs = {
|
|
74697
75546
|
context: ContextInput;
|
|
74698
75547
|
fieldId: Scalars['ID']['input'];
|
|
@@ -76229,6 +77078,13 @@ export type QueryHealthyBowlAnimalGroupsArgs = {
|
|
|
76229
77078
|
context: ContextInput;
|
|
76230
77079
|
};
|
|
76231
77080
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
77081
|
+
export type QueryHealthyBowlAnimalPedigreeArgs = {
|
|
77082
|
+
ancestorDepth?: InputMaybe<Scalars['Int']['input']>;
|
|
77083
|
+
animalId: Scalars['ID']['input'];
|
|
77084
|
+
context: ContextInput;
|
|
77085
|
+
offspringDepth?: InputMaybe<Scalars['Int']['input']>;
|
|
77086
|
+
};
|
|
77087
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
76232
77088
|
export type QueryHealthyBowlAuctionArgs = {
|
|
76233
77089
|
context: ContextInput;
|
|
76234
77090
|
id: Scalars['ID']['input'];
|
|
@@ -76287,6 +77143,7 @@ export type QueryHealthyBowlGrazingEventsArgs = {
|
|
|
76287
77143
|
export type QueryHealthyBowlHerdDepthArgs = {
|
|
76288
77144
|
context: ContextInput;
|
|
76289
77145
|
groupId?: InputMaybe<Scalars['ID']['input']>;
|
|
77146
|
+
includeArchived?: InputMaybe<Scalars['Boolean']['input']>;
|
|
76290
77147
|
search?: InputMaybe<Scalars['String']['input']>;
|
|
76291
77148
|
};
|
|
76292
77149
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
@@ -76378,6 +77235,11 @@ export type QueryHealthyBowlPlantingActivitiesArgs = {
|
|
|
76378
77235
|
plantingPlanId?: InputMaybe<Scalars['ID']['input']>;
|
|
76379
77236
|
};
|
|
76380
77237
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
77238
|
+
export type QueryHealthyBowlPlantingEstimateArgs = {
|
|
77239
|
+
context: ContextInput;
|
|
77240
|
+
input: HealthyBowlPlantingEstimateInput;
|
|
77241
|
+
};
|
|
77242
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
76381
77243
|
export type QueryHealthyBowlPlantingPlanExecutionArgs = {
|
|
76382
77244
|
context: ContextInput;
|
|
76383
77245
|
plantingPlanId: Scalars['ID']['input'];
|
|
@@ -76950,11 +77812,23 @@ export type QueryInventoryItemsArgs = {
|
|
|
76950
77812
|
pagination?: InputMaybe<PaginationInput>;
|
|
76951
77813
|
};
|
|
76952
77814
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
77815
|
+
export type QueryInventoryItemsCountArgs = {
|
|
77816
|
+
filter?: InputMaybe<InventoryFilterInput>;
|
|
77817
|
+
};
|
|
77818
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
77819
|
+
export type QueryInventoryStatsArgs = {
|
|
77820
|
+
filter?: InputMaybe<InventoryFilterInput>;
|
|
77821
|
+
};
|
|
77822
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
76953
77823
|
export type QueryInventoryTransactionsArgs = {
|
|
76954
77824
|
filter?: InputMaybe<InventoryFilterInput>;
|
|
76955
77825
|
pagination?: InputMaybe<PaginationInput>;
|
|
76956
77826
|
};
|
|
76957
77827
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
77828
|
+
export type QueryInventoryTransactionsCountArgs = {
|
|
77829
|
+
filter?: InputMaybe<InventoryFilterInput>;
|
|
77830
|
+
};
|
|
77831
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
76958
77832
|
export type QueryInvitationArgs = {
|
|
76959
77833
|
id: Scalars['ID']['input'];
|
|
76960
77834
|
};
|
|
@@ -79607,6 +80481,10 @@ export type QueryShipmentsCountArgs = {
|
|
|
79607
80481
|
filter?: InputMaybe<ShipmentFilterInput>;
|
|
79608
80482
|
};
|
|
79609
80483
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
80484
|
+
export type QueryShippingQuotesArgs = {
|
|
80485
|
+
input: ShippingQuoteInput;
|
|
80486
|
+
};
|
|
80487
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
79610
80488
|
export type QuerySiemDestinationsArgs = {
|
|
79611
80489
|
workspaceId: Scalars['ID']['input'];
|
|
79612
80490
|
};
|
|
@@ -81297,6 +82175,16 @@ export type RecordTimeCampusImpersonationInput = {
|
|
|
81297
82175
|
targetUserId: Scalars['ID']['input'];
|
|
81298
82176
|
workspaceId: Scalars['ID']['input'];
|
|
81299
82177
|
};
|
|
82178
|
+
export type RecordVehicleServiceInput = {
|
|
82179
|
+
/** Days until the next service. Sets nextServiceDueDate. */
|
|
82180
|
+
intervalDays?: InputMaybe<Scalars['Int']['input']>;
|
|
82181
|
+
/** Kilometres until the next service. Sets nextServiceDueMileage (needs mileage). */
|
|
82182
|
+
intervalKm?: InputMaybe<Scalars['Float']['input']>;
|
|
82183
|
+
/** Odometer reading at service. Also updates the vehicle mileage when higher. */
|
|
82184
|
+
mileage?: InputMaybe<Scalars['Float']['input']>;
|
|
82185
|
+
/** When the service was performed. Defaults to now. */
|
|
82186
|
+
serviceDate?: InputMaybe<Scalars['DateTime']['input']>;
|
|
82187
|
+
};
|
|
81300
82188
|
export type RecordWorkPatternInput = {
|
|
81301
82189
|
breakHours: Scalars['Float']['input'];
|
|
81302
82190
|
context?: InputMaybe<ContextInput>;
|
|
@@ -81553,6 +82441,14 @@ export type Release = {
|
|
|
81553
82441
|
/** Associated workspace ID */
|
|
81554
82442
|
workspaceId: Scalars['String']['output'];
|
|
81555
82443
|
};
|
|
82444
|
+
export type ReleaseHealthyBowlLoanMilestoneInput = {
|
|
82445
|
+
context: ContextInput;
|
|
82446
|
+
/** The HarvestRecord or PlantingActivity id proving the milestone. Verified in-workspace. */
|
|
82447
|
+
evidenceId?: InputMaybe<Scalars['ID']['input']>;
|
|
82448
|
+
/** Overrides the milestone's own evidenceType, if it was left unset at creation. */
|
|
82449
|
+
evidenceType?: InputMaybe<Scalars['String']['input']>;
|
|
82450
|
+
id: Scalars['ID']['input'];
|
|
82451
|
+
};
|
|
81556
82452
|
export type ReleaseLockInput = {
|
|
81557
82453
|
/** Force release (admin only) */
|
|
81558
82454
|
force?: InputMaybe<Scalars['Boolean']['input']>;
|
|
@@ -81810,6 +82706,20 @@ export type ReportGovAiTokenUsageInput = {
|
|
|
81810
82706
|
/** Deprecated/ignored. Credits are now computed server-side from the model's token prices (input + ~5×output), not from a client-supplied total. Retained (nullable) only so the field removal isn't a breaking schema change. */
|
|
81811
82707
|
totalTokens?: InputMaybe<Scalars['Int']['input']>;
|
|
81812
82708
|
};
|
|
82709
|
+
/** A completed assistant turn's token usage, reported by the client so it can be charged against `healthybowl.ai.credits`. The credit amount is NEVER client-supplied — the resolver prices the turn from billing's per-model table. These fields only identify the turn and its size. */
|
|
82710
|
+
export type ReportHealthyBowlAiTokenUsageInput = {
|
|
82711
|
+
context: ContextInput;
|
|
82712
|
+
/** Prompt (input) tokens consumed by the turn. */
|
|
82713
|
+
inputTokens: Scalars['Int']['input'];
|
|
82714
|
+
/** The assistant message this turn produced. Forms the idempotency hash with sessionId, so a retried or duplicated report never charges twice. */
|
|
82715
|
+
messageId: Scalars['ID']['input'];
|
|
82716
|
+
/** The turn's model id (e.g. "anthropic/claude-sonnet-4-6"). Selects the per-token prices used to weight the charge; an unknown model falls back to billing's `*default*` row rather than charging nothing. */
|
|
82717
|
+
model: Scalars['String']['input'];
|
|
82718
|
+
/** Completion (output) tokens produced by the turn. */
|
|
82719
|
+
outputTokens: Scalars['Int']['input'];
|
|
82720
|
+
/** The assistant session the tokens were consumed in. */
|
|
82721
|
+
sessionId: Scalars['ID']['input'];
|
|
82722
|
+
};
|
|
81813
82723
|
export type ReportMessagePayload = {
|
|
81814
82724
|
__typename?: 'ReportMessagePayload';
|
|
81815
82725
|
messageId: Scalars['ID']['output'];
|
|
@@ -83468,12 +84378,32 @@ export type SchemeApplication = {
|
|
|
83468
84378
|
appliedDate: Scalars['String']['output'];
|
|
83469
84379
|
/** The client-generated idempotency key this application was created with (BOFF-4407 offline outbox), null for applications created online before this field existed. */
|
|
83470
84380
|
clientMutationId?: Maybe<Scalars['String']['output']>;
|
|
84381
|
+
/** The evidence attached to this application, in slot order. Empty for applications created before BOFF-6111, which recorded only a checkbox affirmation in `remarks`. */
|
|
84382
|
+
documents: Array<SchemeApplicationDocument>;
|
|
83471
84383
|
id: Scalars['ID']['output'];
|
|
83472
84384
|
remarks?: Maybe<Scalars['String']['output']>;
|
|
83473
84385
|
schemeId: Scalars['String']['output'];
|
|
83474
84386
|
schemeName: Scalars['String']['output'];
|
|
83475
84387
|
status: Scalars['String']['output'];
|
|
83476
84388
|
};
|
|
84389
|
+
/** One supporting document attached to a scheme application (BOFF-6111). */
|
|
84390
|
+
export type SchemeApplicationDocument = {
|
|
84391
|
+
__typename?: 'SchemeApplicationDocument';
|
|
84392
|
+
/** Opaque wspace-files-svc id. Resolve a download URL with `getFileDownloadUrl`. */
|
|
84393
|
+
fileId: Scalars['String']['output'];
|
|
84394
|
+
fileName?: Maybe<Scalars['String']['output']>;
|
|
84395
|
+
/** Which scheme checklist requirement this file satisfies. */
|
|
84396
|
+
slot: Scalars['String']['output'];
|
|
84397
|
+
uploadedAt: Scalars['String']['output'];
|
|
84398
|
+
};
|
|
84399
|
+
/** One supporting document being attached to a scheme application (BOFF-6111). */
|
|
84400
|
+
export type SchemeApplicationDocumentInput = {
|
|
84401
|
+
/** Opaque wspace-files-svc id from a completed upload. Blank values are discarded; completed, active workspace files are verified server-side before an application is created. */
|
|
84402
|
+
fileId: Scalars['String']['input'];
|
|
84403
|
+
fileName?: InputMaybe<Scalars['String']['input']>;
|
|
84404
|
+
/** Which scheme checklist requirement this file satisfies. Any other value is rejected with BAD_USER_INPUT. */
|
|
84405
|
+
slot: Scalars['String']['input'];
|
|
84406
|
+
};
|
|
83477
84407
|
/** BOFF-6110 — the eligibility verdict for one scheme against one workspace's farm data. */
|
|
83478
84408
|
export type SchemeEligibility = {
|
|
83479
84409
|
__typename?: 'SchemeEligibility';
|
|
@@ -85276,6 +86206,18 @@ export type SetAgentVisibilityInput = {
|
|
|
85276
86206
|
/** `PRIVATE` = owner only. `WORKSPACE` = every member with the matching `@rbac` permission. */
|
|
85277
86207
|
visibility: VibecontrolsAgentVisibility;
|
|
85278
86208
|
};
|
|
86209
|
+
export type SetHealthyBowlConsultAvailabilityInput = {
|
|
86210
|
+
consultantId: Scalars['String']['input'];
|
|
86211
|
+
context: ContextInput;
|
|
86212
|
+
/** 0 = Sunday … 6 = Saturday. */
|
|
86213
|
+
dayOfWeek: Scalars['Int']['input'];
|
|
86214
|
+
endTime: Scalars['String']['input'];
|
|
86215
|
+
slotMinutes?: InputMaybe<Scalars['Int']['input']>;
|
|
86216
|
+
/** Local wall-clock HH:MM — a consultant's working day does not move when the clocks do. */
|
|
86217
|
+
startTime: Scalars['String']['input'];
|
|
86218
|
+
/** ACTIVE or PAUSED. */
|
|
86219
|
+
status?: InputMaybe<Scalars['String']['input']>;
|
|
86220
|
+
};
|
|
85279
86221
|
export type SetHealthyBowlEntityTagsInput = {
|
|
85280
86222
|
context: ContextInput;
|
|
85281
86223
|
entityId: Scalars['ID']['input'];
|
|
@@ -85292,6 +86234,12 @@ export type SetHealthyBowlInsuranceDocumentInput = {
|
|
|
85292
86234
|
id: Scalars['ID']['input'];
|
|
85293
86235
|
notApplicable?: InputMaybe<Scalars['Boolean']['input']>;
|
|
85294
86236
|
};
|
|
86237
|
+
export type SetHealthyBowlLoanEscrowCommitmentInput = {
|
|
86238
|
+
context: ContextInput;
|
|
86239
|
+
/** What the lender has agreed to release across this loan. Cannot exceed the loan amount. */
|
|
86240
|
+
escrowCommitted: Scalars['Float']['input'];
|
|
86241
|
+
id: Scalars['ID']['input'];
|
|
86242
|
+
};
|
|
85295
86243
|
export type SetHealthyBowlPaddockRestInput = {
|
|
85296
86244
|
context: ContextInput;
|
|
85297
86245
|
paddockId: Scalars['ID']['input'];
|
|
@@ -85729,11 +86677,13 @@ export type ShipmentFilterInput = {
|
|
|
85729
86677
|
carrierId?: InputMaybe<Scalars['ID']['input']>;
|
|
85730
86678
|
customerId?: InputMaybe<Scalars['ID']['input']>;
|
|
85731
86679
|
deliveryJobId?: InputMaybe<Scalars['ID']['input']>;
|
|
86680
|
+
driverId?: InputMaybe<Scalars['ID']['input']>;
|
|
85732
86681
|
isMultiModal?: InputMaybe<Scalars['Boolean']['input']>;
|
|
85733
86682
|
primaryMode?: InputMaybe<TransportMode>;
|
|
85734
86683
|
search?: InputMaybe<Scalars['String']['input']>;
|
|
85735
86684
|
status?: InputMaybe<ShipmentStatus>;
|
|
85736
86685
|
storeOrderId?: InputMaybe<Scalars['ID']['input']>;
|
|
86686
|
+
vehicleId?: InputMaybe<Scalars['ID']['input']>;
|
|
85737
86687
|
};
|
|
85738
86688
|
export declare enum ShipmentLegStatus {
|
|
85739
86689
|
Arrived = "ARRIVED",
|
|
@@ -85751,6 +86701,20 @@ export declare enum ShipmentStatus {
|
|
|
85751
86701
|
Planned = "PLANNED",
|
|
85752
86702
|
Returned = "RETURNED"
|
|
85753
86703
|
}
|
|
86704
|
+
export type ShippingQuoteInput = {
|
|
86705
|
+
/** Cash on delivery. */
|
|
86706
|
+
cod?: InputMaybe<Scalars['Boolean']['input']>;
|
|
86707
|
+
deliveryPostcode: Scalars['String']['input'];
|
|
86708
|
+
heightCm?: InputMaybe<Scalars['Float']['input']>;
|
|
86709
|
+
/** Optional package size in cm; all three or none. Volumetric weight is applied when larger. */
|
|
86710
|
+
lengthCm?: InputMaybe<Scalars['Float']['input']>;
|
|
86711
|
+
/** When given, the result also carries an own-fleet cost estimate for the same lane. */
|
|
86712
|
+
ownFleet?: InputMaybe<OwnFleetInput>;
|
|
86713
|
+
pickupPostcode: Scalars['String']['input'];
|
|
86714
|
+
/** Dead weight in kg. */
|
|
86715
|
+
weightKg: Scalars['Float']['input'];
|
|
86716
|
+
widthCm?: InputMaybe<Scalars['Float']['input']>;
|
|
86717
|
+
};
|
|
85754
86718
|
/** A registered SIEM export destination. `hmacSecret` is never exposed over GraphQL — only returned once, out-of-band of this type, at creation/rotation time via `SiemDestinationSecretResult`. */
|
|
85755
86719
|
export type SiemDestination = {
|
|
85756
86720
|
__typename?: 'SiemDestination';
|
|
@@ -90360,6 +91324,7 @@ export type TimeCampusDataErasureRequest = {
|
|
|
90360
91324
|
__typename?: 'TimeCampusDataErasureRequest';
|
|
90361
91325
|
completedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
90362
91326
|
id: Scalars['ID']['output'];
|
|
91327
|
+
notes?: Maybe<Scalars['String']['output']>;
|
|
90363
91328
|
requestedAt: Scalars['DateTime']['output'];
|
|
90364
91329
|
requestedBy: Scalars['ID']['output'];
|
|
90365
91330
|
status: TimeCampusDataErasureStatus;
|
|
@@ -92202,6 +93167,8 @@ export type UpdateAssetInput = {
|
|
|
92202
93167
|
};
|
|
92203
93168
|
export type UpdateAuditInput = {
|
|
92204
93169
|
auditor?: InputMaybe<Scalars['String']['input']>;
|
|
93170
|
+
/** The certification this audit was carried out against. Pass null to unlink it — the Active gate must not become permanent once a link is set. */
|
|
93171
|
+
certificationId?: InputMaybe<Scalars['ID']['input']>;
|
|
92205
93172
|
completedDate?: InputMaybe<Scalars['String']['input']>;
|
|
92206
93173
|
context: ContextInput;
|
|
92207
93174
|
criticalFindings?: InputMaybe<Scalars['Int']['input']>;
|
|
@@ -93488,6 +94455,8 @@ export type UpdateHarvestRecordInput = {
|
|
|
93488
94455
|
fieldId?: InputMaybe<Scalars['ID']['input']>;
|
|
93489
94456
|
harvestDate?: InputMaybe<Scalars['String']['input']>;
|
|
93490
94457
|
id: Scalars['ID']['input'];
|
|
94458
|
+
/** BOFF-6056 — attach a banked harvest to the plan it came from, after the fact. `createHarvestRecord` has always accepted this, but the update path did not, so a harvest recorded without it was stranded outside plan-vs-actual forever. That is why `PlanExecutionPanel` renders actual: 0 against a real harvest — the panel is correct, the link was simply never writable a second time. */
|
|
94459
|
+
plantingPlanId?: InputMaybe<Scalars['ID']['input']>;
|
|
93491
94460
|
pricePerUnit?: InputMaybe<Scalars['Float']['input']>;
|
|
93492
94461
|
quality?: InputMaybe<Scalars['String']['input']>;
|
|
93493
94462
|
quantity?: InputMaybe<Scalars['Float']['input']>;
|
|
@@ -93705,6 +94674,7 @@ export type UpdateHealthyBowlAnimalDepthInput = {
|
|
|
93705
94674
|
context: ContextInput;
|
|
93706
94675
|
/** Loose link to another animal (dam). Pass null to clear. */
|
|
93707
94676
|
damId?: InputMaybe<Scalars['ID']['input']>;
|
|
94677
|
+
/** EID / RFID electronic tag. Stored exactly as typed — trimmed, with runs of inner whitespace collapsed to one space — because the spacing is how a farmer reads the tag off the device. Unique per workspace across live animals, compared case-insensitively and ignoring every non-alphanumeric character: `982 000123456789`, `982000123456789` and `982-000123456789` are ONE tag. A clash is rejected with `extensions.code = "CONFLICT"` and a message naming the tag number of the animal that already holds it. A soft-deleted animal does not hold its EID, so a culled animal's tag can be reused. At most 100 characters; only letters, digits, spaces, `-` and `_`, and at least one letter or digit. Anything else is rejected with `BAD_USER_INPUT`. Pass `null` or an empty string to clear it; any number of animals may have no EID. */
|
|
93708
94678
|
eidTag?: InputMaybe<Scalars['String']['input']>;
|
|
93709
94679
|
grazingNotes?: InputMaybe<Scalars['String']['input']>;
|
|
93710
94680
|
grazingPaddock?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -93786,6 +94756,14 @@ export type UpdateHealthyBowlCostCenterInput = {
|
|
|
93786
94756
|
yieldQuantity?: InputMaybe<Scalars['Float']['input']>;
|
|
93787
94757
|
yieldUnit?: InputMaybe<Scalars['String']['input']>;
|
|
93788
94758
|
};
|
|
94759
|
+
export type UpdateHealthyBowlCrewInput = {
|
|
94760
|
+
context: ContextInput;
|
|
94761
|
+
id: Scalars['ID']['input'];
|
|
94762
|
+
isActive?: InputMaybe<Scalars['Boolean']['input']>;
|
|
94763
|
+
leadWorkerId?: InputMaybe<Scalars['ID']['input']>;
|
|
94764
|
+
name: Scalars['String']['input'];
|
|
94765
|
+
workerIds?: InputMaybe<Array<Scalars['ID']['input']>>;
|
|
94766
|
+
};
|
|
93789
94767
|
export type UpdateHealthyBowlCsaDeliveryInput = {
|
|
93790
94768
|
context: ContextInput;
|
|
93791
94769
|
id: Scalars['ID']['input'];
|
|
@@ -93923,6 +94901,7 @@ export type UpdateHealthyBowlInsurancePolicyInput = {
|
|
|
93923
94901
|
status?: InputMaybe<Scalars['String']['input']>;
|
|
93924
94902
|
};
|
|
93925
94903
|
export type UpdateHealthyBowlIrrigationAutomationInput = {
|
|
94904
|
+
autoTaskEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
|
93926
94905
|
context: ContextInput;
|
|
93927
94906
|
id: Scalars['ID']['input'];
|
|
93928
94907
|
notifyInApp?: InputMaybe<Scalars['Boolean']['input']>;
|
|
@@ -93944,6 +94923,22 @@ export type UpdateHealthyBowlIrrigationScheduleInput = {
|
|
|
93944
94923
|
/** Set to active / paused to resume or pause the schedule. */
|
|
93945
94924
|
status?: InputMaybe<Scalars['String']['input']>;
|
|
93946
94925
|
};
|
|
94926
|
+
export type UpdateHealthyBowlLabourEntryInput = {
|
|
94927
|
+
context: ContextInput;
|
|
94928
|
+
costCenterId: Scalars['ID']['input'];
|
|
94929
|
+
crewId?: InputMaybe<Scalars['ID']['input']>;
|
|
94930
|
+
cropId?: InputMaybe<Scalars['ID']['input']>;
|
|
94931
|
+
date?: InputMaybe<Scalars['String']['input']>;
|
|
94932
|
+
fieldId?: InputMaybe<Scalars['ID']['input']>;
|
|
94933
|
+
hours?: InputMaybe<Scalars['Float']['input']>;
|
|
94934
|
+
id: Scalars['ID']['input'];
|
|
94935
|
+
note?: InputMaybe<Scalars['String']['input']>;
|
|
94936
|
+
quantity?: InputMaybe<Scalars['Float']['input']>;
|
|
94937
|
+
rateAmount?: InputMaybe<Scalars['Float']['input']>;
|
|
94938
|
+
rateType?: InputMaybe<Scalars['String']['input']>;
|
|
94939
|
+
taskId?: InputMaybe<Scalars['String']['input']>;
|
|
94940
|
+
workerId: Scalars['ID']['input'];
|
|
94941
|
+
};
|
|
93947
94942
|
export type UpdateHealthyBowlLedgerAccountInput = {
|
|
93948
94943
|
accountType?: InputMaybe<Scalars['String']['input']>;
|
|
93949
94944
|
context: ContextInput;
|
|
@@ -94121,6 +95116,19 @@ export type UpdateHealthyBowlWholesaleOrderInput = {
|
|
|
94121
95116
|
pricePerKg?: InputMaybe<Scalars['Float']['input']>;
|
|
94122
95117
|
quantityKg?: InputMaybe<Scalars['Float']['input']>;
|
|
94123
95118
|
};
|
|
95119
|
+
export type UpdateHealthyBowlWorkerInput = {
|
|
95120
|
+
context: ContextInput;
|
|
95121
|
+
dailyWage?: InputMaybe<Scalars['Float']['input']>;
|
|
95122
|
+
employmentType?: InputMaybe<Scalars['String']['input']>;
|
|
95123
|
+
hourlyRate?: InputMaybe<Scalars['Float']['input']>;
|
|
95124
|
+
id: Scalars['ID']['input'];
|
|
95125
|
+
isActive?: InputMaybe<Scalars['Boolean']['input']>;
|
|
95126
|
+
linkedActorId?: InputMaybe<Scalars['String']['input']>;
|
|
95127
|
+
name: Scalars['String']['input'];
|
|
95128
|
+
phone?: InputMaybe<Scalars['String']['input']>;
|
|
95129
|
+
piecePrice?: InputMaybe<Scalars['Float']['input']>;
|
|
95130
|
+
skills?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
95131
|
+
};
|
|
94124
95132
|
export type UpdateIcsGroupInput = {
|
|
94125
95133
|
certificationId?: InputMaybe<Scalars['ID']['input']>;
|
|
94126
95134
|
code?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -94436,24 +95444,31 @@ export type UpdatePipelineStageInput = {
|
|
|
94436
95444
|
export type UpdatePlantingPlanInput = {
|
|
94437
95445
|
/** Optional loose link to a Bed (no FK). */
|
|
94438
95446
|
bedId?: InputMaybe<Scalars['ID']['input']>;
|
|
95447
|
+
bedWidthM?: InputMaybe<Scalars['Float']['input']>;
|
|
94439
95448
|
context: ContextInput;
|
|
94440
95449
|
cropId?: InputMaybe<Scalars['ID']['input']>;
|
|
95450
|
+
/** BOFF-6100 — server-derived density on bed fields; caller fallback only for non-bed/no-area fields. */
|
|
95451
|
+
density?: InputMaybe<Scalars['Float']['input']>;
|
|
94441
95452
|
endDate?: InputMaybe<Scalars['String']['input']>;
|
|
94442
95453
|
expectedYield?: InputMaybe<Scalars['Float']['input']>;
|
|
94443
95454
|
fertilizers?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
94444
95455
|
fieldId?: InputMaybe<Scalars['ID']['input']>;
|
|
94445
95456
|
id: Scalars['ID']['input'];
|
|
95457
|
+
pathWidthM?: InputMaybe<Scalars['Float']['input']>;
|
|
94446
95458
|
/** Optional loose link to a PlantCatalog entry (no FK). */
|
|
94447
95459
|
plantCatalogId?: InputMaybe<Scalars['ID']['input']>;
|
|
95460
|
+
/** Optional geometry. Supplying any of these causes the server to derive all plan figures together. */
|
|
95461
|
+
plantSpacingCm?: InputMaybe<Scalars['Float']['input']>;
|
|
94448
95462
|
/** I-5 seed-rate result — total plants required. */
|
|
94449
95463
|
plantsNeeded?: InputMaybe<Scalars['Int']['input']>;
|
|
94450
95464
|
priority?: InputMaybe<Scalars['String']['input']>;
|
|
95465
|
+
rowSpacingCm?: InputMaybe<Scalars['Float']['input']>;
|
|
94451
95466
|
/** Growing season. Must be one of: KHARIF, RABI, ZAID, PERENNIAL (case-insensitive). */
|
|
94452
95467
|
season?: InputMaybe<Scalars['String']['input']>;
|
|
94453
95468
|
/** I-5 seed-rate result — grams of seed required. */
|
|
94454
95469
|
seedGrams?: InputMaybe<Scalars['Float']['input']>;
|
|
94455
95470
|
seedRequired?: InputMaybe<Scalars['Float']['input']>;
|
|
94456
|
-
/** I-5 seed-rate result — seedlings/transplants to raise. */
|
|
95471
|
+
/** I-5 seed-rate result — seedlings/transplants to raise. Server-derived when this update touches planting inputs. */
|
|
94457
95472
|
seedlingsToRaise?: InputMaybe<Scalars['Int']['input']>;
|
|
94458
95473
|
/** Sow/nursery-start date (ISO); distinct from the transplant startDate. */
|
|
94459
95474
|
sowDate?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -94792,6 +95807,14 @@ export type UpdateScheduledJobInput = {
|
|
|
94792
95807
|
timeWindows?: InputMaybe<Scalars['JSON']['input']>;
|
|
94793
95808
|
timezone?: InputMaybe<Scalars['String']['input']>;
|
|
94794
95809
|
};
|
|
95810
|
+
export type UpdateSchemeApplicationStatusInput = {
|
|
95811
|
+
context: ContextInput;
|
|
95812
|
+
id: Scalars['ID']['input'];
|
|
95813
|
+
/** Officer-visible reason; applicant notes remain unchanged. */
|
|
95814
|
+
remarks?: InputMaybe<Scalars['String']['input']>;
|
|
95815
|
+
/** SUBMITTED | UNDER_REVIEW | APPROVED | REJECTED | DISBURSED. */
|
|
95816
|
+
status: Scalars['String']['input'];
|
|
95817
|
+
};
|
|
94795
95818
|
export declare enum UpdateScope {
|
|
94796
95819
|
AllEvents = "ALL_EVENTS",
|
|
94797
95820
|
ThisAndFuture = "THIS_AND_FUTURE",
|
|
@@ -95196,10 +96219,13 @@ export type UpdateVehicleInput = {
|
|
|
95196
96219
|
fuelEfficiencyLPer100Km?: InputMaybe<Scalars['Float']['input']>;
|
|
95197
96220
|
fuelLevel?: InputMaybe<Scalars['Float']['input']>;
|
|
95198
96221
|
fuelType?: InputMaybe<FuelType>;
|
|
96222
|
+
lastServiceDate?: InputMaybe<Scalars['DateTime']['input']>;
|
|
95199
96223
|
licensePlate?: InputMaybe<Scalars['String']['input']>;
|
|
95200
96224
|
make?: InputMaybe<Scalars['String']['input']>;
|
|
95201
96225
|
mileage?: InputMaybe<Scalars['Float']['input']>;
|
|
95202
96226
|
model?: InputMaybe<Scalars['String']['input']>;
|
|
96227
|
+
nextServiceDueDate?: InputMaybe<Scalars['DateTime']['input']>;
|
|
96228
|
+
nextServiceDueMileage?: InputMaybe<Scalars['Float']['input']>;
|
|
95203
96229
|
ownershipType?: InputMaybe<Scalars['String']['input']>;
|
|
95204
96230
|
status?: InputMaybe<VehicleStatus>;
|
|
95205
96231
|
type?: InputMaybe<VehicleType>;
|
|
@@ -95739,6 +96765,8 @@ export type UpsertHealthyBowlSoilCarbonEstimateInput = {
|
|
|
95739
96765
|
export type UpsertHealthyBowlWeatherAlertSettingsInput = {
|
|
95740
96766
|
advisoryLanguage?: InputMaybe<Scalars['String']['input']>;
|
|
95741
96767
|
aiAdvisoryEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
|
96768
|
+
/** Destination for EMAIL alerts. Rejected with BAD_USER_INPUT if it is not a usable address. */
|
|
96769
|
+
alertEmail?: InputMaybe<Scalars['String']['input']>;
|
|
95742
96770
|
alertLeadTimeHours?: InputMaybe<Scalars['Int']['input']>;
|
|
95743
96771
|
baselineYears?: InputMaybe<Scalars['Int']['input']>;
|
|
95744
96772
|
context: ContextInput;
|
|
@@ -95749,6 +96777,8 @@ export type UpsertHealthyBowlWeatherAlertSettingsInput = {
|
|
|
95749
96777
|
quietHoursEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
|
95750
96778
|
quietHoursEnd?: InputMaybe<Scalars['String']['input']>;
|
|
95751
96779
|
quietHoursStart?: InputMaybe<Scalars['String']['input']>;
|
|
96780
|
+
/** IANA zone the quiet window is evaluated in. Null means UTC, which is rarely what a farm means. */
|
|
96781
|
+
quietHoursTimezone?: InputMaybe<Scalars['String']['input']>;
|
|
95752
96782
|
smsEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
|
95753
96783
|
smsNumber?: InputMaybe<Scalars['String']['input']>;
|
|
95754
96784
|
units?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -98442,6 +99472,8 @@ export type WeatherAlertSettings = {
|
|
|
98442
99472
|
__typename?: 'WeatherAlertSettings';
|
|
98443
99473
|
advisoryLanguage: Scalars['String']['output'];
|
|
98444
99474
|
aiAdvisoryEnabled: Scalars['Boolean']['output'];
|
|
99475
|
+
/** Where an EMAIL alert is sent. Without it `emailEnabled` cannot deliver anything (BOFF-6027). */
|
|
99476
|
+
alertEmail?: Maybe<Scalars['String']['output']>;
|
|
98445
99477
|
alertLeadTimeHours: Scalars['Int']['output'];
|
|
98446
99478
|
baselineYears: Scalars['Int']['output'];
|
|
98447
99479
|
deviationThresholdPct: Scalars['Int']['output'];
|
|
@@ -98451,9 +99483,13 @@ export type WeatherAlertSettings = {
|
|
|
98451
99483
|
historyLastSyncedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
98452
99484
|
historyStartYear?: Maybe<Scalars['Int']['output']>;
|
|
98453
99485
|
inAppEnabled: Scalars['Boolean']['output'];
|
|
99486
|
+
/** True once a human has saved these settings. Until then the quiet window is NOT enforced — the toggle defaults on and the row is auto-created, so acting on the default would mute farms that never chose it (BOFF-6027). */
|
|
99487
|
+
quietHoursConfigured: Scalars['Boolean']['output'];
|
|
98454
99488
|
quietHoursEnabled: Scalars['Boolean']['output'];
|
|
98455
99489
|
quietHoursEnd: Scalars['String']['output'];
|
|
98456
99490
|
quietHoursStart: Scalars['String']['output'];
|
|
99491
|
+
/** IANA zone the window is evaluated in. Null means UTC. */
|
|
99492
|
+
quietHoursTimezone?: Maybe<Scalars['String']['output']>;
|
|
98457
99493
|
smsEnabled: Scalars['Boolean']['output'];
|
|
98458
99494
|
smsNumber?: Maybe<Scalars['String']['output']>;
|
|
98459
99495
|
/** metric or imperial. */
|
|
@@ -99832,6 +100868,8 @@ export type Workspace = {
|
|
|
99832
100868
|
id: Scalars['ID']['output'];
|
|
99833
100869
|
/** Apps installed in this workspace */
|
|
99834
100870
|
installedApps: Array<WorkspaceInstalledApp>;
|
|
100871
|
+
/** Platform-controlled disposable-workspace marker (BOFF-6560). true only for workspaces created through createDisposableWorkspace (service-actor-only); every other workspace — including ones with a "test"/"demo"-looking name — is false and cannot be reclassified after creation. wspace services use this as the authoritative precondition before running destructive demo/test-only seed or teardown operations against a workspace. */
|
|
100872
|
+
isDisposable: Scalars['Boolean']['output'];
|
|
99835
100873
|
/** Display name of the workspace */
|
|
99836
100874
|
name: Scalars['String']['output'];
|
|
99837
100875
|
/** Organization ID if part of an organization (opaque reference) */
|