@layer-drone/protocol 2.0.0 → 2.2.0
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/index.d.mts +190 -2
- package/dist/index.d.ts +190 -2
- package/dist/index.js +39 -2
- package/dist/index.mjs +38 -2
- package/package.json +2 -2
- package/src/client/sdk.gen.ts +32 -0
- package/src/client/types.gen.ts +63 -1
- package/src/event/types.gen.ts +7 -0
package/dist/index.js
CHANGED
|
@@ -80,6 +80,7 @@ __export(index_exports, {
|
|
|
80
80
|
flightPlansControllerCreate0V1: () => flightPlansControllerCreate0V1,
|
|
81
81
|
flightPlansControllerCreate1: () => flightPlansControllerCreate1,
|
|
82
82
|
flightPlansControllerCreateV2V2: () => flightPlansControllerCreateV2V2,
|
|
83
|
+
flightPlansControllerExpandV2V2: () => flightPlansControllerExpandV2V2,
|
|
83
84
|
flightPlansControllerGet0V1: () => flightPlansControllerGet0V1,
|
|
84
85
|
flightPlansControllerGet1: () => flightPlansControllerGet1,
|
|
85
86
|
flightPlansControllerGetMany0V1: () => flightPlansControllerGetMany0V1,
|
|
@@ -3387,6 +3388,22 @@ var flightPlansControllerUpdateV2V2 = /* @__PURE__ */ __name((options) => {
|
|
|
3387
3388
|
}
|
|
3388
3389
|
});
|
|
3389
3390
|
}, "flightPlansControllerUpdateV2V2");
|
|
3391
|
+
var flightPlansControllerExpandV2V2 = /* @__PURE__ */ __name((options) => {
|
|
3392
|
+
return (options.client ?? client).post({
|
|
3393
|
+
security: [
|
|
3394
|
+
{
|
|
3395
|
+
name: "x-api-token",
|
|
3396
|
+
type: "apiKey"
|
|
3397
|
+
}
|
|
3398
|
+
],
|
|
3399
|
+
url: "/v2/flight-plans/{id}/expand",
|
|
3400
|
+
...options,
|
|
3401
|
+
headers: {
|
|
3402
|
+
"Content-Type": "application/json",
|
|
3403
|
+
...options.headers
|
|
3404
|
+
}
|
|
3405
|
+
});
|
|
3406
|
+
}, "flightPlansControllerExpandV2V2");
|
|
3390
3407
|
var flightsControllerGetFlightsV2V2 = /* @__PURE__ */ __name((options) => {
|
|
3391
3408
|
return (options?.client ?? client).get({
|
|
3392
3409
|
security: [
|
|
@@ -3709,7 +3726,17 @@ var Event = import_zod.z.union([
|
|
|
3709
3726
|
requestor: import_zod.z.string().regex(new RegExp("^0x[a-fA-F0-9]{40}$")),
|
|
3710
3727
|
collateralTokenAddress: import_zod.z.string().regex(new RegExp("^0x[a-fA-F0-9]{40}$")),
|
|
3711
3728
|
chainId: import_zod.z.number(),
|
|
3712
|
-
tags: import_zod.z.record(import_zod.z.string())
|
|
3729
|
+
tags: import_zod.z.record(import_zod.z.string()),
|
|
3730
|
+
isOpen: import_zod.z.boolean().optional(),
|
|
3731
|
+
closedAt: import_zod.z.string().datetime({
|
|
3732
|
+
offset: true
|
|
3733
|
+
}).optional(),
|
|
3734
|
+
createdAt: import_zod.z.string().datetime({
|
|
3735
|
+
offset: true
|
|
3736
|
+
}).optional(),
|
|
3737
|
+
vaultCreatedAt: import_zod.z.string().datetime({
|
|
3738
|
+
offset: true
|
|
3739
|
+
}).optional()
|
|
3713
3740
|
}).catchall(import_zod.z.any())
|
|
3714
3741
|
}).catchall(import_zod.z.any()),
|
|
3715
3742
|
import_zod.z.object({
|
|
@@ -3790,7 +3817,10 @@ var Event = import_zod.z.union([
|
|
|
3790
3817
|
missionId: import_zod.z.object({
|
|
3791
3818
|
__type: import_zod.z.literal("bigint"),
|
|
3792
3819
|
value: import_zod.z.string()
|
|
3793
|
-
}).transform((wire) => BigInt(wire.value))
|
|
3820
|
+
}).transform((wire) => BigInt(wire.value)),
|
|
3821
|
+
createdAt: import_zod.z.string().datetime({
|
|
3822
|
+
offset: true
|
|
3823
|
+
}).optional()
|
|
3794
3824
|
}).catchall(import_zod.z.any())
|
|
3795
3825
|
}).catchall(import_zod.z.any()),
|
|
3796
3826
|
import_zod.z.object({
|
|
@@ -3805,6 +3835,9 @@ var Event = import_zod.z.union([
|
|
|
3805
3835
|
is_flyable: import_zod.z.boolean(),
|
|
3806
3836
|
deleted_at: import_zod.z.string().datetime({
|
|
3807
3837
|
offset: true
|
|
3838
|
+
}).optional(),
|
|
3839
|
+
created_at: import_zod.z.string().datetime({
|
|
3840
|
+
offset: true
|
|
3808
3841
|
}).optional()
|
|
3809
3842
|
}).catchall(import_zod.z.any()),
|
|
3810
3843
|
changes: import_zod.z.object({
|
|
@@ -3812,6 +3845,9 @@ var Event = import_zod.z.union([
|
|
|
3812
3845
|
is_flyable: import_zod.z.boolean().optional(),
|
|
3813
3846
|
deleted_at: import_zod.z.string().datetime({
|
|
3814
3847
|
offset: true
|
|
3848
|
+
}).optional(),
|
|
3849
|
+
created_at: import_zod.z.string().datetime({
|
|
3850
|
+
offset: true
|
|
3815
3851
|
}).optional()
|
|
3816
3852
|
}).catchall(import_zod.z.any()).optional()
|
|
3817
3853
|
}).catchall(import_zod.z.any())
|
|
@@ -3921,6 +3957,7 @@ __name(getFirstHeader, "getFirstHeader");
|
|
|
3921
3957
|
flightPlansControllerCreate0V1,
|
|
3922
3958
|
flightPlansControllerCreate1,
|
|
3923
3959
|
flightPlansControllerCreateV2V2,
|
|
3960
|
+
flightPlansControllerExpandV2V2,
|
|
3924
3961
|
flightPlansControllerGet0V1,
|
|
3925
3962
|
flightPlansControllerGet1,
|
|
3926
3963
|
flightPlansControllerGetMany0V1,
|
package/dist/index.mjs
CHANGED
|
@@ -3201,6 +3201,22 @@ var flightPlansControllerUpdateV2V2 = /* @__PURE__ */ __name((options) => {
|
|
|
3201
3201
|
}
|
|
3202
3202
|
});
|
|
3203
3203
|
}, "flightPlansControllerUpdateV2V2");
|
|
3204
|
+
var flightPlansControllerExpandV2V2 = /* @__PURE__ */ __name((options) => {
|
|
3205
|
+
return (options.client ?? client).post({
|
|
3206
|
+
security: [
|
|
3207
|
+
{
|
|
3208
|
+
name: "x-api-token",
|
|
3209
|
+
type: "apiKey"
|
|
3210
|
+
}
|
|
3211
|
+
],
|
|
3212
|
+
url: "/v2/flight-plans/{id}/expand",
|
|
3213
|
+
...options,
|
|
3214
|
+
headers: {
|
|
3215
|
+
"Content-Type": "application/json",
|
|
3216
|
+
...options.headers
|
|
3217
|
+
}
|
|
3218
|
+
});
|
|
3219
|
+
}, "flightPlansControllerExpandV2V2");
|
|
3204
3220
|
var flightsControllerGetFlightsV2V2 = /* @__PURE__ */ __name((options) => {
|
|
3205
3221
|
return (options?.client ?? client).get({
|
|
3206
3222
|
security: [
|
|
@@ -3523,7 +3539,17 @@ var Event = z.union([
|
|
|
3523
3539
|
requestor: z.string().regex(new RegExp("^0x[a-fA-F0-9]{40}$")),
|
|
3524
3540
|
collateralTokenAddress: z.string().regex(new RegExp("^0x[a-fA-F0-9]{40}$")),
|
|
3525
3541
|
chainId: z.number(),
|
|
3526
|
-
tags: z.record(z.string())
|
|
3542
|
+
tags: z.record(z.string()),
|
|
3543
|
+
isOpen: z.boolean().optional(),
|
|
3544
|
+
closedAt: z.string().datetime({
|
|
3545
|
+
offset: true
|
|
3546
|
+
}).optional(),
|
|
3547
|
+
createdAt: z.string().datetime({
|
|
3548
|
+
offset: true
|
|
3549
|
+
}).optional(),
|
|
3550
|
+
vaultCreatedAt: z.string().datetime({
|
|
3551
|
+
offset: true
|
|
3552
|
+
}).optional()
|
|
3527
3553
|
}).catchall(z.any())
|
|
3528
3554
|
}).catchall(z.any()),
|
|
3529
3555
|
z.object({
|
|
@@ -3604,7 +3630,10 @@ var Event = z.union([
|
|
|
3604
3630
|
missionId: z.object({
|
|
3605
3631
|
__type: z.literal("bigint"),
|
|
3606
3632
|
value: z.string()
|
|
3607
|
-
}).transform((wire) => BigInt(wire.value))
|
|
3633
|
+
}).transform((wire) => BigInt(wire.value)),
|
|
3634
|
+
createdAt: z.string().datetime({
|
|
3635
|
+
offset: true
|
|
3636
|
+
}).optional()
|
|
3608
3637
|
}).catchall(z.any())
|
|
3609
3638
|
}).catchall(z.any()),
|
|
3610
3639
|
z.object({
|
|
@@ -3619,6 +3648,9 @@ var Event = z.union([
|
|
|
3619
3648
|
is_flyable: z.boolean(),
|
|
3620
3649
|
deleted_at: z.string().datetime({
|
|
3621
3650
|
offset: true
|
|
3651
|
+
}).optional(),
|
|
3652
|
+
created_at: z.string().datetime({
|
|
3653
|
+
offset: true
|
|
3622
3654
|
}).optional()
|
|
3623
3655
|
}).catchall(z.any()),
|
|
3624
3656
|
changes: z.object({
|
|
@@ -3626,6 +3658,9 @@ var Event = z.union([
|
|
|
3626
3658
|
is_flyable: z.boolean().optional(),
|
|
3627
3659
|
deleted_at: z.string().datetime({
|
|
3628
3660
|
offset: true
|
|
3661
|
+
}).optional(),
|
|
3662
|
+
created_at: z.string().datetime({
|
|
3663
|
+
offset: true
|
|
3629
3664
|
}).optional()
|
|
3630
3665
|
}).catchall(z.any()).optional()
|
|
3631
3666
|
}).catchall(z.any())
|
|
@@ -3734,6 +3769,7 @@ export {
|
|
|
3734
3769
|
flightPlansControllerCreate0V1,
|
|
3735
3770
|
flightPlansControllerCreate1,
|
|
3736
3771
|
flightPlansControllerCreateV2V2,
|
|
3772
|
+
flightPlansControllerExpandV2V2,
|
|
3737
3773
|
flightPlansControllerGet0V1,
|
|
3738
3774
|
flightPlansControllerGet1,
|
|
3739
3775
|
flightPlansControllerGetMany0V1,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layer-drone/protocol",
|
|
3
3
|
"description": "Layer Drone protocol SDK with typed API client and event parsing",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.2.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"typescript": "5.5.4",
|
|
34
34
|
"zod": "^3.24.2",
|
|
35
35
|
"zod-to-json-schema": "^3.24.5",
|
|
36
|
-
"@layer-drone/event-schema": "0.0.0",
|
|
37
36
|
"@layer-drone/eslint-config": "0.0.0",
|
|
37
|
+
"@layer-drone/event-schema": "0.0.0",
|
|
38
38
|
"@layer-drone/typescript-config": "0.0.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
package/src/client/sdk.gen.ts
CHANGED
|
@@ -229,6 +229,9 @@ import type {
|
|
|
229
229
|
FlightPlansControllerCreateV2V2Data,
|
|
230
230
|
FlightPlansControllerCreateV2V2Errors,
|
|
231
231
|
FlightPlansControllerCreateV2V2Responses,
|
|
232
|
+
FlightPlansControllerExpandV2V2Data,
|
|
233
|
+
FlightPlansControllerExpandV2V2Errors,
|
|
234
|
+
FlightPlansControllerExpandV2V2Responses,
|
|
232
235
|
FlightPlansControllerGet0V1Data,
|
|
233
236
|
FlightPlansControllerGet0V1Errors,
|
|
234
237
|
FlightPlansControllerGet0V1Responses,
|
|
@@ -3986,6 +3989,35 @@ export const flightPlansControllerUpdateV2V2 = <
|
|
|
3986
3989
|
});
|
|
3987
3990
|
};
|
|
3988
3991
|
|
|
3992
|
+
/**
|
|
3993
|
+
* Expand a flight plan into a FlightPathIntended
|
|
3994
|
+
* Forwards to mission-fulfillment. Loads the stored template, resolves zone geometry, and returns a FlightPathIntended for the given camera specs. Path only, not the template. Stateless: nothing is persisted.
|
|
3995
|
+
*/
|
|
3996
|
+
export const flightPlansControllerExpandV2V2 = <
|
|
3997
|
+
ThrowOnError extends boolean = true,
|
|
3998
|
+
>(
|
|
3999
|
+
options: Options<FlightPlansControllerExpandV2V2Data, ThrowOnError>,
|
|
4000
|
+
) => {
|
|
4001
|
+
return (options.client ?? _heyApiClient).post<
|
|
4002
|
+
FlightPlansControllerExpandV2V2Responses,
|
|
4003
|
+
FlightPlansControllerExpandV2V2Errors,
|
|
4004
|
+
ThrowOnError
|
|
4005
|
+
>({
|
|
4006
|
+
security: [
|
|
4007
|
+
{
|
|
4008
|
+
name: "x-api-token",
|
|
4009
|
+
type: "apiKey",
|
|
4010
|
+
},
|
|
4011
|
+
],
|
|
4012
|
+
url: "/v2/flight-plans/{id}/expand",
|
|
4013
|
+
...options,
|
|
4014
|
+
headers: {
|
|
4015
|
+
"Content-Type": "application/json",
|
|
4016
|
+
...options.headers,
|
|
4017
|
+
},
|
|
4018
|
+
});
|
|
4019
|
+
};
|
|
4020
|
+
|
|
3989
4021
|
/**
|
|
3990
4022
|
* List flights (mission-fulfillment)
|
|
3991
4023
|
* Returns flights from mission-fulfillment.
|
package/src/client/types.gen.ts
CHANGED
|
@@ -1293,6 +1293,7 @@ export type MissionFulfillmentGetFlightPlansResponse = {
|
|
|
1293
1293
|
data: Array<{
|
|
1294
1294
|
id: string;
|
|
1295
1295
|
name: string;
|
|
1296
|
+
slug: string | null;
|
|
1296
1297
|
description: string | null;
|
|
1297
1298
|
base_energy_usage: number;
|
|
1298
1299
|
base_duration: number;
|
|
@@ -1340,6 +1341,7 @@ export type MissionFulfillmentGetFlightPlansResponse = {
|
|
|
1340
1341
|
export type FlightPlanResponse = {
|
|
1341
1342
|
id: string;
|
|
1342
1343
|
name: string;
|
|
1344
|
+
slug: string | null;
|
|
1343
1345
|
description: string | null;
|
|
1344
1346
|
base_energy_usage: number;
|
|
1345
1347
|
base_duration: number;
|
|
@@ -1385,6 +1387,7 @@ export type FlightPlanResponse = {
|
|
|
1385
1387
|
|
|
1386
1388
|
export type MissionFulfillmentCreateFlightPlanBody = {
|
|
1387
1389
|
name: string;
|
|
1390
|
+
slug: string;
|
|
1388
1391
|
description?: string | null;
|
|
1389
1392
|
base_energy_usage: number;
|
|
1390
1393
|
base_duration: number;
|
|
@@ -1423,8 +1426,37 @@ export type MissionFulfillmentCreateFlightPlanBody = {
|
|
|
1423
1426
|
};
|
|
1424
1427
|
};
|
|
1425
1428
|
|
|
1429
|
+
export type ExpandFlightPlanBody = {
|
|
1430
|
+
zone_id: string;
|
|
1431
|
+
camera_specs: {
|
|
1432
|
+
pixelPitchInMeters: number;
|
|
1433
|
+
sensorWidthInMeters: number;
|
|
1434
|
+
sensorHeightInMeters: number;
|
|
1435
|
+
focalLengthInMeters: number;
|
|
1436
|
+
hFovInDegrees: number;
|
|
1437
|
+
};
|
|
1438
|
+
};
|
|
1439
|
+
|
|
1440
|
+
export type FlightPathIntendedResponse = {
|
|
1441
|
+
type: "FeatureCollection";
|
|
1442
|
+
features: Array<unknown>;
|
|
1443
|
+
metadata: {
|
|
1444
|
+
flightPlanType: string;
|
|
1445
|
+
flightPlanId: number;
|
|
1446
|
+
zoneHash: string;
|
|
1447
|
+
imageCount: number;
|
|
1448
|
+
pathVersion: number;
|
|
1449
|
+
sections?: Array<{
|
|
1450
|
+
index: number;
|
|
1451
|
+
type: "map" | "panorama";
|
|
1452
|
+
waypointCount: number;
|
|
1453
|
+
}>;
|
|
1454
|
+
};
|
|
1455
|
+
};
|
|
1456
|
+
|
|
1426
1457
|
export type UpdateFlightPlanBody = {
|
|
1427
1458
|
name: string;
|
|
1459
|
+
slug: string;
|
|
1428
1460
|
description?: string | null;
|
|
1429
1461
|
base_energy_usage: number;
|
|
1430
1462
|
base_duration: number;
|
|
@@ -1518,6 +1550,7 @@ export type CreateMissionsBody = {
|
|
|
1518
1550
|
capture_start_time: Date;
|
|
1519
1551
|
capture_end_time: Date;
|
|
1520
1552
|
holding_period_seconds?: number | null;
|
|
1553
|
+
reservable?: boolean;
|
|
1521
1554
|
tags?: {
|
|
1522
1555
|
[key: string]: string;
|
|
1523
1556
|
};
|
|
@@ -1558,6 +1591,7 @@ export type CreateMissionsResponse = {
|
|
|
1558
1591
|
capture_start_time: Date;
|
|
1559
1592
|
capture_end_time: Date;
|
|
1560
1593
|
holding_period_seconds: number;
|
|
1594
|
+
reservable: boolean;
|
|
1561
1595
|
tags: {
|
|
1562
1596
|
[key: string]: string;
|
|
1563
1597
|
};
|
|
@@ -1629,6 +1663,7 @@ export type ListMissionsResponse = {
|
|
|
1629
1663
|
capture_start_time: Date;
|
|
1630
1664
|
capture_end_time: Date;
|
|
1631
1665
|
holding_period_seconds: number;
|
|
1666
|
+
reservable: boolean;
|
|
1632
1667
|
tags: {
|
|
1633
1668
|
[key: string]: string;
|
|
1634
1669
|
};
|
|
@@ -1685,6 +1720,7 @@ export type MissionResponse = {
|
|
|
1685
1720
|
capture_start_time: Date;
|
|
1686
1721
|
capture_end_time: Date;
|
|
1687
1722
|
holding_period_seconds: number;
|
|
1723
|
+
reservable: boolean;
|
|
1688
1724
|
tags: {
|
|
1689
1725
|
[key: string]: string;
|
|
1690
1726
|
};
|
|
@@ -1722,6 +1758,7 @@ export type UpdateMissionBody = {
|
|
|
1722
1758
|
}>;
|
|
1723
1759
|
flight_plan_id?: string;
|
|
1724
1760
|
campaign_ids?: Array<string>;
|
|
1761
|
+
reservable?: boolean;
|
|
1725
1762
|
};
|
|
1726
1763
|
|
|
1727
1764
|
export type CreateFlightBody = {
|
|
@@ -1836,7 +1873,10 @@ export type FlightReviewResponse = {
|
|
|
1836
1873
|
};
|
|
1837
1874
|
|
|
1838
1875
|
export type ImageUploadUrlsBody = {
|
|
1839
|
-
|
|
1876
|
+
files: Array<{
|
|
1877
|
+
filename: string;
|
|
1878
|
+
checksum: string;
|
|
1879
|
+
}>;
|
|
1840
1880
|
};
|
|
1841
1881
|
|
|
1842
1882
|
export type ImageUploadUrlsResponse = {
|
|
@@ -4837,6 +4877,7 @@ export type FlightPlansControllerGetManyV2V2Data = {
|
|
|
4837
4877
|
query?: {
|
|
4838
4878
|
include_inactive?: "true" | "false";
|
|
4839
4879
|
legacy_id?: number;
|
|
4880
|
+
slug?: string;
|
|
4840
4881
|
};
|
|
4841
4882
|
url: "/v2/flight-plans";
|
|
4842
4883
|
};
|
|
@@ -4914,6 +4955,27 @@ export type FlightPlansControllerUpdateV2V2Responses = {
|
|
|
4914
4955
|
export type FlightPlansControllerUpdateV2V2Response =
|
|
4915
4956
|
FlightPlansControllerUpdateV2V2Responses[keyof FlightPlansControllerUpdateV2V2Responses];
|
|
4916
4957
|
|
|
4958
|
+
export type FlightPlansControllerExpandV2V2Data = {
|
|
4959
|
+
body: ExpandFlightPlanBody;
|
|
4960
|
+
path: {
|
|
4961
|
+
id: string;
|
|
4962
|
+
};
|
|
4963
|
+
query?: never;
|
|
4964
|
+
url: "/v2/flight-plans/{id}/expand";
|
|
4965
|
+
};
|
|
4966
|
+
|
|
4967
|
+
export type FlightPlansControllerExpandV2V2Errors = {
|
|
4968
|
+
401: unknown;
|
|
4969
|
+
403: unknown;
|
|
4970
|
+
};
|
|
4971
|
+
|
|
4972
|
+
export type FlightPlansControllerExpandV2V2Responses = {
|
|
4973
|
+
200: FlightPathIntendedResponse;
|
|
4974
|
+
};
|
|
4975
|
+
|
|
4976
|
+
export type FlightPlansControllerExpandV2V2Response =
|
|
4977
|
+
FlightPlansControllerExpandV2V2Responses[keyof FlightPlansControllerExpandV2V2Responses];
|
|
4978
|
+
|
|
4917
4979
|
export type FlightsControllerGetFlightsV2V2Data = {
|
|
4918
4980
|
body?: never;
|
|
4919
4981
|
path?: never;
|
package/src/event/types.gen.ts
CHANGED
|
@@ -39,6 +39,10 @@ export const Event = z.union([
|
|
|
39
39
|
.regex(new RegExp("^0x[a-fA-F0-9]{40}$")),
|
|
40
40
|
chainId: z.number(),
|
|
41
41
|
tags: z.record(z.string()),
|
|
42
|
+
isOpen: z.boolean().optional(),
|
|
43
|
+
closedAt: z.string().datetime({ offset: true }).optional(),
|
|
44
|
+
createdAt: z.string().datetime({ offset: true }).optional(),
|
|
45
|
+
vaultCreatedAt: z.string().datetime({ offset: true }).optional(),
|
|
42
46
|
})
|
|
43
47
|
.catchall(z.any()),
|
|
44
48
|
})
|
|
@@ -128,6 +132,7 @@ export const Event = z.union([
|
|
|
128
132
|
missionId: z
|
|
129
133
|
.object({ __type: z.literal("bigint"), value: z.string() })
|
|
130
134
|
.transform((wire) => BigInt(wire.value)),
|
|
135
|
+
createdAt: z.string().datetime({ offset: true }).optional(),
|
|
131
136
|
})
|
|
132
137
|
.catchall(z.any()),
|
|
133
138
|
})
|
|
@@ -146,6 +151,7 @@ export const Event = z.union([
|
|
|
146
151
|
region_id: z.number(),
|
|
147
152
|
is_flyable: z.boolean(),
|
|
148
153
|
deleted_at: z.string().datetime({ offset: true }).optional(),
|
|
154
|
+
created_at: z.string().datetime({ offset: true }).optional(),
|
|
149
155
|
})
|
|
150
156
|
.catchall(z.any()),
|
|
151
157
|
changes: z
|
|
@@ -153,6 +159,7 @@ export const Event = z.union([
|
|
|
153
159
|
region_id: z.number().optional(),
|
|
154
160
|
is_flyable: z.boolean().optional(),
|
|
155
161
|
deleted_at: z.string().datetime({ offset: true }).optional(),
|
|
162
|
+
created_at: z.string().datetime({ offset: true }).optional(),
|
|
156
163
|
})
|
|
157
164
|
.catchall(z.any())
|
|
158
165
|
.optional(),
|