@layer-drone/protocol 1.0.0 → 1.0.2

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.
@@ -22,6 +22,7 @@ export type CreateApiTokenResponseDto = {
22
22
  | "manageProposals"
23
23
  | "approveProposals"
24
24
  | "manageProtocolTriggers"
25
+ | "manageCampaigns"
25
26
  | "all"
26
27
  >;
27
28
  };
@@ -44,6 +45,7 @@ export type CreateApiTokenRequestDto = {
44
45
  | "manageProposals"
45
46
  | "approveProposals"
46
47
  | "manageProtocolTriggers"
48
+ | "manageCampaigns"
47
49
  | "all"
48
50
  >;
49
51
  orgId: number;
@@ -67,6 +69,7 @@ export type UpdateApiTokenRequestDto = {
67
69
  | "manageProposals"
68
70
  | "approveProposals"
69
71
  | "manageProtocolTriggers"
72
+ | "manageCampaigns"
70
73
  | "all"
71
74
  >;
72
75
  };
@@ -93,10 +96,52 @@ export type UpdateApiTokenResponseDto = {
93
96
  | "manageProposals"
94
97
  | "approveProposals"
95
98
  | "manageProtocolTriggers"
99
+ | "manageCampaigns"
96
100
  | "all"
97
101
  >;
98
102
  };
99
103
 
104
+ export type CreateCampaignBody = {
105
+ id: string;
106
+ name: string;
107
+ };
108
+
109
+ export type CreateCampaignResponse = {
110
+ id: string;
111
+ name: string;
112
+ created_at: string;
113
+ updated_at: string;
114
+ };
115
+
116
+ export type GetCampaignsResponse = Array<{
117
+ id: string;
118
+ name: string;
119
+ created_at: string;
120
+ updated_at: string;
121
+ }>;
122
+
123
+ export type GetCampaignResponse = {
124
+ id: string;
125
+ name: string;
126
+ created_at: string;
127
+ updated_at: string;
128
+ };
129
+
130
+ export type UpdateCampaignBody = {
131
+ name: string;
132
+ };
133
+
134
+ export type UpdateCampaignResponse = {
135
+ id: string;
136
+ name: string;
137
+ created_at: string;
138
+ updated_at: string;
139
+ };
140
+
141
+ export type DeleteCampaignResponse = {
142
+ message: string;
143
+ };
144
+
100
145
  export type GetTimeLimitsForSunAltitudeResponse = {
101
146
  OptimalSunAltitudePeriod: {
102
147
  StartTime: Date;
@@ -724,6 +769,7 @@ export type UpdateMissionsRequestDto = {
724
769
  isOpen?: boolean;
725
770
  collateralToken?: string;
726
771
  decimals?: number;
772
+ campaigns?: Array<string>;
727
773
  }>;
728
774
  treasuryAddress: string;
729
775
  };
@@ -734,6 +780,7 @@ export type UpdateMissionsResponseDto = {
734
780
  escrowRequestsQueued: Array<string>;
735
781
  withdrawalRequestsQueued: Array<string>;
736
782
  cancelRequestsQueued: Array<string>;
783
+ campaignsUpdated: Array<string>;
737
784
  };
738
785
  };
739
786
 
@@ -755,6 +802,159 @@ export type RepriceMissionsResponseDto = {
755
802
  };
756
803
  };
757
804
 
805
+ export type CreateProposalRequestDto = {
806
+ name: string;
807
+ created_by: string;
808
+ description?: string;
809
+ source?: {
810
+ tool: "arcgis-plugin";
811
+ version?: string;
812
+ };
813
+ changes: Array<
814
+ | {
815
+ payload: {
816
+ id: string;
817
+ region_id: number;
818
+ is_flyable?: boolean;
819
+ };
820
+ action: "zone.create";
821
+ }
822
+ | {
823
+ resource_id: string;
824
+ payload: {
825
+ is_flyable: boolean;
826
+ };
827
+ action: "zone.update";
828
+ }
829
+ | {
830
+ resource_id: string;
831
+ action: "zone.delete";
832
+ }
833
+ | {
834
+ payload: {
835
+ id: string;
836
+ name: string;
837
+ };
838
+ action: "campaign.create";
839
+ }
840
+ | {
841
+ resource_id: string;
842
+ payload: {
843
+ name?: string;
844
+ };
845
+ action: "campaign.update";
846
+ }
847
+ | {
848
+ resource_id: string;
849
+ action: "campaign.delete";
850
+ }
851
+ | {
852
+ payload: {
853
+ requestor: string;
854
+ zone_id: string;
855
+ campaigns: Array<string>;
856
+ flight_plan_id: number;
857
+ amount: string | number | bigint;
858
+ collateral_token: string;
859
+ decimals: number;
860
+ capture_start_time: Date;
861
+ capture_end_time: Date;
862
+ is_reservable?: boolean;
863
+ tags?: {
864
+ [key: string]: string;
865
+ };
866
+ };
867
+ action: "mission.create";
868
+ }
869
+ | {
870
+ resource_id: string;
871
+ payload: {
872
+ amount?: string | number | bigint;
873
+ is_open?: boolean;
874
+ collateral_token?: string;
875
+ decimals?: number;
876
+ campaigns?: Array<string>;
877
+ };
878
+ action: "mission.update";
879
+ }
880
+ >;
881
+ };
882
+
883
+ export type CreateProposalResponseDto = {
884
+ proposal_id: string;
885
+ total_items_changed: number;
886
+ estimated_cost: number;
887
+ };
888
+
889
+ export type GetProposalsResponseDto = {
890
+ proposals: Array<{
891
+ id: string;
892
+ name: string;
893
+ created_at: Date;
894
+ created_by: string;
895
+ total_items: number;
896
+ pending_count: number;
897
+ dispatched_count: number;
898
+ verified_count: number;
899
+ failed_count: number;
900
+ status:
901
+ | "pending"
902
+ | "approved"
903
+ | "rejected"
904
+ | "dispatched"
905
+ | "verified"
906
+ | "error";
907
+ }>;
908
+ hasNextPage: boolean;
909
+ };
910
+
911
+ export type GetProposalResponseDto = {
912
+ id: string;
913
+ name: string;
914
+ description: string;
915
+ source: {
916
+ tool: "arcgis-plugin";
917
+ version?: string;
918
+ };
919
+ created_at: Date;
920
+ created_by: string;
921
+ total_items: number;
922
+ pending_count: number;
923
+ dispatched_count: number;
924
+ verified_count: number;
925
+ failed_count: number;
926
+ estimated_cost: string;
927
+ status:
928
+ | "pending"
929
+ | "approved"
930
+ | "rejected"
931
+ | "dispatched"
932
+ | "verified"
933
+ | "error";
934
+ changes: Array<{
935
+ id: string;
936
+ resource: string;
937
+ action: string;
938
+ resource_id: string;
939
+ payload: {
940
+ [key: string]: unknown;
941
+ };
942
+ dispatched_at: Date;
943
+ verified_at: Date;
944
+ failed_at: Date;
945
+ error: string;
946
+ }>;
947
+ };
948
+
949
+ export type ReviewProposalRequestDto = {
950
+ approved: boolean;
951
+ reviewed_by: string;
952
+ };
953
+
954
+ export type ReviewProposalResponseDto = {
955
+ review_id: string;
956
+ };
957
+
758
958
  export type TriggerPayoutRequestDto = {
759
959
  missionIds: Array<string>;
760
960
  };
@@ -801,6 +1001,7 @@ export type CreateWebhookBody = {
801
1001
  | "protocol.mission.paid"
802
1002
  | "protocol.flight.submitted"
803
1003
  | "protocol.flight.reviewed"
1004
+ | "protocol.zone"
804
1005
  | "*"
805
1006
  >;
806
1007
  active: boolean;
@@ -822,6 +1023,7 @@ export type GetWebhooksResponse = Array<{
822
1023
  | "protocol.mission.paid"
823
1024
  | "protocol.flight.submitted"
824
1025
  | "protocol.flight.reviewed"
1026
+ | "protocol.zone"
825
1027
  | "*"
826
1028
  >;
827
1029
  active: boolean;
@@ -843,6 +1045,7 @@ export type GetWebhookResponse = {
843
1045
  | "protocol.mission.paid"
844
1046
  | "protocol.flight.submitted"
845
1047
  | "protocol.flight.reviewed"
1048
+ | "protocol.zone"
846
1049
  | "*"
847
1050
  >;
848
1051
  active: boolean;
@@ -863,6 +1066,7 @@ export type UpdateWebhookBody = {
863
1066
  | "protocol.mission.paid"
864
1067
  | "protocol.flight.submitted"
865
1068
  | "protocol.flight.reviewed"
1069
+ | "protocol.zone"
866
1070
  | "*"
867
1071
  >;
868
1072
  active?: boolean;
@@ -879,6 +1083,7 @@ export type UpdateWebhookResponse = {
879
1083
  | "protocol.mission.paid"
880
1084
  | "protocol.flight.submitted"
881
1085
  | "protocol.flight.reviewed"
1086
+ | "protocol.zone"
882
1087
  | "*"
883
1088
  >;
884
1089
  active: boolean;
@@ -1272,6 +1477,248 @@ export type ApiTokenControllerUpdateToken1Responses = {
1272
1477
  export type ApiTokenControllerUpdateToken1Response =
1273
1478
  ApiTokenControllerUpdateToken1Responses[keyof ApiTokenControllerUpdateToken1Responses];
1274
1479
 
1480
+ export type CampaignsControllerGetMany0V1Data = {
1481
+ body?: never;
1482
+ path?: never;
1483
+ query?: never;
1484
+ url: "/v1/campaigns";
1485
+ };
1486
+
1487
+ export type CampaignsControllerGetMany0V1Errors = {
1488
+ 401: unknown;
1489
+ 403: unknown;
1490
+ };
1491
+
1492
+ export type CampaignsControllerGetMany0V1Responses = {
1493
+ 200: GetCampaignsResponse;
1494
+ };
1495
+
1496
+ export type CampaignsControllerGetMany0V1Response =
1497
+ CampaignsControllerGetMany0V1Responses[keyof CampaignsControllerGetMany0V1Responses];
1498
+
1499
+ export type CampaignsControllerCreate0V1Data = {
1500
+ body: CreateCampaignBody;
1501
+ path?: never;
1502
+ query?: never;
1503
+ url: "/v1/campaigns";
1504
+ };
1505
+
1506
+ export type CampaignsControllerCreate0V1Errors = {
1507
+ 401: unknown;
1508
+ 403: unknown;
1509
+ /**
1510
+ * Campaign name already exists
1511
+ */
1512
+ 409: unknown;
1513
+ };
1514
+
1515
+ export type CampaignsControllerCreate0V1Responses = {
1516
+ 201: CreateCampaignResponse;
1517
+ };
1518
+
1519
+ export type CampaignsControllerCreate0V1Response =
1520
+ CampaignsControllerCreate0V1Responses[keyof CampaignsControllerCreate0V1Responses];
1521
+
1522
+ export type CampaignsControllerGetMany1Data = {
1523
+ body?: never;
1524
+ path?: never;
1525
+ query?: never;
1526
+ url: "/campaigns";
1527
+ };
1528
+
1529
+ export type CampaignsControllerGetMany1Errors = {
1530
+ 401: unknown;
1531
+ 403: unknown;
1532
+ };
1533
+
1534
+ export type CampaignsControllerGetMany1Responses = {
1535
+ 200: GetCampaignsResponse;
1536
+ };
1537
+
1538
+ export type CampaignsControllerGetMany1Response =
1539
+ CampaignsControllerGetMany1Responses[keyof CampaignsControllerGetMany1Responses];
1540
+
1541
+ export type CampaignsControllerCreate1Data = {
1542
+ body: CreateCampaignBody;
1543
+ path?: never;
1544
+ query?: never;
1545
+ url: "/campaigns";
1546
+ };
1547
+
1548
+ export type CampaignsControllerCreate1Errors = {
1549
+ 401: unknown;
1550
+ 403: unknown;
1551
+ /**
1552
+ * Campaign name already exists
1553
+ */
1554
+ 409: unknown;
1555
+ };
1556
+
1557
+ export type CampaignsControllerCreate1Responses = {
1558
+ 201: CreateCampaignResponse;
1559
+ };
1560
+
1561
+ export type CampaignsControllerCreate1Response =
1562
+ CampaignsControllerCreate1Responses[keyof CampaignsControllerCreate1Responses];
1563
+
1564
+ export type CampaignsControllerDelete0V1Data = {
1565
+ body?: never;
1566
+ path: {
1567
+ id: string;
1568
+ };
1569
+ query?: never;
1570
+ url: "/v1/campaigns/{id}";
1571
+ };
1572
+
1573
+ export type CampaignsControllerDelete0V1Errors = {
1574
+ 401: unknown;
1575
+ 403: unknown;
1576
+ /**
1577
+ * Campaign is referenced by one or more missions
1578
+ */
1579
+ 409: unknown;
1580
+ };
1581
+
1582
+ export type CampaignsControllerDelete0V1Responses = {
1583
+ 200: DeleteCampaignResponse;
1584
+ };
1585
+
1586
+ export type CampaignsControllerDelete0V1Response =
1587
+ CampaignsControllerDelete0V1Responses[keyof CampaignsControllerDelete0V1Responses];
1588
+
1589
+ export type CampaignsControllerGet0V1Data = {
1590
+ body?: never;
1591
+ path: {
1592
+ id: string;
1593
+ };
1594
+ query?: never;
1595
+ url: "/v1/campaigns/{id}";
1596
+ };
1597
+
1598
+ export type CampaignsControllerGet0V1Errors = {
1599
+ 401: unknown;
1600
+ 403: unknown;
1601
+ /**
1602
+ * Campaign not found
1603
+ */
1604
+ 404: unknown;
1605
+ };
1606
+
1607
+ export type CampaignsControllerGet0V1Responses = {
1608
+ 200: GetCampaignResponse;
1609
+ };
1610
+
1611
+ export type CampaignsControllerGet0V1Response =
1612
+ CampaignsControllerGet0V1Responses[keyof CampaignsControllerGet0V1Responses];
1613
+
1614
+ export type CampaignsControllerUpdate0V1Data = {
1615
+ body: UpdateCampaignBody;
1616
+ path: {
1617
+ id: string;
1618
+ };
1619
+ query?: never;
1620
+ url: "/v1/campaigns/{id}";
1621
+ };
1622
+
1623
+ export type CampaignsControllerUpdate0V1Errors = {
1624
+ 401: unknown;
1625
+ 403: unknown;
1626
+ /**
1627
+ * Campaign not found
1628
+ */
1629
+ 404: unknown;
1630
+ /**
1631
+ * Campaign name already exists
1632
+ */
1633
+ 409: unknown;
1634
+ };
1635
+
1636
+ export type CampaignsControllerUpdate0V1Responses = {
1637
+ 200: UpdateCampaignResponse;
1638
+ };
1639
+
1640
+ export type CampaignsControllerUpdate0V1Response =
1641
+ CampaignsControllerUpdate0V1Responses[keyof CampaignsControllerUpdate0V1Responses];
1642
+
1643
+ export type CampaignsControllerDelete1Data = {
1644
+ body?: never;
1645
+ path: {
1646
+ id: string;
1647
+ };
1648
+ query?: never;
1649
+ url: "/campaigns/{id}";
1650
+ };
1651
+
1652
+ export type CampaignsControllerDelete1Errors = {
1653
+ 401: unknown;
1654
+ 403: unknown;
1655
+ /**
1656
+ * Campaign is referenced by one or more missions
1657
+ */
1658
+ 409: unknown;
1659
+ };
1660
+
1661
+ export type CampaignsControllerDelete1Responses = {
1662
+ 200: DeleteCampaignResponse;
1663
+ };
1664
+
1665
+ export type CampaignsControllerDelete1Response =
1666
+ CampaignsControllerDelete1Responses[keyof CampaignsControllerDelete1Responses];
1667
+
1668
+ export type CampaignsControllerGet1Data = {
1669
+ body?: never;
1670
+ path: {
1671
+ id: string;
1672
+ };
1673
+ query?: never;
1674
+ url: "/campaigns/{id}";
1675
+ };
1676
+
1677
+ export type CampaignsControllerGet1Errors = {
1678
+ 401: unknown;
1679
+ 403: unknown;
1680
+ /**
1681
+ * Campaign not found
1682
+ */
1683
+ 404: unknown;
1684
+ };
1685
+
1686
+ export type CampaignsControllerGet1Responses = {
1687
+ 200: GetCampaignResponse;
1688
+ };
1689
+
1690
+ export type CampaignsControllerGet1Response =
1691
+ CampaignsControllerGet1Responses[keyof CampaignsControllerGet1Responses];
1692
+
1693
+ export type CampaignsControllerUpdate1Data = {
1694
+ body: UpdateCampaignBody;
1695
+ path: {
1696
+ id: string;
1697
+ };
1698
+ query?: never;
1699
+ url: "/campaigns/{id}";
1700
+ };
1701
+
1702
+ export type CampaignsControllerUpdate1Errors = {
1703
+ 401: unknown;
1704
+ 403: unknown;
1705
+ /**
1706
+ * Campaign not found
1707
+ */
1708
+ 404: unknown;
1709
+ /**
1710
+ * Campaign name already exists
1711
+ */
1712
+ 409: unknown;
1713
+ };
1714
+
1715
+ export type CampaignsControllerUpdate1Responses = {
1716
+ 200: UpdateCampaignResponse;
1717
+ };
1718
+
1719
+ export type CampaignsControllerUpdate1Response =
1720
+ CampaignsControllerUpdate1Responses[keyof CampaignsControllerUpdate1Responses];
1721
+
1275
1722
  export type ConditionsControllerGetSunAltitudeTimeLimits0V1Data = {
1276
1723
  body?: never;
1277
1724
  path?: never;
@@ -2382,6 +2829,118 @@ export type MissionsControllerRepriceMissions1Responses = {
2382
2829
  export type MissionsControllerRepriceMissions1Response =
2383
2830
  MissionsControllerRepriceMissions1Responses[keyof MissionsControllerRepriceMissions1Responses];
2384
2831
 
2832
+ export type ListProposalsData = {
2833
+ body?: never;
2834
+ path?: never;
2835
+ query?: {
2836
+ status?:
2837
+ | "pending"
2838
+ | "approved"
2839
+ | "rejected"
2840
+ | "dispatched"
2841
+ | "verified"
2842
+ | "error";
2843
+ created_by?: string;
2844
+ created_after?: Date;
2845
+ created_before?: Date;
2846
+ page?: number;
2847
+ };
2848
+ url: "/v1/proposals";
2849
+ };
2850
+
2851
+ export type ListProposalsErrors = {
2852
+ /**
2853
+ * Missing manageProposals permission
2854
+ */
2855
+ 403: unknown;
2856
+ };
2857
+
2858
+ export type ListProposalsResponses = {
2859
+ 200: GetProposalsResponseDto;
2860
+ };
2861
+
2862
+ export type ListProposalsResponse =
2863
+ ListProposalsResponses[keyof ListProposalsResponses];
2864
+
2865
+ export type SubmitProposalData = {
2866
+ body: CreateProposalRequestDto;
2867
+ path?: never;
2868
+ query?: never;
2869
+ url: "/v1/proposals";
2870
+ };
2871
+
2872
+ export type SubmitProposalErrors = {
2873
+ /**
2874
+ * Schema validation failed
2875
+ */
2876
+ 400: unknown;
2877
+ 401: unknown;
2878
+ 403: unknown;
2879
+ };
2880
+
2881
+ export type SubmitProposalResponses = {
2882
+ 201: CreateProposalResponseDto;
2883
+ };
2884
+
2885
+ export type SubmitProposalResponse =
2886
+ SubmitProposalResponses[keyof SubmitProposalResponses];
2887
+
2888
+ export type GetProposalData = {
2889
+ body?: never;
2890
+ path: {
2891
+ id: string;
2892
+ };
2893
+ query?: never;
2894
+ url: "/v1/proposals/{id}";
2895
+ };
2896
+
2897
+ export type GetProposalErrors = {
2898
+ /**
2899
+ * Missing manageProposals permission
2900
+ */
2901
+ 403: unknown;
2902
+ /**
2903
+ * Proposal not found
2904
+ */
2905
+ 404: unknown;
2906
+ };
2907
+
2908
+ export type GetProposalResponses = {
2909
+ 200: GetProposalResponseDto;
2910
+ };
2911
+
2912
+ export type GetProposalResponse =
2913
+ GetProposalResponses[keyof GetProposalResponses];
2914
+
2915
+ export type ReviewProposalData = {
2916
+ body: ReviewProposalRequestDto;
2917
+ path: {
2918
+ id: string;
2919
+ };
2920
+ query?: never;
2921
+ url: "/v1/proposals/{id}/review";
2922
+ };
2923
+
2924
+ export type ReviewProposalErrors = {
2925
+ 401: unknown;
2926
+ 403: unknown;
2927
+ /**
2928
+ * Proposal not found
2929
+ */
2930
+ 404: unknown;
2931
+ /**
2932
+ * Another proposal is already running
2933
+ */
2934
+ 409: unknown;
2935
+ };
2936
+
2937
+ export type ReviewProposalResponses = {
2938
+ 200: ReviewProposalResponseDto;
2939
+ };
2940
+
2941
+ export type ReviewProposalResponse =
2942
+ ReviewProposalResponses[keyof ReviewProposalResponses];
2943
+
2385
2944
  export type ProtocolTriggersApiControllerTriggerPayout0V1Data = {
2386
2945
  body: TriggerPayoutRequestDto;
2387
2946
  path?: never;
@@ -132,6 +132,34 @@ export const Event = z.union([
132
132
  .catchall(z.any()),
133
133
  })
134
134
  .catchall(z.any()),
135
+ z
136
+ .object({
137
+ id: z.string(),
138
+ event_type: z.literal("protocol.zone"),
139
+ timestamp: z.string(),
140
+ data: z
141
+ .object({
142
+ version: z.literal(1),
143
+ data: z
144
+ .object({
145
+ id: z.string(),
146
+ region_id: z.number(),
147
+ is_flyable: z.boolean(),
148
+ deleted_at: z.string().datetime({ offset: true }).optional(),
149
+ })
150
+ .catchall(z.any()),
151
+ changes: z
152
+ .object({
153
+ region_id: z.number().optional(),
154
+ is_flyable: z.boolean().optional(),
155
+ deleted_at: z.string().datetime({ offset: true }).optional(),
156
+ })
157
+ .catchall(z.any())
158
+ .optional(),
159
+ })
160
+ .catchall(z.any()),
161
+ })
162
+ .catchall(z.any()),
135
163
  ]);
136
164
  export type Event = z.infer<typeof Event>;
137
165
 
@@ -156,3 +184,4 @@ export type FlightReviewedEvent = Extract<
156
184
  Event,
157
185
  { event_type: "protocol.flight.reviewed" }
158
186
  >;
187
+ export type ZoneEvent = Extract<Event, { event_type: "protocol.zone" }>;