pgbeam 0.3.12 → 0.3.14

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.
@@ -180,6 +180,33 @@
180
180
  "responseType": "{ connection_string: string; credential: { auth_method?: \"cleartext\" | \"scram-sha-256\"; created_at: string; expires_at?: string; id: string; last_used_at?: string; name: string; pg_username: string; policy_profile_id: string; principal_type?: \"agent\" | \"human\"; project_id: string; status: \"active\" | \"disabled\" | \"revoked\"; updated_at: string }; mcp_token: string; mcp_url: string }",
181
181
  "responseStatus": "200"
182
182
  },
183
+ "recommendAgentPolicy": {
184
+ "operationId": "recommendAgentPolicy",
185
+ "method": "POST",
186
+ "path": "/v1/projects/{project_id}/agents/{agent_id}/policy-recommendation",
187
+ "summary": "Recommend a least-privilege policy from recorded traffic",
188
+ "description": "Derives the tightest policy that would still pass every statement this agent credential has legitimately run, using its recorded audit history over a lookback window (default 30 days). The candidate's table allowlist is the union of relations actually referenced, its statement-kind allow set is the observed set, it downgrades to read-only when no writes were seen, and its max_rows ceiling comes from an observed high-percentile row count. The candidate is proven safe by replaying it through the data plane's own policy engine against the same history: a good recommendation has replay.summary.newly_blocked == 0. This endpoint is advisory only. It reads the audit log, never connects to the upstream database, and never creates, updates, or mutates any policy or credential; the operator loads the candidate into the editor and saves it themselves.",
189
+ "parameters": [
190
+ {
191
+ "name": "project_id",
192
+ "in": "path",
193
+ "required": true,
194
+ "type": "string",
195
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
196
+ },
197
+ {
198
+ "name": "agent_id",
199
+ "in": "path",
200
+ "required": true,
201
+ "type": "string",
202
+ "description": "Unique agent credential identifier (prefixed, e.g. agt_xxx)."
203
+ }
204
+ ],
205
+ "requestBodyType": "{ limit?: number; lookback_days?: number }",
206
+ "requestBodyRequired": false,
207
+ "responseType": "{ candidate?: { access_mode?: \"read_only\" | \"read_write\"; approval_auto_max_rows?: number; approval_mode?: \"off\" | \"writes\" | \"ddl\" | \"all\"; approval_timeout_seconds?: number; budget_queries_per_day?: number; budget_queries_per_hour?: number; egress_bytes_per_day?: number; masking_rules?: ({ column: string; kind: \"redact\" | \"null\" | \"hash\"; table: string })[]; max_affected_rows?: number; max_rows?: number; migration_safety?: \"off\" | \"warn\" | \"block\"; name: string; row_filters?: ({ predicate: string; table: string })[]; statement_rules?: { allow?: string[]; deny?: string[] }; statement_timeout_ms?: number; table_allowlist?: string[]; table_denylist?: string[]; write_mode?: \"normal\" | \"rollback\" | \"sandbox\" }; message?: string; notes?: string[]; observed_entries: number; observed_queries: number; replay?: { items: ({ change: \"newly_blocked\" | \"newly_allowed\" | \"still_allowed\" | \"still_blocked\"; first_seen: string; last_seen: string; occurrences: number; query_hash: string; recorded_event: string; recorded_rule?: string; result: { hint?: string; masked_columns?: ({ column: string; kind: \"redact\" | \"null\" | \"hash\" })[]; notes?: string[]; reason: string; rewritten_sql?: string; row_filter_predicate?: string; rule: string; verdict: \"allow\" | \"block\" | \"mask\" | \"row-filter\" }; sql: string; statement_kind?: string })[]; summary: { distinct_queries: number; entries_scanned: number; evaluated: number; newly_allowed: number; newly_blocked: number; skipped_unparseable: number; truncated: boolean; would_allow: number; would_block: number; would_mask: number; would_row_filter: number } }; sufficient_history: boolean; window_end: string; window_start: string }",
208
+ "responseStatus": "200"
209
+ },
183
210
  "listAnomalyAlerts": {
184
211
  "operationId": "listAnomalyAlerts",
185
212
  "method": "GET",
@@ -640,61 +667,729 @@
640
667
  "in": "query",
641
668
  "required": false,
642
669
  "type": "string",
643
- "description": "Opaque token for cursor-based pagination."
670
+ "description": "Opaque token for cursor-based pagination."
671
+ }
672
+ ],
673
+ "requestBodyType": "",
674
+ "requestBodyRequired": false,
675
+ "responseType": "{ branches: ({ branch_name: string; created_at: string; credential_id?: string; database_id: string; discarded_at?: string; error?: string; expires_at?: string; id: string; session_id?: string; status: \"pending\" | \"ready\" | \"error\" | \"discarded\" })[]; next_page_token?: string }",
676
+ "responseStatus": "200"
677
+ },
678
+ "discardDatabaseBranch": {
679
+ "operationId": "discardDatabaseBranch",
680
+ "method": "DELETE",
681
+ "path": "/v1/projects/{project_id}/branches/{branch_id}",
682
+ "summary": "Discard a sandbox branch",
683
+ "description": "Marks an ephemeral sandbox branch as discarded for teardown.",
684
+ "parameters": [
685
+ {
686
+ "name": "project_id",
687
+ "in": "path",
688
+ "required": true,
689
+ "type": "string",
690
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
691
+ },
692
+ {
693
+ "name": "branch_id",
694
+ "in": "path",
695
+ "required": true,
696
+ "type": "string",
697
+ "description": "Unique sandbox branch identifier (prefixed, e.g. brn_xxx)."
698
+ }
699
+ ],
700
+ "requestBodyType": "",
701
+ "requestBodyRequired": false,
702
+ "responseType": "",
703
+ "responseStatus": "204"
704
+ },
705
+ "listCacheRules": {
706
+ "operationId": "listCacheRules",
707
+ "method": "GET",
708
+ "path": "/v1/projects/{project_id}/databases/{database_id}/cache-rules",
709
+ "summary": "List cache rules",
710
+ "description": "Returns the cache rules for a database, showing all observed query\nshapes with their stats and cache recommendations.\n",
711
+ "parameters": [
712
+ {
713
+ "name": "project_id",
714
+ "in": "path",
715
+ "required": true,
716
+ "type": "string",
717
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
718
+ },
719
+ {
720
+ "name": "database_id",
721
+ "in": "path",
722
+ "required": true,
723
+ "type": "string",
724
+ "description": "Unique database identifier (prefixed, e.g. db_xxx)."
725
+ },
726
+ {
727
+ "name": "page_size",
728
+ "in": "query",
729
+ "required": false,
730
+ "type": "number",
731
+ "description": "Maximum number of items to return (1-100, default 20)."
732
+ },
733
+ {
734
+ "name": "page_token",
735
+ "in": "query",
736
+ "required": false,
737
+ "type": "string",
738
+ "description": "Opaque token for cursor-based pagination."
739
+ }
740
+ ],
741
+ "requestBodyType": "",
742
+ "requestBodyRequired": false,
743
+ "responseType": "{ entries: ({ avg_latency_ms: number; avg_response_bytes: number; cache_enabled: boolean; cache_swr_seconds?: number; cache_ttl_seconds?: number; call_count: number; first_seen_at: string; last_seen_at: string; normalized_sql: string; p95_latency_ms: number; query_hash: string; query_type: \"read\" | \"write\" | \"other\"; recommendation: \"great\" | \"good\" | \"fair\" | \"poor\"; stability_rate: number })[]; next_page_token?: string }",
744
+ "responseStatus": "200"
745
+ },
746
+ "updateCacheRule": {
747
+ "operationId": "updateCacheRule",
748
+ "method": "PUT",
749
+ "path": "/v1/projects/{project_id}/databases/{database_id}/cache-rules/{query_hash}",
750
+ "summary": "Update cache rule",
751
+ "description": "Enable or disable caching for a specific query shape, with optional\nTTL and SWR overrides. Requires the query to exist in the cache rules.\n",
752
+ "parameters": [
753
+ {
754
+ "name": "project_id",
755
+ "in": "path",
756
+ "required": true,
757
+ "type": "string",
758
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
759
+ },
760
+ {
761
+ "name": "database_id",
762
+ "in": "path",
763
+ "required": true,
764
+ "type": "string",
765
+ "description": "Unique database identifier (prefixed, e.g. db_xxx)."
766
+ },
767
+ {
768
+ "name": "query_hash",
769
+ "in": "path",
770
+ "required": true,
771
+ "type": "string",
772
+ "description": "xxhash64 hex of the normalized SQL."
773
+ }
774
+ ],
775
+ "requestBodyType": "{ cache_enabled: boolean; cache_swr_seconds?: number; cache_ttl_seconds?: number }",
776
+ "requestBodyRequired": true,
777
+ "responseType": "{ entry: { avg_latency_ms: number; avg_response_bytes: number; cache_enabled: boolean; cache_swr_seconds?: number; cache_ttl_seconds?: number; call_count: number; first_seen_at: string; last_seen_at: string; normalized_sql: string; p95_latency_ms: number; query_hash: string; query_type: \"read\" | \"write\" | \"other\"; recommendation: \"great\" | \"good\" | \"fair\" | \"poor\"; stability_rate: number } }",
778
+ "responseStatus": "200"
779
+ },
780
+ "listCrmCompanies": {
781
+ "operationId": "listCrmCompanies",
782
+ "method": "GET",
783
+ "path": "/v1/organizations/{org_id}/crm/companies",
784
+ "summary": "List companies",
785
+ "description": "List companies.",
786
+ "parameters": [
787
+ {
788
+ "name": "org_id",
789
+ "in": "path",
790
+ "required": true,
791
+ "type": "string",
792
+ "description": "Unique organization identifier."
793
+ },
794
+ {
795
+ "name": "page_size",
796
+ "in": "query",
797
+ "required": false,
798
+ "type": "number",
799
+ "description": "Maximum number of items to return (1-100, default 20)."
800
+ },
801
+ {
802
+ "name": "page_token",
803
+ "in": "query",
804
+ "required": false,
805
+ "type": "string",
806
+ "description": "Opaque token for cursor-based pagination."
807
+ }
808
+ ],
809
+ "requestBodyType": "",
810
+ "requestBodyRequired": false,
811
+ "responseType": "{ companies: ({ created_at: string; description: string; domain?: string; id: string; industry?: string; location?: string; logo_url?: string; name: string; org_id: string; updated_at: string })[]; next_page_token?: string }",
812
+ "responseStatus": "200"
813
+ },
814
+ "createCrmCompany": {
815
+ "operationId": "createCrmCompany",
816
+ "method": "POST",
817
+ "path": "/v1/organizations/{org_id}/crm/companies",
818
+ "summary": "Create a company",
819
+ "description": "Create a company.",
820
+ "parameters": [
821
+ {
822
+ "name": "org_id",
823
+ "in": "path",
824
+ "required": true,
825
+ "type": "string",
826
+ "description": "Unique organization identifier."
827
+ }
828
+ ],
829
+ "requestBodyType": "{ description?: string; domain?: string; industry?: string; location?: string; logo_url?: string; name: string }",
830
+ "requestBodyRequired": true,
831
+ "responseType": "{ created_at: string; description: string; domain?: string; id: string; industry?: string; location?: string; logo_url?: string; name: string; org_id: string; updated_at: string }",
832
+ "responseStatus": "201"
833
+ },
834
+ "getCrmCompany": {
835
+ "operationId": "getCrmCompany",
836
+ "method": "GET",
837
+ "path": "/v1/organizations/{org_id}/crm/companies/{company_id}",
838
+ "summary": "Get a company",
839
+ "description": "Get a company.",
840
+ "parameters": [
841
+ {
842
+ "name": "org_id",
843
+ "in": "path",
844
+ "required": true,
845
+ "type": "string",
846
+ "description": "Unique organization identifier."
847
+ },
848
+ {
849
+ "name": "company_id",
850
+ "in": "path",
851
+ "required": true,
852
+ "type": "string",
853
+ "description": "Unique CRM company identifier (prefixed, e.g. cmp_xxx)."
854
+ }
855
+ ],
856
+ "requestBodyType": "",
857
+ "requestBodyRequired": false,
858
+ "responseType": "{ created_at: string; description: string; domain?: string; id: string; industry?: string; location?: string; logo_url?: string; name: string; org_id: string; updated_at: string }",
859
+ "responseStatus": "200"
860
+ },
861
+ "updateCrmCompany": {
862
+ "operationId": "updateCrmCompany",
863
+ "method": "PUT",
864
+ "path": "/v1/organizations/{org_id}/crm/companies/{company_id}",
865
+ "summary": "Update a company",
866
+ "description": "Update a company.",
867
+ "parameters": [
868
+ {
869
+ "name": "org_id",
870
+ "in": "path",
871
+ "required": true,
872
+ "type": "string",
873
+ "description": "Unique organization identifier."
874
+ },
875
+ {
876
+ "name": "company_id",
877
+ "in": "path",
878
+ "required": true,
879
+ "type": "string",
880
+ "description": "Unique CRM company identifier (prefixed, e.g. cmp_xxx)."
881
+ }
882
+ ],
883
+ "requestBodyType": "{ description?: string; domain?: string; industry?: string; location?: string; logo_url?: string; name: string }",
884
+ "requestBodyRequired": true,
885
+ "responseType": "{ created_at: string; description: string; domain?: string; id: string; industry?: string; location?: string; logo_url?: string; name: string; org_id: string; updated_at: string }",
886
+ "responseStatus": "200"
887
+ },
888
+ "deleteCrmCompany": {
889
+ "operationId": "deleteCrmCompany",
890
+ "method": "DELETE",
891
+ "path": "/v1/organizations/{org_id}/crm/companies/{company_id}",
892
+ "summary": "Delete a company",
893
+ "description": "Delete a company.",
894
+ "parameters": [
895
+ {
896
+ "name": "org_id",
897
+ "in": "path",
898
+ "required": true,
899
+ "type": "string",
900
+ "description": "Unique organization identifier."
901
+ },
902
+ {
903
+ "name": "company_id",
904
+ "in": "path",
905
+ "required": true,
906
+ "type": "string",
907
+ "description": "Unique CRM company identifier (prefixed, e.g. cmp_xxx)."
908
+ }
909
+ ],
910
+ "requestBodyType": "",
911
+ "requestBodyRequired": false,
912
+ "responseType": "",
913
+ "responseStatus": "204"
914
+ },
915
+ "listCrmContacts": {
916
+ "operationId": "listCrmContacts",
917
+ "method": "GET",
918
+ "path": "/v1/organizations/{org_id}/crm/contacts",
919
+ "summary": "List contacts",
920
+ "description": "List contacts.",
921
+ "parameters": [
922
+ {
923
+ "name": "org_id",
924
+ "in": "path",
925
+ "required": true,
926
+ "type": "string",
927
+ "description": "Unique organization identifier."
928
+ },
929
+ {
930
+ "name": "page_size",
931
+ "in": "query",
932
+ "required": false,
933
+ "type": "number",
934
+ "description": "Maximum number of items to return (1-100, default 20)."
935
+ },
936
+ {
937
+ "name": "page_token",
938
+ "in": "query",
939
+ "required": false,
940
+ "type": "string",
941
+ "description": "Opaque token for cursor-based pagination."
942
+ }
943
+ ],
944
+ "requestBodyType": "",
945
+ "requestBodyRequired": false,
946
+ "responseType": "{ contacts: ({ company_id?: string; created_at: string; email?: string; id: string; linkedin_url?: string; name: string; notes: string; org_id: string; phone?: string; title?: string; updated_at: string })[]; next_page_token?: string }",
947
+ "responseStatus": "200"
948
+ },
949
+ "createCrmContact": {
950
+ "operationId": "createCrmContact",
951
+ "method": "POST",
952
+ "path": "/v1/organizations/{org_id}/crm/contacts",
953
+ "summary": "Create a contact",
954
+ "description": "Create a contact.",
955
+ "parameters": [
956
+ {
957
+ "name": "org_id",
958
+ "in": "path",
959
+ "required": true,
960
+ "type": "string",
961
+ "description": "Unique organization identifier."
962
+ }
963
+ ],
964
+ "requestBodyType": "{ company_id?: string; email?: string; linkedin_url?: string; name: string; notes?: string; phone?: string; title?: string }",
965
+ "requestBodyRequired": true,
966
+ "responseType": "{ company_id?: string; created_at: string; email?: string; id: string; linkedin_url?: string; name: string; notes: string; org_id: string; phone?: string; title?: string; updated_at: string }",
967
+ "responseStatus": "201"
968
+ },
969
+ "getCrmContact": {
970
+ "operationId": "getCrmContact",
971
+ "method": "GET",
972
+ "path": "/v1/organizations/{org_id}/crm/contacts/{contact_id}",
973
+ "summary": "Get a contact",
974
+ "description": "Get a contact.",
975
+ "parameters": [
976
+ {
977
+ "name": "org_id",
978
+ "in": "path",
979
+ "required": true,
980
+ "type": "string",
981
+ "description": "Unique organization identifier."
982
+ },
983
+ {
984
+ "name": "contact_id",
985
+ "in": "path",
986
+ "required": true,
987
+ "type": "string",
988
+ "description": "Unique CRM contact identifier (prefixed, e.g. cnt_xxx)."
989
+ }
990
+ ],
991
+ "requestBodyType": "",
992
+ "requestBodyRequired": false,
993
+ "responseType": "{ company_id?: string; created_at: string; email?: string; id: string; linkedin_url?: string; name: string; notes: string; org_id: string; phone?: string; title?: string; updated_at: string }",
994
+ "responseStatus": "200"
995
+ },
996
+ "updateCrmContact": {
997
+ "operationId": "updateCrmContact",
998
+ "method": "PUT",
999
+ "path": "/v1/organizations/{org_id}/crm/contacts/{contact_id}",
1000
+ "summary": "Update a contact",
1001
+ "description": "Update a contact.",
1002
+ "parameters": [
1003
+ {
1004
+ "name": "org_id",
1005
+ "in": "path",
1006
+ "required": true,
1007
+ "type": "string",
1008
+ "description": "Unique organization identifier."
1009
+ },
1010
+ {
1011
+ "name": "contact_id",
1012
+ "in": "path",
1013
+ "required": true,
1014
+ "type": "string",
1015
+ "description": "Unique CRM contact identifier (prefixed, e.g. cnt_xxx)."
1016
+ }
1017
+ ],
1018
+ "requestBodyType": "{ company_id?: string; email?: string; linkedin_url?: string; name: string; notes?: string; phone?: string; title?: string }",
1019
+ "requestBodyRequired": true,
1020
+ "responseType": "{ company_id?: string; created_at: string; email?: string; id: string; linkedin_url?: string; name: string; notes: string; org_id: string; phone?: string; title?: string; updated_at: string }",
1021
+ "responseStatus": "200"
1022
+ },
1023
+ "deleteCrmContact": {
1024
+ "operationId": "deleteCrmContact",
1025
+ "method": "DELETE",
1026
+ "path": "/v1/organizations/{org_id}/crm/contacts/{contact_id}",
1027
+ "summary": "Delete a contact",
1028
+ "description": "Delete a contact.",
1029
+ "parameters": [
1030
+ {
1031
+ "name": "org_id",
1032
+ "in": "path",
1033
+ "required": true,
1034
+ "type": "string",
1035
+ "description": "Unique organization identifier."
1036
+ },
1037
+ {
1038
+ "name": "contact_id",
1039
+ "in": "path",
1040
+ "required": true,
1041
+ "type": "string",
1042
+ "description": "Unique CRM contact identifier (prefixed, e.g. cnt_xxx)."
1043
+ }
1044
+ ],
1045
+ "requestBodyType": "",
1046
+ "requestBodyRequired": false,
1047
+ "responseType": "",
1048
+ "responseStatus": "204"
1049
+ },
1050
+ "listCrmDeals": {
1051
+ "operationId": "listCrmDeals",
1052
+ "method": "GET",
1053
+ "path": "/v1/organizations/{org_id}/crm/deals",
1054
+ "summary": "List deals",
1055
+ "description": "List deals.",
1056
+ "parameters": [
1057
+ {
1058
+ "name": "org_id",
1059
+ "in": "path",
1060
+ "required": true,
1061
+ "type": "string",
1062
+ "description": "Unique organization identifier."
1063
+ },
1064
+ {
1065
+ "name": "page_size",
1066
+ "in": "query",
1067
+ "required": false,
1068
+ "type": "number",
1069
+ "description": "Maximum number of items to return (1-100, default 20)."
1070
+ },
1071
+ {
1072
+ "name": "page_token",
1073
+ "in": "query",
1074
+ "required": false,
1075
+ "type": "string",
1076
+ "description": "Opaque token for cursor-based pagination."
1077
+ }
1078
+ ],
1079
+ "requestBodyType": "",
1080
+ "requestBodyRequired": false,
1081
+ "responseType": "{ deals: ({ amount_cents: number; close_date?: string; company_id?: string; created_at: string; currency: string; id: string; org_id: string; owner: string; primary_contact_id?: string; stage: \"lead\" | \"qualified\" | \"proposal\" | \"negotiation\" | \"won\" | \"lost\"; title: string; updated_at: string })[]; next_page_token?: string }",
1082
+ "responseStatus": "200"
1083
+ },
1084
+ "createCrmDeal": {
1085
+ "operationId": "createCrmDeal",
1086
+ "method": "POST",
1087
+ "path": "/v1/organizations/{org_id}/crm/deals",
1088
+ "summary": "Create a deal",
1089
+ "description": "Create a deal.",
1090
+ "parameters": [
1091
+ {
1092
+ "name": "org_id",
1093
+ "in": "path",
1094
+ "required": true,
1095
+ "type": "string",
1096
+ "description": "Unique organization identifier."
1097
+ }
1098
+ ],
1099
+ "requestBodyType": "{ amount_cents?: number; close_date?: string; company_id?: string; currency?: string; owner?: string; primary_contact_id?: string; stage?: \"lead\" | \"qualified\" | \"proposal\" | \"negotiation\" | \"won\" | \"lost\"; title: string }",
1100
+ "requestBodyRequired": true,
1101
+ "responseType": "{ amount_cents: number; close_date?: string; company_id?: string; created_at: string; currency: string; id: string; org_id: string; owner: string; primary_contact_id?: string; stage: \"lead\" | \"qualified\" | \"proposal\" | \"negotiation\" | \"won\" | \"lost\"; title: string; updated_at: string }",
1102
+ "responseStatus": "201"
1103
+ },
1104
+ "getCrmPipeline": {
1105
+ "operationId": "getCrmPipeline",
1106
+ "method": "GET",
1107
+ "path": "/v1/organizations/{org_id}/crm/pipeline",
1108
+ "summary": "Deal pipeline summary",
1109
+ "description": "Returns deal count and total value grouped by pipeline stage.",
1110
+ "parameters": [
1111
+ {
1112
+ "name": "org_id",
1113
+ "in": "path",
1114
+ "required": true,
1115
+ "type": "string",
1116
+ "description": "Unique organization identifier."
1117
+ }
1118
+ ],
1119
+ "requestBodyType": "",
1120
+ "requestBodyRequired": false,
1121
+ "responseType": "{ stages: ({ deal_count: number; stage: \"lead\" | \"qualified\" | \"proposal\" | \"negotiation\" | \"won\" | \"lost\"; total_amount_cents: number })[] }",
1122
+ "responseStatus": "200"
1123
+ },
1124
+ "getCrmDeal": {
1125
+ "operationId": "getCrmDeal",
1126
+ "method": "GET",
1127
+ "path": "/v1/organizations/{org_id}/crm/deals/{deal_id}",
1128
+ "summary": "Get a deal",
1129
+ "description": "Get a deal.",
1130
+ "parameters": [
1131
+ {
1132
+ "name": "org_id",
1133
+ "in": "path",
1134
+ "required": true,
1135
+ "type": "string",
1136
+ "description": "Unique organization identifier."
1137
+ },
1138
+ {
1139
+ "name": "deal_id",
1140
+ "in": "path",
1141
+ "required": true,
1142
+ "type": "string",
1143
+ "description": "Unique CRM deal identifier (prefixed, e.g. dl_xxx)."
1144
+ }
1145
+ ],
1146
+ "requestBodyType": "",
1147
+ "requestBodyRequired": false,
1148
+ "responseType": "{ amount_cents: number; close_date?: string; company_id?: string; created_at: string; currency: string; id: string; org_id: string; owner: string; primary_contact_id?: string; stage: \"lead\" | \"qualified\" | \"proposal\" | \"negotiation\" | \"won\" | \"lost\"; title: string; updated_at: string }",
1149
+ "responseStatus": "200"
1150
+ },
1151
+ "updateCrmDeal": {
1152
+ "operationId": "updateCrmDeal",
1153
+ "method": "PUT",
1154
+ "path": "/v1/organizations/{org_id}/crm/deals/{deal_id}",
1155
+ "summary": "Update a deal",
1156
+ "description": "Update a deal.",
1157
+ "parameters": [
1158
+ {
1159
+ "name": "org_id",
1160
+ "in": "path",
1161
+ "required": true,
1162
+ "type": "string",
1163
+ "description": "Unique organization identifier."
1164
+ },
1165
+ {
1166
+ "name": "deal_id",
1167
+ "in": "path",
1168
+ "required": true,
1169
+ "type": "string",
1170
+ "description": "Unique CRM deal identifier (prefixed, e.g. dl_xxx)."
1171
+ }
1172
+ ],
1173
+ "requestBodyType": "{ amount_cents?: number; close_date?: string; company_id?: string; currency?: string; owner?: string; primary_contact_id?: string; stage?: \"lead\" | \"qualified\" | \"proposal\" | \"negotiation\" | \"won\" | \"lost\"; title: string }",
1174
+ "requestBodyRequired": true,
1175
+ "responseType": "{ amount_cents: number; close_date?: string; company_id?: string; created_at: string; currency: string; id: string; org_id: string; owner: string; primary_contact_id?: string; stage: \"lead\" | \"qualified\" | \"proposal\" | \"negotiation\" | \"won\" | \"lost\"; title: string; updated_at: string }",
1176
+ "responseStatus": "200"
1177
+ },
1178
+ "deleteCrmDeal": {
1179
+ "operationId": "deleteCrmDeal",
1180
+ "method": "DELETE",
1181
+ "path": "/v1/organizations/{org_id}/crm/deals/{deal_id}",
1182
+ "summary": "Delete a deal",
1183
+ "description": "Delete a deal.",
1184
+ "parameters": [
1185
+ {
1186
+ "name": "org_id",
1187
+ "in": "path",
1188
+ "required": true,
1189
+ "type": "string",
1190
+ "description": "Unique organization identifier."
1191
+ },
1192
+ {
1193
+ "name": "deal_id",
1194
+ "in": "path",
1195
+ "required": true,
1196
+ "type": "string",
1197
+ "description": "Unique CRM deal identifier (prefixed, e.g. dl_xxx)."
1198
+ }
1199
+ ],
1200
+ "requestBodyType": "",
1201
+ "requestBodyRequired": false,
1202
+ "responseType": "",
1203
+ "responseStatus": "204"
1204
+ },
1205
+ "listCrmResearchTasks": {
1206
+ "operationId": "listCrmResearchTasks",
1207
+ "method": "GET",
1208
+ "path": "/v1/organizations/{org_id}/crm/research-tasks",
1209
+ "summary": "List research tasks",
1210
+ "description": "List research tasks.",
1211
+ "parameters": [
1212
+ {
1213
+ "name": "org_id",
1214
+ "in": "path",
1215
+ "required": true,
1216
+ "type": "string",
1217
+ "description": "Unique organization identifier."
1218
+ },
1219
+ {
1220
+ "name": "page_size",
1221
+ "in": "query",
1222
+ "required": false,
1223
+ "type": "number",
1224
+ "description": "Maximum number of items to return (1-100, default 20)."
1225
+ },
1226
+ {
1227
+ "name": "page_token",
1228
+ "in": "query",
1229
+ "required": false,
1230
+ "type": "string",
1231
+ "description": "Opaque token for cursor-based pagination."
1232
+ }
1233
+ ],
1234
+ "requestBodyType": "",
1235
+ "requestBodyRequired": false,
1236
+ "responseType": "{ next_page_token?: string; tasks: ({ approved_at?: string; attempts: number; created_at: string; error?: string; id: string; kind: \"enrich_company\" | \"enrich_contact\" | \"research_deal\" | \"draft_outreach\" | \"send_outreach\" | \"custom\"; max_attempts: number; org_id: string; priority: number; requires_approval: boolean; role: \"researcher\" | \"enricher\" | \"outreach\"; status: \"pending\" | \"leased\" | \"done\" | \"failed\" | \"canceled\" | \"awaiting_approval\"; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\"; updated_at: string })[] }",
1237
+ "responseStatus": "200"
1238
+ },
1239
+ "createCrmResearchTask": {
1240
+ "operationId": "createCrmResearchTask",
1241
+ "method": "POST",
1242
+ "path": "/v1/organizations/{org_id}/crm/research-tasks",
1243
+ "summary": "Enqueue a research task",
1244
+ "description": "Adds a task to the CRM research queue. The autonomous research worker leases pending tasks, enriches the subject entity, and writes results back.\n",
1245
+ "parameters": [
1246
+ {
1247
+ "name": "org_id",
1248
+ "in": "path",
1249
+ "required": true,
1250
+ "type": "string",
1251
+ "description": "Unique organization identifier."
1252
+ }
1253
+ ],
1254
+ "requestBodyType": "{ kind: \"enrich_company\" | \"enrich_contact\" | \"research_deal\" | \"draft_outreach\" | \"send_outreach\" | \"custom\"; priority?: number; role?: \"researcher\" | \"enricher\" | \"outreach\"; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\" }",
1255
+ "requestBodyRequired": true,
1256
+ "responseType": "{ approved_at?: string; attempts: number; created_at: string; error?: string; id: string; kind: \"enrich_company\" | \"enrich_contact\" | \"research_deal\" | \"draft_outreach\" | \"send_outreach\" | \"custom\"; max_attempts: number; org_id: string; priority: number; requires_approval: boolean; role: \"researcher\" | \"enricher\" | \"outreach\"; status: \"pending\" | \"leased\" | \"done\" | \"failed\" | \"canceled\" | \"awaiting_approval\"; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\"; updated_at: string }",
1257
+ "responseStatus": "201"
1258
+ },
1259
+ "getCrmResearchTask": {
1260
+ "operationId": "getCrmResearchTask",
1261
+ "method": "GET",
1262
+ "path": "/v1/organizations/{org_id}/crm/research-tasks/{task_id}",
1263
+ "summary": "Get a research task",
1264
+ "description": "Get a research task.",
1265
+ "parameters": [
1266
+ {
1267
+ "name": "org_id",
1268
+ "in": "path",
1269
+ "required": true,
1270
+ "type": "string",
1271
+ "description": "Unique organization identifier."
1272
+ },
1273
+ {
1274
+ "name": "task_id",
1275
+ "in": "path",
1276
+ "required": true,
1277
+ "type": "string",
1278
+ "description": "Unique CRM research task identifier (prefixed, e.g. ctk_xxx)."
1279
+ }
1280
+ ],
1281
+ "requestBodyType": "",
1282
+ "requestBodyRequired": false,
1283
+ "responseType": "{ approved_at?: string; attempts: number; created_at: string; error?: string; id: string; kind: \"enrich_company\" | \"enrich_contact\" | \"research_deal\" | \"draft_outreach\" | \"send_outreach\" | \"custom\"; max_attempts: number; org_id: string; priority: number; requires_approval: boolean; role: \"researcher\" | \"enricher\" | \"outreach\"; status: \"pending\" | \"leased\" | \"done\" | \"failed\" | \"canceled\" | \"awaiting_approval\"; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\"; updated_at: string }",
1284
+ "responseStatus": "200"
1285
+ },
1286
+ "cancelCrmResearchTask": {
1287
+ "operationId": "cancelCrmResearchTask",
1288
+ "method": "POST",
1289
+ "path": "/v1/organizations/{org_id}/crm/research-tasks/{task_id}/cancel",
1290
+ "summary": "Cancel a research task",
1291
+ "description": "Cancels a pending or leased task. Terminal tasks are unaffected.",
1292
+ "parameters": [
1293
+ {
1294
+ "name": "org_id",
1295
+ "in": "path",
1296
+ "required": true,
1297
+ "type": "string",
1298
+ "description": "Unique organization identifier."
1299
+ },
1300
+ {
1301
+ "name": "task_id",
1302
+ "in": "path",
1303
+ "required": true,
1304
+ "type": "string",
1305
+ "description": "Unique CRM research task identifier (prefixed, e.g. ctk_xxx)."
1306
+ }
1307
+ ],
1308
+ "requestBodyType": "",
1309
+ "requestBodyRequired": false,
1310
+ "responseType": "{ approved_at?: string; attempts: number; created_at: string; error?: string; id: string; kind: \"enrich_company\" | \"enrich_contact\" | \"research_deal\" | \"draft_outreach\" | \"send_outreach\" | \"custom\"; max_attempts: number; org_id: string; priority: number; requires_approval: boolean; role: \"researcher\" | \"enricher\" | \"outreach\"; status: \"pending\" | \"leased\" | \"done\" | \"failed\" | \"canceled\" | \"awaiting_approval\"; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\"; updated_at: string }",
1311
+ "responseStatus": "200"
1312
+ },
1313
+ "getCrmContext": {
1314
+ "operationId": "getCrmContext",
1315
+ "method": "GET",
1316
+ "path": "/v1/organizations/{org_id}/crm/context",
1317
+ "summary": "Get the org CRM context",
1318
+ "description": "Returns the shared CRM context document for the organization.",
1319
+ "parameters": [
1320
+ {
1321
+ "name": "org_id",
1322
+ "in": "path",
1323
+ "required": true,
1324
+ "type": "string",
1325
+ "description": "Unique organization identifier."
644
1326
  }
645
1327
  ],
646
1328
  "requestBodyType": "",
647
1329
  "requestBodyRequired": false,
648
- "responseType": "{ branches: ({ branch_name: string; created_at: string; credential_id?: string; database_id: string; discarded_at?: string; error?: string; expires_at?: string; id: string; session_id?: string; status: \"pending\" | \"ready\" | \"error\" | \"discarded\" })[]; next_page_token?: string }",
1330
+ "responseType": "{ icp: string; notes: string; org_id: string; positioning: string; tone: string; updated_at: string }",
649
1331
  "responseStatus": "200"
650
1332
  },
651
- "discardDatabaseBranch": {
652
- "operationId": "discardDatabaseBranch",
653
- "method": "DELETE",
654
- "path": "/v1/projects/{project_id}/branches/{branch_id}",
655
- "summary": "Discard a sandbox branch",
656
- "description": "Marks an ephemeral sandbox branch as discarded for teardown.",
1333
+ "updateCrmContext": {
1334
+ "operationId": "updateCrmContext",
1335
+ "method": "PUT",
1336
+ "path": "/v1/organizations/{org_id}/crm/context",
1337
+ "summary": "Update the org CRM context",
1338
+ "description": "Creates or updates the shared CRM context document.",
657
1339
  "parameters": [
658
1340
  {
659
- "name": "project_id",
1341
+ "name": "org_id",
660
1342
  "in": "path",
661
1343
  "required": true,
662
1344
  "type": "string",
663
- "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1345
+ "description": "Unique organization identifier."
1346
+ }
1347
+ ],
1348
+ "requestBodyType": "{ icp?: string; notes?: string; positioning?: string; tone?: string }",
1349
+ "requestBodyRequired": true,
1350
+ "responseType": "{ icp: string; notes: string; org_id: string; positioning: string; tone: string; updated_at: string }",
1351
+ "responseStatus": "200"
1352
+ },
1353
+ "approveCrmResearchTask": {
1354
+ "operationId": "approveCrmResearchTask",
1355
+ "method": "POST",
1356
+ "path": "/v1/organizations/{org_id}/crm/research-tasks/{task_id}/approve",
1357
+ "summary": "Approve a research task",
1358
+ "description": "Approves a task that is awaiting approval (an irreversible action). The task flips to pending and is then run by the worker.\n",
1359
+ "parameters": [
1360
+ {
1361
+ "name": "org_id",
1362
+ "in": "path",
1363
+ "required": true,
1364
+ "type": "string",
1365
+ "description": "Unique organization identifier."
664
1366
  },
665
1367
  {
666
- "name": "branch_id",
1368
+ "name": "task_id",
667
1369
  "in": "path",
668
1370
  "required": true,
669
1371
  "type": "string",
670
- "description": "Unique sandbox branch identifier (prefixed, e.g. brn_xxx)."
1372
+ "description": "Unique CRM research task identifier (prefixed, e.g. ctk_xxx)."
671
1373
  }
672
1374
  ],
673
1375
  "requestBodyType": "",
674
1376
  "requestBodyRequired": false,
675
- "responseType": "",
676
- "responseStatus": "204"
1377
+ "responseType": "{ approved_at?: string; attempts: number; created_at: string; error?: string; id: string; kind: \"enrich_company\" | \"enrich_contact\" | \"research_deal\" | \"draft_outreach\" | \"send_outreach\" | \"custom\"; max_attempts: number; org_id: string; priority: number; requires_approval: boolean; role: \"researcher\" | \"enricher\" | \"outreach\"; status: \"pending\" | \"leased\" | \"done\" | \"failed\" | \"canceled\" | \"awaiting_approval\"; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\"; updated_at: string }",
1378
+ "responseStatus": "200"
677
1379
  },
678
- "listCacheRules": {
679
- "operationId": "listCacheRules",
1380
+ "listCrmArtifacts": {
1381
+ "operationId": "listCrmArtifacts",
680
1382
  "method": "GET",
681
- "path": "/v1/projects/{project_id}/databases/{database_id}/cache-rules",
682
- "summary": "List cache rules",
683
- "description": "Returns the cache rules for a database, showing all observed query\nshapes with their stats and cache recommendations.\n",
1383
+ "path": "/v1/organizations/{org_id}/crm/artifacts",
1384
+ "summary": "List artifacts",
1385
+ "description": "Lists agent-produced artifacts for the organization.",
684
1386
  "parameters": [
685
1387
  {
686
- "name": "project_id",
687
- "in": "path",
688
- "required": true,
689
- "type": "string",
690
- "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
691
- },
692
- {
693
- "name": "database_id",
1388
+ "name": "org_id",
694
1389
  "in": "path",
695
1390
  "required": true,
696
1391
  "type": "string",
697
- "description": "Unique database identifier (prefixed, e.g. db_xxx)."
1392
+ "description": "Unique organization identifier."
698
1393
  },
699
1394
  {
700
1395
  "name": "page_size",
@@ -713,41 +1408,61 @@
713
1408
  ],
714
1409
  "requestBodyType": "",
715
1410
  "requestBodyRequired": false,
716
- "responseType": "{ entries: ({ avg_latency_ms: number; avg_response_bytes: number; cache_enabled: boolean; cache_swr_seconds?: number; cache_ttl_seconds?: number; call_count: number; first_seen_at: string; last_seen_at: string; normalized_sql: string; p95_latency_ms: number; query_hash: string; query_type: \"read\" | \"write\" | \"other\"; recommendation: \"great\" | \"good\" | \"fair\" | \"poor\"; stability_rate: number })[]; next_page_token?: string }",
1411
+ "responseType": "{ artifacts: ({ body: string; created_at: string; id: string; kind: string; org_id: string; status: \"draft\" | \"approved\" | \"sent\" | \"discarded\"; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\"; task_id?: string; title: string; updated_at: string })[]; next_page_token?: string }",
717
1412
  "responseStatus": "200"
718
1413
  },
719
- "updateCacheRule": {
720
- "operationId": "updateCacheRule",
721
- "method": "PUT",
722
- "path": "/v1/projects/{project_id}/databases/{database_id}/cache-rules/{query_hash}",
723
- "summary": "Update cache rule",
724
- "description": "Enable or disable caching for a specific query shape, with optional\nTTL and SWR overrides. Requires the query to exist in the cache rules.\n",
1414
+ "getCrmArtifact": {
1415
+ "operationId": "getCrmArtifact",
1416
+ "method": "GET",
1417
+ "path": "/v1/organizations/{org_id}/crm/artifacts/{artifact_id}",
1418
+ "summary": "Get an artifact",
1419
+ "description": "Returns a single artifact by ID.",
725
1420
  "parameters": [
726
1421
  {
727
- "name": "project_id",
1422
+ "name": "org_id",
728
1423
  "in": "path",
729
1424
  "required": true,
730
1425
  "type": "string",
731
- "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1426
+ "description": "Unique organization identifier."
732
1427
  },
733
1428
  {
734
- "name": "database_id",
1429
+ "name": "artifact_id",
735
1430
  "in": "path",
736
1431
  "required": true,
737
1432
  "type": "string",
738
- "description": "Unique database identifier (prefixed, e.g. db_xxx)."
739
- },
1433
+ "description": "Unique CRM artifact identifier (prefixed, e.g. art_xxx)."
1434
+ }
1435
+ ],
1436
+ "requestBodyType": "",
1437
+ "requestBodyRequired": false,
1438
+ "responseType": "{ body: string; created_at: string; id: string; kind: string; org_id: string; status: \"draft\" | \"approved\" | \"sent\" | \"discarded\"; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\"; task_id?: string; title: string; updated_at: string }",
1439
+ "responseStatus": "200"
1440
+ },
1441
+ "listCrmActivities": {
1442
+ "operationId": "listCrmActivities",
1443
+ "method": "GET",
1444
+ "path": "/v1/organizations/{org_id}/crm/activities",
1445
+ "summary": "List activities",
1446
+ "description": "Lists the organization's most recent CRM activity, newest first.",
1447
+ "parameters": [
740
1448
  {
741
- "name": "query_hash",
1449
+ "name": "org_id",
742
1450
  "in": "path",
743
1451
  "required": true,
744
1452
  "type": "string",
745
- "description": "xxhash64 hex of the normalized SQL."
1453
+ "description": "Unique organization identifier."
1454
+ },
1455
+ {
1456
+ "name": "page_size",
1457
+ "in": "query",
1458
+ "required": false,
1459
+ "type": "number",
1460
+ "description": "Maximum number of items to return (1-100, default 20)."
746
1461
  }
747
1462
  ],
748
- "requestBodyType": "{ cache_enabled: boolean; cache_swr_seconds?: number; cache_ttl_seconds?: number }",
749
- "requestBodyRequired": true,
750
- "responseType": "{ entry: { avg_latency_ms: number; avg_response_bytes: number; cache_enabled: boolean; cache_swr_seconds?: number; cache_ttl_seconds?: number; call_count: number; first_seen_at: string; last_seen_at: string; normalized_sql: string; p95_latency_ms: number; query_hash: string; query_type: \"read\" | \"write\" | \"other\"; recommendation: \"great\" | \"good\" | \"fair\" | \"poor\"; stability_rate: number } }",
1463
+ "requestBodyType": "",
1464
+ "requestBodyRequired": false,
1465
+ "responseType": "{ activities: ({ actor: string; at: string; id: string; org_id: string; subject_id: string; subject_type: \"company\" | \"contact\" | \"deal\"; verb: string })[] }",
751
1466
  "responseStatus": "200"
752
1467
  },
753
1468
  "listDatabases": {
@@ -1086,6 +1801,141 @@
1086
1801
  "responseType": "{ image_sha: string; status: \"ok\" | \"degraded\"; timestamp?: string; version: string }",
1087
1802
  "responseStatus": "200"
1088
1803
  },
1804
+ "listHoneytokens": {
1805
+ "operationId": "listHoneytokens",
1806
+ "method": "GET",
1807
+ "path": "/v1/projects/{project_id}/honeytokens",
1808
+ "summary": "List honeytokens",
1809
+ "description": "Lists the project's honeytokens.",
1810
+ "parameters": [
1811
+ {
1812
+ "name": "project_id",
1813
+ "in": "path",
1814
+ "required": true,
1815
+ "type": "string",
1816
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1817
+ },
1818
+ {
1819
+ "name": "page_size",
1820
+ "in": "query",
1821
+ "required": false,
1822
+ "type": "number",
1823
+ "description": "Maximum number of items to return (1-100, default 20)."
1824
+ },
1825
+ {
1826
+ "name": "page_token",
1827
+ "in": "query",
1828
+ "required": false,
1829
+ "type": "string",
1830
+ "description": "Opaque token for cursor-based pagination."
1831
+ }
1832
+ ],
1833
+ "requestBodyType": "",
1834
+ "requestBodyRequired": false,
1835
+ "responseType": "{ honeytokens: ({ action: \"audit_only\" | \"kill\"; created_at: string; id: string; project_id: string; relation_name: string; schema_name?: string; updated_at: string })[]; next_page_token?: string }",
1836
+ "responseStatus": "200"
1837
+ },
1838
+ "createHoneytoken": {
1839
+ "operationId": "createHoneytoken",
1840
+ "method": "POST",
1841
+ "path": "/v1/projects/{project_id}/honeytokens",
1842
+ "summary": "Register a honeytoken",
1843
+ "description": "Registers a decoy (canary) relation for the project. Any agent statement\nthat references it is blocked and recorded as a canary_tripped audit event.\n",
1844
+ "parameters": [
1845
+ {
1846
+ "name": "project_id",
1847
+ "in": "path",
1848
+ "required": true,
1849
+ "type": "string",
1850
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1851
+ }
1852
+ ],
1853
+ "requestBodyType": "{ action: \"audit_only\" | \"kill\"; relation_name: string; schema_name?: string }",
1854
+ "requestBodyRequired": true,
1855
+ "responseType": "{ action: \"audit_only\" | \"kill\"; created_at: string; id: string; project_id: string; relation_name: string; schema_name?: string; updated_at: string }",
1856
+ "responseStatus": "201"
1857
+ },
1858
+ "getHoneytoken": {
1859
+ "operationId": "getHoneytoken",
1860
+ "method": "GET",
1861
+ "path": "/v1/projects/{project_id}/honeytokens/{honeytoken_id}",
1862
+ "summary": "Get a honeytoken",
1863
+ "description": "Returns a single honeytoken by ID.",
1864
+ "parameters": [
1865
+ {
1866
+ "name": "project_id",
1867
+ "in": "path",
1868
+ "required": true,
1869
+ "type": "string",
1870
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1871
+ },
1872
+ {
1873
+ "name": "honeytoken_id",
1874
+ "in": "path",
1875
+ "required": true,
1876
+ "type": "string",
1877
+ "description": "Unique honeytoken identifier (prefixed, e.g. hnt_xxx)."
1878
+ }
1879
+ ],
1880
+ "requestBodyType": "",
1881
+ "requestBodyRequired": false,
1882
+ "responseType": "{ action: \"audit_only\" | \"kill\"; created_at: string; id: string; project_id: string; relation_name: string; schema_name?: string; updated_at: string }",
1883
+ "responseStatus": "200"
1884
+ },
1885
+ "updateHoneytoken": {
1886
+ "operationId": "updateHoneytoken",
1887
+ "method": "PUT",
1888
+ "path": "/v1/projects/{project_id}/honeytokens/{honeytoken_id}",
1889
+ "summary": "Update a honeytoken",
1890
+ "description": "Updates a honeytoken's relation or action.",
1891
+ "parameters": [
1892
+ {
1893
+ "name": "project_id",
1894
+ "in": "path",
1895
+ "required": true,
1896
+ "type": "string",
1897
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1898
+ },
1899
+ {
1900
+ "name": "honeytoken_id",
1901
+ "in": "path",
1902
+ "required": true,
1903
+ "type": "string",
1904
+ "description": "Unique honeytoken identifier (prefixed, e.g. hnt_xxx)."
1905
+ }
1906
+ ],
1907
+ "requestBodyType": "{ action: \"audit_only\" | \"kill\"; relation_name: string; schema_name?: string }",
1908
+ "requestBodyRequired": true,
1909
+ "responseType": "{ action: \"audit_only\" | \"kill\"; created_at: string; id: string; project_id: string; relation_name: string; schema_name?: string; updated_at: string }",
1910
+ "responseStatus": "200"
1911
+ },
1912
+ "deleteHoneytoken": {
1913
+ "operationId": "deleteHoneytoken",
1914
+ "method": "DELETE",
1915
+ "path": "/v1/projects/{project_id}/honeytokens/{honeytoken_id}",
1916
+ "summary": "Delete a honeytoken",
1917
+ "description": "Removes a honeytoken from the project.",
1918
+ "parameters": [
1919
+ {
1920
+ "name": "project_id",
1921
+ "in": "path",
1922
+ "required": true,
1923
+ "type": "string",
1924
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1925
+ },
1926
+ {
1927
+ "name": "honeytoken_id",
1928
+ "in": "path",
1929
+ "required": true,
1930
+ "type": "string",
1931
+ "description": "Unique honeytoken identifier (prefixed, e.g. hnt_xxx)."
1932
+ }
1933
+ ],
1934
+ "requestBodyType": "",
1935
+ "requestBodyRequired": false,
1936
+ "responseType": "",
1937
+ "responseStatus": "204"
1938
+ },
1089
1939
  "getProjectInsights": {
1090
1940
  "operationId": "getProjectInsights",
1091
1941
  "method": "GET",
@@ -1523,69 +2373,164 @@
1523
2373
  "parameters": [],
1524
2374
  "requestBodyType": "",
1525
2375
  "requestBodyRequired": false,
1526
- "responseType": "{ regions: ({ available: boolean; continent?: string; country?: string; id: string; name: string; provider: \"aws\" | \"azure\" | \"gcp\"; status: \"active\" | \"draining\" | \"inactive\" })[] }",
1527
- "responseStatus": "200"
2376
+ "responseType": "{ regions: ({ available: boolean; continent?: string; country?: string; id: string; name: string; provider: \"aws\" | \"azure\" | \"gcp\"; status: \"active\" | \"draining\" | \"inactive\" })[] }",
2377
+ "responseStatus": "200"
2378
+ },
2379
+ "listReplicas": {
2380
+ "operationId": "listReplicas",
2381
+ "method": "GET",
2382
+ "path": "/v1/databases/{database_id}/replicas",
2383
+ "summary": "List replicas",
2384
+ "description": "Lists all read replicas for a database.",
2385
+ "parameters": [
2386
+ {
2387
+ "name": "database_id",
2388
+ "in": "path",
2389
+ "required": true,
2390
+ "type": "string",
2391
+ "description": "Unique database identifier (prefixed, e.g. db_xxx)."
2392
+ }
2393
+ ],
2394
+ "requestBodyType": "",
2395
+ "requestBodyRequired": false,
2396
+ "responseType": "{ next_page_token?: string; replicas: ({ created_at: string; database_id: string; host: string; id: string; port: number; ssl_mode: \"disable\" | \"allow\" | \"prefer\" | \"require\" | \"verify-ca\" | \"verify-full\"; updated_at: string })[] }",
2397
+ "responseStatus": "200"
2398
+ },
2399
+ "createReplica": {
2400
+ "operationId": "createReplica",
2401
+ "method": "POST",
2402
+ "path": "/v1/databases/{database_id}/replicas",
2403
+ "summary": "Add a replica",
2404
+ "description": "Adds a read replica to a database.",
2405
+ "parameters": [
2406
+ {
2407
+ "name": "database_id",
2408
+ "in": "path",
2409
+ "required": true,
2410
+ "type": "string",
2411
+ "description": "Unique database identifier (prefixed, e.g. db_xxx)."
2412
+ }
2413
+ ],
2414
+ "requestBodyType": "{ host: string; port: number; ssl_mode?: \"disable\" | \"allow\" | \"prefer\" | \"require\" | \"verify-ca\" | \"verify-full\" }",
2415
+ "requestBodyRequired": true,
2416
+ "responseType": "{ created_at: string; database_id: string; host: string; id: string; port: number; ssl_mode: \"disable\" | \"allow\" | \"prefer\" | \"require\" | \"verify-ca\" | \"verify-full\"; updated_at: string }",
2417
+ "responseStatus": "201"
2418
+ },
2419
+ "deleteReplica": {
2420
+ "operationId": "deleteReplica",
2421
+ "method": "DELETE",
2422
+ "path": "/v1/databases/{database_id}/replicas/{replica_id}",
2423
+ "summary": "Delete a replica",
2424
+ "description": "Removes a read replica from a database.",
2425
+ "parameters": [
2426
+ {
2427
+ "name": "database_id",
2428
+ "in": "path",
2429
+ "required": true,
2430
+ "type": "string",
2431
+ "description": "Unique database identifier (prefixed, e.g. db_xxx)."
2432
+ },
2433
+ {
2434
+ "name": "replica_id",
2435
+ "in": "path",
2436
+ "required": true,
2437
+ "type": "string",
2438
+ "description": "Unique replica identifier (prefixed, e.g. rep_xxx)."
2439
+ }
2440
+ ],
2441
+ "requestBodyType": "",
2442
+ "requestBodyRequired": false,
2443
+ "responseType": "",
2444
+ "responseStatus": "204"
1528
2445
  },
1529
- "listReplicas": {
1530
- "operationId": "listReplicas",
2446
+ "listSchemaAnnotations": {
2447
+ "operationId": "listSchemaAnnotations",
1531
2448
  "method": "GET",
1532
- "path": "/v1/databases/{database_id}/replicas",
1533
- "summary": "List replicas",
1534
- "description": "Lists all read replicas for a database.",
2449
+ "path": "/v1/projects/{project_id}/schema-annotations",
2450
+ "summary": "List schema annotations",
2451
+ "description": "Lists the project's human-written table and column descriptions. These are surfaced to connected agents through the MCP schema catalog.\n",
1535
2452
  "parameters": [
1536
2453
  {
1537
- "name": "database_id",
2454
+ "name": "project_id",
1538
2455
  "in": "path",
1539
2456
  "required": true,
1540
2457
  "type": "string",
1541
- "description": "Unique database identifier (prefixed, e.g. db_xxx)."
2458
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
2459
+ },
2460
+ {
2461
+ "name": "page_size",
2462
+ "in": "query",
2463
+ "required": false,
2464
+ "type": "number",
2465
+ "description": "Maximum number of items to return (1-100, default 20)."
2466
+ },
2467
+ {
2468
+ "name": "page_token",
2469
+ "in": "query",
2470
+ "required": false,
2471
+ "type": "string",
2472
+ "description": "Opaque token for cursor-based pagination."
1542
2473
  }
1543
2474
  ],
1544
2475
  "requestBodyType": "",
1545
2476
  "requestBodyRequired": false,
1546
- "responseType": "{ next_page_token?: string; replicas: ({ created_at: string; database_id: string; host: string; id: string; port: number; ssl_mode: \"disable\" | \"allow\" | \"prefer\" | \"require\" | \"verify-ca\" | \"verify-full\"; updated_at: string })[] }",
2477
+ "responseType": "{ annotations: ({ column_name?: string; created_at: string; description: string; id: string; project_id: string; schema_name?: string; table_name: string; updated_at: string })[]; next_page_token?: string }",
1547
2478
  "responseStatus": "200"
1548
2479
  },
1549
- "createReplica": {
1550
- "operationId": "createReplica",
1551
- "method": "POST",
1552
- "path": "/v1/databases/{database_id}/replicas",
1553
- "summary": "Add a replica",
1554
- "description": "Adds a read replica to a database.",
2480
+ "putSchemaAnnotation": {
2481
+ "operationId": "putSchemaAnnotation",
2482
+ "method": "PUT",
2483
+ "path": "/v1/projects/{project_id}/schema-annotations",
2484
+ "summary": "Create or replace a schema annotation",
2485
+ "description": "Attaches an operator-written description to a table (omit column_name) or a column. Keyed by (schema_name, table_name, column_name); an existing annotation with the same key is replaced.\n",
1555
2486
  "parameters": [
1556
2487
  {
1557
- "name": "database_id",
2488
+ "name": "project_id",
1558
2489
  "in": "path",
1559
2490
  "required": true,
1560
2491
  "type": "string",
1561
- "description": "Unique database identifier (prefixed, e.g. db_xxx)."
2492
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1562
2493
  }
1563
2494
  ],
1564
- "requestBodyType": "{ host: string; port: number; ssl_mode?: \"disable\" | \"allow\" | \"prefer\" | \"require\" | \"verify-ca\" | \"verify-full\" }",
2495
+ "requestBodyType": "{ column_name?: string; description: string; schema_name?: string; table_name: string }",
1565
2496
  "requestBodyRequired": true,
1566
- "responseType": "{ created_at: string; database_id: string; host: string; id: string; port: number; ssl_mode: \"disable\" | \"allow\" | \"prefer\" | \"require\" | \"verify-ca\" | \"verify-full\"; updated_at: string }",
1567
- "responseStatus": "201"
2497
+ "responseType": "{ column_name?: string; created_at: string; description: string; id: string; project_id: string; schema_name?: string; table_name: string; updated_at: string }",
2498
+ "responseStatus": "200"
1568
2499
  },
1569
- "deleteReplica": {
1570
- "operationId": "deleteReplica",
2500
+ "deleteSchemaAnnotation": {
2501
+ "operationId": "deleteSchemaAnnotation",
1571
2502
  "method": "DELETE",
1572
- "path": "/v1/databases/{database_id}/replicas/{replica_id}",
1573
- "summary": "Delete a replica",
1574
- "description": "Removes a read replica from a database.",
2503
+ "path": "/v1/projects/{project_id}/schema-annotations",
2504
+ "summary": "Delete a schema annotation",
2505
+ "description": "Removes a single annotation identified by its natural key. Omit column_name to delete a table-level annotation, and omit schema_name to match the unqualified form.\n",
1575
2506
  "parameters": [
1576
2507
  {
1577
- "name": "database_id",
2508
+ "name": "project_id",
1578
2509
  "in": "path",
1579
2510
  "required": true,
1580
2511
  "type": "string",
1581
- "description": "Unique database identifier (prefixed, e.g. db_xxx)."
2512
+ "description": "Unique project identifier (prefixed, e.g. prj_xxx)."
1582
2513
  },
1583
2514
  {
1584
- "name": "replica_id",
1585
- "in": "path",
2515
+ "name": "table_name",
2516
+ "in": "query",
1586
2517
  "required": true,
1587
2518
  "type": "string",
1588
- "description": "Unique replica identifier (prefixed, e.g. rep_xxx)."
2519
+ "description": "Relation (table or view) the annotation describes."
2520
+ },
2521
+ {
2522
+ "name": "schema_name",
2523
+ "in": "query",
2524
+ "required": false,
2525
+ "type": "string",
2526
+ "description": "Optional schema. Omit to match the unqualified form."
2527
+ },
2528
+ {
2529
+ "name": "column_name",
2530
+ "in": "query",
2531
+ "required": false,
2532
+ "type": "string",
2533
+ "description": "Optional column. Omit to delete a table-level annotation."
1589
2534
  }
1590
2535
  ],
1591
2536
  "requestBodyType": "",
@@ -2140,6 +3085,40 @@
2140
3085
  path: "/v1/projects/{project_id}/audit-logs/verify"
2141
3086
  }
2142
3087
  },
3088
+ policies: {
3089
+ recommendAgentPolicy: {
3090
+ method: "POST",
3091
+ path: "/v1/projects/{project_id}/agents/{agent_id}/policy-recommendation"
3092
+ },
3093
+ listPolicyProfiles: {
3094
+ method: "GET",
3095
+ path: "/v1/projects/{project_id}/policies"
3096
+ },
3097
+ createPolicyProfile: {
3098
+ method: "POST",
3099
+ path: "/v1/projects/{project_id}/policies"
3100
+ },
3101
+ getPolicyProfile: {
3102
+ method: "GET",
3103
+ path: "/v1/projects/{project_id}/policies/{policy_id}"
3104
+ },
3105
+ updatePolicyProfile: {
3106
+ method: "PUT",
3107
+ path: "/v1/projects/{project_id}/policies/{policy_id}"
3108
+ },
3109
+ deletePolicyProfile: {
3110
+ method: "DELETE",
3111
+ path: "/v1/projects/{project_id}/policies/{policy_id}"
3112
+ },
3113
+ dryEvalPolicy: {
3114
+ method: "POST",
3115
+ path: "/v1/projects/{project_id}/policy-evaluations"
3116
+ },
3117
+ replayPolicy: {
3118
+ method: "POST",
3119
+ path: "/v1/projects/{project_id}/policy-replays"
3120
+ }
3121
+ },
2143
3122
  anomalies: {
2144
3123
  listAnomalyAlerts: {
2145
3124
  method: "GET",
@@ -2270,6 +3249,112 @@
2270
3249
  path: "/v1/databases/{database_id}/replicas/{replica_id}"
2271
3250
  }
2272
3251
  },
3252
+ crm: {
3253
+ listCrmCompanies: {
3254
+ method: "GET",
3255
+ path: "/v1/organizations/{org_id}/crm/companies"
3256
+ },
3257
+ createCrmCompany: {
3258
+ method: "POST",
3259
+ path: "/v1/organizations/{org_id}/crm/companies"
3260
+ },
3261
+ getCrmCompany: {
3262
+ method: "GET",
3263
+ path: "/v1/organizations/{org_id}/crm/companies/{company_id}"
3264
+ },
3265
+ updateCrmCompany: {
3266
+ method: "PUT",
3267
+ path: "/v1/organizations/{org_id}/crm/companies/{company_id}"
3268
+ },
3269
+ deleteCrmCompany: {
3270
+ method: "DELETE",
3271
+ path: "/v1/organizations/{org_id}/crm/companies/{company_id}"
3272
+ },
3273
+ listCrmContacts: {
3274
+ method: "GET",
3275
+ path: "/v1/organizations/{org_id}/crm/contacts"
3276
+ },
3277
+ createCrmContact: {
3278
+ method: "POST",
3279
+ path: "/v1/organizations/{org_id}/crm/contacts"
3280
+ },
3281
+ getCrmContact: {
3282
+ method: "GET",
3283
+ path: "/v1/organizations/{org_id}/crm/contacts/{contact_id}"
3284
+ },
3285
+ updateCrmContact: {
3286
+ method: "PUT",
3287
+ path: "/v1/organizations/{org_id}/crm/contacts/{contact_id}"
3288
+ },
3289
+ deleteCrmContact: {
3290
+ method: "DELETE",
3291
+ path: "/v1/organizations/{org_id}/crm/contacts/{contact_id}"
3292
+ },
3293
+ listCrmDeals: {
3294
+ method: "GET",
3295
+ path: "/v1/organizations/{org_id}/crm/deals"
3296
+ },
3297
+ createCrmDeal: {
3298
+ method: "POST",
3299
+ path: "/v1/organizations/{org_id}/crm/deals"
3300
+ },
3301
+ getCrmPipeline: {
3302
+ method: "GET",
3303
+ path: "/v1/organizations/{org_id}/crm/pipeline"
3304
+ },
3305
+ getCrmDeal: {
3306
+ method: "GET",
3307
+ path: "/v1/organizations/{org_id}/crm/deals/{deal_id}"
3308
+ },
3309
+ updateCrmDeal: {
3310
+ method: "PUT",
3311
+ path: "/v1/organizations/{org_id}/crm/deals/{deal_id}"
3312
+ },
3313
+ deleteCrmDeal: {
3314
+ method: "DELETE",
3315
+ path: "/v1/organizations/{org_id}/crm/deals/{deal_id}"
3316
+ },
3317
+ listCrmResearchTasks: {
3318
+ method: "GET",
3319
+ path: "/v1/organizations/{org_id}/crm/research-tasks"
3320
+ },
3321
+ createCrmResearchTask: {
3322
+ method: "POST",
3323
+ path: "/v1/organizations/{org_id}/crm/research-tasks"
3324
+ },
3325
+ getCrmResearchTask: {
3326
+ method: "GET",
3327
+ path: "/v1/organizations/{org_id}/crm/research-tasks/{task_id}"
3328
+ },
3329
+ cancelCrmResearchTask: {
3330
+ method: "POST",
3331
+ path: "/v1/organizations/{org_id}/crm/research-tasks/{task_id}/cancel"
3332
+ },
3333
+ getCrmContext: {
3334
+ method: "GET",
3335
+ path: "/v1/organizations/{org_id}/crm/context"
3336
+ },
3337
+ updateCrmContext: {
3338
+ method: "PUT",
3339
+ path: "/v1/organizations/{org_id}/crm/context"
3340
+ },
3341
+ approveCrmResearchTask: {
3342
+ method: "POST",
3343
+ path: "/v1/organizations/{org_id}/crm/research-tasks/{task_id}/approve"
3344
+ },
3345
+ listCrmArtifacts: {
3346
+ method: "GET",
3347
+ path: "/v1/organizations/{org_id}/crm/artifacts"
3348
+ },
3349
+ getCrmArtifact: {
3350
+ method: "GET",
3351
+ path: "/v1/organizations/{org_id}/crm/artifacts/{artifact_id}"
3352
+ },
3353
+ listCrmActivities: {
3354
+ method: "GET",
3355
+ path: "/v1/organizations/{org_id}/crm/activities"
3356
+ }
3357
+ },
2273
3358
  databases: {
2274
3359
  listDatabases: {
2275
3360
  method: "GET",
@@ -2330,40 +3415,46 @@
2330
3415
  path: "/v1/organizations/{org_id}/self-host-enrollments/{enrollment_id}/rotate"
2331
3416
  }
2332
3417
  },
2333
- migrations: {
2334
- lintMigration: {
2335
- method: "POST",
2336
- path: "/v1/projects/{project_id}/migrations:lint"
2337
- }
2338
- },
2339
- policies: {
2340
- listPolicyProfiles: {
3418
+ honeytokens: {
3419
+ listHoneytokens: {
2341
3420
  method: "GET",
2342
- path: "/v1/projects/{project_id}/policies"
3421
+ path: "/v1/projects/{project_id}/honeytokens"
2343
3422
  },
2344
- createPolicyProfile: {
3423
+ createHoneytoken: {
2345
3424
  method: "POST",
2346
- path: "/v1/projects/{project_id}/policies"
3425
+ path: "/v1/projects/{project_id}/honeytokens"
2347
3426
  },
2348
- getPolicyProfile: {
3427
+ getHoneytoken: {
2349
3428
  method: "GET",
2350
- path: "/v1/projects/{project_id}/policies/{policy_id}"
3429
+ path: "/v1/projects/{project_id}/honeytokens/{honeytoken_id}"
2351
3430
  },
2352
- updatePolicyProfile: {
3431
+ updateHoneytoken: {
2353
3432
  method: "PUT",
2354
- path: "/v1/projects/{project_id}/policies/{policy_id}"
3433
+ path: "/v1/projects/{project_id}/honeytokens/{honeytoken_id}"
2355
3434
  },
2356
- deletePolicyProfile: {
3435
+ deleteHoneytoken: {
2357
3436
  method: "DELETE",
2358
- path: "/v1/projects/{project_id}/policies/{policy_id}"
2359
- },
2360
- dryEvalPolicy: {
3437
+ path: "/v1/projects/{project_id}/honeytokens/{honeytoken_id}"
3438
+ }
3439
+ },
3440
+ migrations: {
3441
+ lintMigration: {
2361
3442
  method: "POST",
2362
- path: "/v1/projects/{project_id}/policy-evaluations"
3443
+ path: "/v1/projects/{project_id}/migrations:lint"
3444
+ }
3445
+ },
3446
+ schemaAnnotations: {
3447
+ listSchemaAnnotations: {
3448
+ method: "GET",
3449
+ path: "/v1/projects/{project_id}/schema-annotations"
2363
3450
  },
2364
- replayPolicy: {
2365
- method: "POST",
2366
- path: "/v1/projects/{project_id}/policy-replays"
3451
+ putSchemaAnnotation: {
3452
+ method: "PUT",
3453
+ path: "/v1/projects/{project_id}/schema-annotations"
3454
+ },
3455
+ deleteSchemaAnnotation: {
3456
+ method: "DELETE",
3457
+ path: "/v1/projects/{project_id}/schema-annotations"
2367
3458
  }
2368
3459
  },
2369
3460
  support: {
@@ -2457,6 +3548,11 @@ const operationsByPath = {
2457
3548
  path: "/v1/projects/{project_id}/agents/{agent_id}/rotate",
2458
3549
  operationId: "rotateAgentCredential"
2459
3550
  },
3551
+ "POST /v1/projects/{project_id}/agents/{agent_id}/policy-recommendation": {
3552
+ method: "POST",
3553
+ path: "/v1/projects/{project_id}/agents/{agent_id}/policy-recommendation",
3554
+ operationId: "recommendAgentPolicy"
3555
+ },
2460
3556
  "GET /v1/projects/{project_id}/anomalies": {
2461
3557
  method: "GET",
2462
3558
  path: "/v1/projects/{project_id}/anomalies",
@@ -2542,6 +3638,136 @@ const operationsByPath = {
2542
3638
  path: "/v1/projects/{project_id}/databases/{database_id}/cache-rules/{query_hash}",
2543
3639
  operationId: "updateCacheRule"
2544
3640
  },
3641
+ "GET /v1/organizations/{org_id}/crm/companies": {
3642
+ method: "GET",
3643
+ path: "/v1/organizations/{org_id}/crm/companies",
3644
+ operationId: "listCrmCompanies"
3645
+ },
3646
+ "POST /v1/organizations/{org_id}/crm/companies": {
3647
+ method: "POST",
3648
+ path: "/v1/organizations/{org_id}/crm/companies",
3649
+ operationId: "createCrmCompany"
3650
+ },
3651
+ "GET /v1/organizations/{org_id}/crm/companies/{company_id}": {
3652
+ method: "GET",
3653
+ path: "/v1/organizations/{org_id}/crm/companies/{company_id}",
3654
+ operationId: "getCrmCompany"
3655
+ },
3656
+ "PUT /v1/organizations/{org_id}/crm/companies/{company_id}": {
3657
+ method: "PUT",
3658
+ path: "/v1/organizations/{org_id}/crm/companies/{company_id}",
3659
+ operationId: "updateCrmCompany"
3660
+ },
3661
+ "DELETE /v1/organizations/{org_id}/crm/companies/{company_id}": {
3662
+ method: "DELETE",
3663
+ path: "/v1/organizations/{org_id}/crm/companies/{company_id}",
3664
+ operationId: "deleteCrmCompany"
3665
+ },
3666
+ "GET /v1/organizations/{org_id}/crm/contacts": {
3667
+ method: "GET",
3668
+ path: "/v1/organizations/{org_id}/crm/contacts",
3669
+ operationId: "listCrmContacts"
3670
+ },
3671
+ "POST /v1/organizations/{org_id}/crm/contacts": {
3672
+ method: "POST",
3673
+ path: "/v1/organizations/{org_id}/crm/contacts",
3674
+ operationId: "createCrmContact"
3675
+ },
3676
+ "GET /v1/organizations/{org_id}/crm/contacts/{contact_id}": {
3677
+ method: "GET",
3678
+ path: "/v1/organizations/{org_id}/crm/contacts/{contact_id}",
3679
+ operationId: "getCrmContact"
3680
+ },
3681
+ "PUT /v1/organizations/{org_id}/crm/contacts/{contact_id}": {
3682
+ method: "PUT",
3683
+ path: "/v1/organizations/{org_id}/crm/contacts/{contact_id}",
3684
+ operationId: "updateCrmContact"
3685
+ },
3686
+ "DELETE /v1/organizations/{org_id}/crm/contacts/{contact_id}": {
3687
+ method: "DELETE",
3688
+ path: "/v1/organizations/{org_id}/crm/contacts/{contact_id}",
3689
+ operationId: "deleteCrmContact"
3690
+ },
3691
+ "GET /v1/organizations/{org_id}/crm/deals": {
3692
+ method: "GET",
3693
+ path: "/v1/organizations/{org_id}/crm/deals",
3694
+ operationId: "listCrmDeals"
3695
+ },
3696
+ "POST /v1/organizations/{org_id}/crm/deals": {
3697
+ method: "POST",
3698
+ path: "/v1/organizations/{org_id}/crm/deals",
3699
+ operationId: "createCrmDeal"
3700
+ },
3701
+ "GET /v1/organizations/{org_id}/crm/pipeline": {
3702
+ method: "GET",
3703
+ path: "/v1/organizations/{org_id}/crm/pipeline",
3704
+ operationId: "getCrmPipeline"
3705
+ },
3706
+ "GET /v1/organizations/{org_id}/crm/deals/{deal_id}": {
3707
+ method: "GET",
3708
+ path: "/v1/organizations/{org_id}/crm/deals/{deal_id}",
3709
+ operationId: "getCrmDeal"
3710
+ },
3711
+ "PUT /v1/organizations/{org_id}/crm/deals/{deal_id}": {
3712
+ method: "PUT",
3713
+ path: "/v1/organizations/{org_id}/crm/deals/{deal_id}",
3714
+ operationId: "updateCrmDeal"
3715
+ },
3716
+ "DELETE /v1/organizations/{org_id}/crm/deals/{deal_id}": {
3717
+ method: "DELETE",
3718
+ path: "/v1/organizations/{org_id}/crm/deals/{deal_id}",
3719
+ operationId: "deleteCrmDeal"
3720
+ },
3721
+ "GET /v1/organizations/{org_id}/crm/research-tasks": {
3722
+ method: "GET",
3723
+ path: "/v1/organizations/{org_id}/crm/research-tasks",
3724
+ operationId: "listCrmResearchTasks"
3725
+ },
3726
+ "POST /v1/organizations/{org_id}/crm/research-tasks": {
3727
+ method: "POST",
3728
+ path: "/v1/organizations/{org_id}/crm/research-tasks",
3729
+ operationId: "createCrmResearchTask"
3730
+ },
3731
+ "GET /v1/organizations/{org_id}/crm/research-tasks/{task_id}": {
3732
+ method: "GET",
3733
+ path: "/v1/organizations/{org_id}/crm/research-tasks/{task_id}",
3734
+ operationId: "getCrmResearchTask"
3735
+ },
3736
+ "POST /v1/organizations/{org_id}/crm/research-tasks/{task_id}/cancel": {
3737
+ method: "POST",
3738
+ path: "/v1/organizations/{org_id}/crm/research-tasks/{task_id}/cancel",
3739
+ operationId: "cancelCrmResearchTask"
3740
+ },
3741
+ "GET /v1/organizations/{org_id}/crm/context": {
3742
+ method: "GET",
3743
+ path: "/v1/organizations/{org_id}/crm/context",
3744
+ operationId: "getCrmContext"
3745
+ },
3746
+ "PUT /v1/organizations/{org_id}/crm/context": {
3747
+ method: "PUT",
3748
+ path: "/v1/organizations/{org_id}/crm/context",
3749
+ operationId: "updateCrmContext"
3750
+ },
3751
+ "POST /v1/organizations/{org_id}/crm/research-tasks/{task_id}/approve": {
3752
+ method: "POST",
3753
+ path: "/v1/organizations/{org_id}/crm/research-tasks/{task_id}/approve",
3754
+ operationId: "approveCrmResearchTask"
3755
+ },
3756
+ "GET /v1/organizations/{org_id}/crm/artifacts": {
3757
+ method: "GET",
3758
+ path: "/v1/organizations/{org_id}/crm/artifacts",
3759
+ operationId: "listCrmArtifacts"
3760
+ },
3761
+ "GET /v1/organizations/{org_id}/crm/artifacts/{artifact_id}": {
3762
+ method: "GET",
3763
+ path: "/v1/organizations/{org_id}/crm/artifacts/{artifact_id}",
3764
+ operationId: "getCrmArtifact"
3765
+ },
3766
+ "GET /v1/organizations/{org_id}/crm/activities": {
3767
+ method: "GET",
3768
+ path: "/v1/organizations/{org_id}/crm/activities",
3769
+ operationId: "listCrmActivities"
3770
+ },
2545
3771
  "GET /v1/projects/{project_id}/databases": {
2546
3772
  method: "GET",
2547
3773
  path: "/v1/projects/{project_id}/databases",
@@ -2607,6 +3833,31 @@ const operationsByPath = {
2607
3833
  path: "/v1/health",
2608
3834
  operationId: "getHealth"
2609
3835
  },
3836
+ "GET /v1/projects/{project_id}/honeytokens": {
3837
+ method: "GET",
3838
+ path: "/v1/projects/{project_id}/honeytokens",
3839
+ operationId: "listHoneytokens"
3840
+ },
3841
+ "POST /v1/projects/{project_id}/honeytokens": {
3842
+ method: "POST",
3843
+ path: "/v1/projects/{project_id}/honeytokens",
3844
+ operationId: "createHoneytoken"
3845
+ },
3846
+ "GET /v1/projects/{project_id}/honeytokens/{honeytoken_id}": {
3847
+ method: "GET",
3848
+ path: "/v1/projects/{project_id}/honeytokens/{honeytoken_id}",
3849
+ operationId: "getHoneytoken"
3850
+ },
3851
+ "PUT /v1/projects/{project_id}/honeytokens/{honeytoken_id}": {
3852
+ method: "PUT",
3853
+ path: "/v1/projects/{project_id}/honeytokens/{honeytoken_id}",
3854
+ operationId: "updateHoneytoken"
3855
+ },
3856
+ "DELETE /v1/projects/{project_id}/honeytokens/{honeytoken_id}": {
3857
+ method: "DELETE",
3858
+ path: "/v1/projects/{project_id}/honeytokens/{honeytoken_id}",
3859
+ operationId: "deleteHoneytoken"
3860
+ },
2610
3861
  "GET /v1/projects/{project_id}/insights": {
2611
3862
  method: "GET",
2612
3863
  path: "/v1/projects/{project_id}/insights",
@@ -2717,6 +3968,21 @@ const operationsByPath = {
2717
3968
  path: "/v1/databases/{database_id}/replicas/{replica_id}",
2718
3969
  operationId: "deleteReplica"
2719
3970
  },
3971
+ "GET /v1/projects/{project_id}/schema-annotations": {
3972
+ method: "GET",
3973
+ path: "/v1/projects/{project_id}/schema-annotations",
3974
+ operationId: "listSchemaAnnotations"
3975
+ },
3976
+ "PUT /v1/projects/{project_id}/schema-annotations": {
3977
+ method: "PUT",
3978
+ path: "/v1/projects/{project_id}/schema-annotations",
3979
+ operationId: "putSchemaAnnotation"
3980
+ },
3981
+ "DELETE /v1/projects/{project_id}/schema-annotations": {
3982
+ method: "DELETE",
3983
+ path: "/v1/projects/{project_id}/schema-annotations",
3984
+ operationId: "deleteSchemaAnnotation"
3985
+ },
2720
3986
  "GET /v1/organizations/{org_id}/self-host-enrollments": {
2721
3987
  method: "GET",
2722
3988
  path: "/v1/organizations/{org_id}/self-host-enrollments",