@airporting/integrations-app 0.4.166 → 0.4.168

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.
@@ -53,6 +53,51 @@ export interface ConnectorConfigResponse {
53
53
  export interface ConnectorDeleteResponse {
54
54
  status: string;
55
55
  }
56
+ export interface ConnectorHistoryEntry {
57
+ /** `created`, `data_updated`, `renamed`, `deleted`, `secrets_revealed`. */
58
+ action: string;
59
+ /** Noms des champs modifiés ou consultés. Jamais les valeurs. */
60
+ changedFields: string[];
61
+ /**
62
+ * Horodatage ISO 8601. Le JSON n'a pas de type date : la valeur part en
63
+ * `Date` côté serveur et arrive en chaîne côté client, autant le dire.
64
+ */
65
+ date: string;
66
+ /**
67
+ * D'où vient l'identité de la ligne. `reveal_token` = prouvée par le jeton de
68
+ * step-up. `from_header` = déclarée par le client dans l'en-tête HTTP `From`,
69
+ * donc sans preuve. L'interface doit distinguer les deux, sinon elle fait
70
+ * confiance à tort.
71
+ *
72
+ * `@ApiProperty` explicite ici parce que le greffon OpenAPI de Nest ne sait
73
+ * pas décrire une union de littéraux : il l'émet en `Object`, et le client
74
+ * généré reçoit alors `object`. Le front devrait le caster, comme il le fait
75
+ * déjà pour `ConnectorSingleResponse.status`. Or c'est précisément le champ
76
+ * qui dit si l'on peut croire la ligne : le typer à l'aveugle serait le
77
+ * meilleur moyen de le manipuler de travers.
78
+ */
79
+ identitySource: ConnectorHistoryEntryIdentitySourceEnum;
80
+ /** Phrase lisible, déjà rédigée côté serveur. */
81
+ sentence: string | null;
82
+ userEmail: string | null;
83
+ }
84
+ /**
85
+ * D'où vient l'identité de la ligne. `reveal_token` = prouvée par le jeton de
86
+ * step-up. `from_header` = déclarée par le client dans l'en-tête HTTP `From`,
87
+ * donc sans preuve. L'interface doit distinguer les deux, sinon elle fait
88
+ * confiance à tort.
89
+ *
90
+ * `@ApiProperty` explicite ici parce que le greffon OpenAPI de Nest ne sait
91
+ * pas décrire une union de littéraux : il l'émet en `Object`, et le client
92
+ * généré reçoit alors `object`. Le front devrait le caster, comme il le fait
93
+ * déjà pour `ConnectorSingleResponse.status`. Or c'est précisément le champ
94
+ * qui dit si l'on peut croire la ligne : le typer à l'aveugle serait le
95
+ * meilleur moyen de le manipuler de travers.
96
+ */
97
+ export type ConnectorHistoryEntryIdentitySourceEnum = 'reveal_token' | 'from_header';
98
+ export interface ConnectorHistoryResponse {
99
+ entries: ConnectorHistoryEntry[];
100
+ }
56
101
  export interface ConnectorItem {
57
102
  id: number;
58
103
  main_connectorlist: {
@@ -160,6 +205,10 @@ export interface GetConnectorConfigV1Params {
160
205
  cid: string;
161
206
  connector: number;
162
207
  }
208
+ export interface GetConnectorHistoryV1Params {
209
+ cid: string;
210
+ connector: number;
211
+ }
163
212
  export interface GetConnectorSingleV1Params {
164
213
  cid: string;
165
214
  connector: number;
@@ -376,6 +425,7 @@ export declare namespace Connectors {
376
425
  * @tags Connectors
377
426
  * @name GetConnectorConfigV1
378
427
  * @request GET:/v1/connectors/{cid}/config/{connector}
428
+ * @secure
379
429
  * @response `200` `ConnectorConfigResponse`
380
430
  */
381
431
  namespace GetConnectorConfigV1 {
@@ -393,6 +443,7 @@ export declare namespace Connectors {
393
443
  * @tags Connectors
394
444
  * @name GetConnectorSingleV1
395
445
  * @request GET:/v1/connectors/{cid}/single/{connector}
446
+ * @secure
396
447
  * @response `200` `ConnectorSingleResponse`
397
448
  */
398
449
  namespace GetConnectorSingleV1 {
@@ -406,12 +457,27 @@ export declare namespace Connectors {
406
457
  type ResponseBody = ConnectorSingleResponse;
407
458
  }
408
459
  /**
409
- * No description
410
- * @tags Connectors
411
- * @name PutConnectorDataV1
412
- * @request PUT:/v1/connectors/{cid}/data/{connector}
413
- * @response `200` `ConnectorSaveDataResponse`
414
- */
460
+ * No description
461
+ * @tags Connectors
462
+ * @name PutConnectorDataV1
463
+ * @summary Enregistrement de la configuration d'un connecteur.
464
+
465
+ **Step-up exigé.** C'est la route qui écrit les clés d'API, donc celle où une
466
+ identité déclarative ne suffit pas : sans preuve, l'historique ne vaudrait
467
+ rien précisément là où il compte. Le front obtient le jeton par la modale de
468
+ mot de passe et le conserve dans une fenêtre de grâce de 4 minutes, plus
469
+ courte que les 5 minutes de vie du jeton pour qu'il soit toujours encore
470
+ valide ici. En cas de refus malgré tout, le front rouvre la modale et rejoue
471
+ la sauvegarde, donc un 401 ne fait pas perdre la saisie.
472
+
473
+ Le renommage et la suppression restent **sans step-up** : leurs mutations
474
+ côté front n'envoient pas le jeton, et poser la garde ici les casserait. Le
475
+ renommage ne touche aucun secret. La suppression mériterait la même
476
+ exigence, ce qui demande d'abord de brancher le jeton sur sa mutation.
477
+ * @request PUT:/v1/connectors/{cid}/data/{connector}
478
+ * @secure
479
+ * @response `200` `ConnectorSaveDataResponse`
480
+ */
415
481
  namespace PutConnectorDataV1 {
416
482
  type RequestParams = {
417
483
  cid: string;
@@ -482,6 +548,33 @@ export declare namespace Connectors {
482
548
  /**
483
549
  * No description
484
550
  * @tags Connectors
551
+ * @name GetConnectorHistoryV1
552
+ * @summary GET /v1/connectors/:cid/:connector/history
553
+
554
+ Historique des actions sur un connecteur : création, modification,
555
+ renommage, suppression, et consultation des identifiants.
556
+
557
+ Chaque entrée porte `identitySource`. Une entrée `reveal_token` a une
558
+ identité vérifiée, une entrée `from_header` a une identité déclarative que
559
+ le client a fournie sans preuve. L'interface doit le montrer, sinon on fait
560
+ confiance à tort.
561
+ * @request GET:/v1/connectors/{cid}/{connector}/history
562
+ * @secure
563
+ * @response `200` `ConnectorHistoryResponse`
564
+ */
565
+ namespace GetConnectorHistoryV1 {
566
+ type RequestParams = {
567
+ cid: string;
568
+ connector: number;
569
+ };
570
+ type RequestQuery = {};
571
+ type RequestBody = never;
572
+ type RequestHeaders = {};
573
+ type ResponseBody = ConnectorHistoryResponse;
574
+ }
575
+ /**
576
+ * No description
577
+ * @tags Connectors
485
578
  * @name GetAuthSecretsV1
486
579
  * @summary GET /v1/connectors/:cid/:connector/auth-secrets
487
580
 
@@ -912,6 +1005,7 @@ export declare class IntegrationsApi<SecurityDataType extends unknown> {
912
1005
  * @tags Connectors
913
1006
  * @name GetConnectorConfigV1
914
1007
  * @request GET:/v1/connectors/{cid}/config/{connector}
1008
+ * @secure
915
1009
  * @response `200` `ConnectorConfigResponse`
916
1010
  */
917
1011
  getConnectorConfigV1: ({ connector, cid, ...query }: GetConnectorConfigV1Params, params?: RequestParams) => Promise<HttpResponse<ConnectorConfigResponse, any>>;
@@ -921,17 +1015,33 @@ export declare class IntegrationsApi<SecurityDataType extends unknown> {
921
1015
  * @tags Connectors
922
1016
  * @name GetConnectorSingleV1
923
1017
  * @request GET:/v1/connectors/{cid}/single/{connector}
1018
+ * @secure
924
1019
  * @response `200` `ConnectorSingleResponse`
925
1020
  */
926
1021
  getConnectorSingleV1: ({ connector, cid, ...query }: GetConnectorSingleV1Params, params?: RequestParams) => Promise<HttpResponse<ConnectorSingleResponse, any>>;
927
1022
  /**
928
- * No description
929
- *
930
- * @tags Connectors
931
- * @name PutConnectorDataV1
932
- * @request PUT:/v1/connectors/{cid}/data/{connector}
933
- * @response `200` `ConnectorSaveDataResponse`
934
- */
1023
+ * No description
1024
+ *
1025
+ * @tags Connectors
1026
+ * @name PutConnectorDataV1
1027
+ * @summary Enregistrement de la configuration d'un connecteur.
1028
+
1029
+ **Step-up exigé.** C'est la route qui écrit les clés d'API, donc celle où une
1030
+ identité déclarative ne suffit pas : sans preuve, l'historique ne vaudrait
1031
+ rien précisément là où il compte. Le front obtient le jeton par la modale de
1032
+ mot de passe et le conserve dans une fenêtre de grâce de 4 minutes, plus
1033
+ courte que les 5 minutes de vie du jeton pour qu'il soit toujours encore
1034
+ valide ici. En cas de refus malgré tout, le front rouvre la modale et rejoue
1035
+ la sauvegarde, donc un 401 ne fait pas perdre la saisie.
1036
+
1037
+ Le renommage et la suppression restent **sans step-up** : leurs mutations
1038
+ côté front n'envoient pas le jeton, et poser la garde ici les casserait. Le
1039
+ renommage ne touche aucun secret. La suppression mériterait la même
1040
+ exigence, ce qui demande d'abord de brancher le jeton sur sa mutation.
1041
+ * @request PUT:/v1/connectors/{cid}/data/{connector}
1042
+ * @secure
1043
+ * @response `200` `ConnectorSaveDataResponse`
1044
+ */
935
1045
  putConnectorDataV1: ({ connector, cid, ...query }: PutConnectorDataV1Params, data: ConnectorSaveDataRequest, params?: RequestParams) => Promise<HttpResponse<ConnectorSaveDataResponse, any>>;
936
1046
  /**
937
1047
  * No description
@@ -970,6 +1080,25 @@ export declare class IntegrationsApi<SecurityDataType extends unknown> {
970
1080
  * No description
971
1081
  *
972
1082
  * @tags Connectors
1083
+ * @name GetConnectorHistoryV1
1084
+ * @summary GET /v1/connectors/:cid/:connector/history
1085
+
1086
+ Historique des actions sur un connecteur : création, modification,
1087
+ renommage, suppression, et consultation des identifiants.
1088
+
1089
+ Chaque entrée porte `identitySource`. Une entrée `reveal_token` a une
1090
+ identité vérifiée, une entrée `from_header` a une identité déclarative que
1091
+ le client a fournie sans preuve. L'interface doit le montrer, sinon on fait
1092
+ confiance à tort.
1093
+ * @request GET:/v1/connectors/{cid}/{connector}/history
1094
+ * @secure
1095
+ * @response `200` `ConnectorHistoryResponse`
1096
+ */
1097
+ getConnectorHistoryV1: ({ connector, cid, ...query }: GetConnectorHistoryV1Params, params?: RequestParams) => Promise<HttpResponse<ConnectorHistoryResponse, any>>;
1098
+ /**
1099
+ * No description
1100
+ *
1101
+ * @tags Connectors
973
1102
  * @name GetAuthSecretsV1
974
1103
  * @summary GET /v1/connectors/:cid/:connector/auth-secrets
975
1104
 
Binary file
@@ -7,4 +7,4 @@
7
7
  *
8
8
  * This source code is licensed under the MIT license found in the
9
9
  * LICENSE file in the root directory of this source tree.
10
- */var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element"),REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");function jsxProd(type,config,maybeKey){var key=null;void 0!==maybeKey&&(key=""+maybeKey);void 0!==config.key&&(key=""+config.key);if("key"in config){maybeKey={};for(var propName in config)"key"!==propName&&(maybeKey[propName]=config[propName])}else maybeKey=config;config=maybeKey.ref;return{$$typeof:REACT_ELEMENT_TYPE,type:type,key:key,ref:void 0!==config?config:null,props:maybeKey}}exports.Fragment=REACT_FRAGMENT_TYPE;exports.jsx=jsxProd;exports.jsxs=jsxProd},4848:function(module,__unused_webpack_exports,__webpack_require__){module.exports=__webpack_require__(9698)},466:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>SingleConnector});var jsx_runtime=__webpack_require__(4848);var index_js_=__webpack_require__(8556);var single_connector_app=__webpack_require__(1250);var dist_index_js_=__webpack_require__(4259);var index_mjs_=__webpack_require__(2773);var esm_index_mjs_=__webpack_require__(4931);var modern_index_js_=__webpack_require__(7714);var dist_esm_index_mjs_=__webpack_require__(4449);var useAppConfigConnectorSingle=__webpack_require__(4613);const theme=(0,index_mjs_.createTheme)((0,dist_esm_index_mjs_.assign)(dist_index_js_.theme,{components:{}}));const cssVarResolver=x=>(0,dist_esm_index_mjs_.assign)(dist_index_js_.cssVarResolver(x),{dark:{},light:{},variables:{}});function ProvidersSingleConnector(props){const[queryClient]=(0,index_js_.useState)(()=>props.tanstack?.queryClient??new modern_index_js_.QueryClient);const{children,config,mantine,tanstack}=props;return/*#__PURE__*/(0,jsx_runtime.jsx)(useAppConfigConnectorSingle.a,{value:config,children:/*#__PURE__*/(0,jsx_runtime.jsx)(modern_index_js_.QueryClientProvider,{client:queryClient,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.MantineProvider,{theme:theme,cssVariablesResolver:cssVarResolver,defaultColorScheme:mantine?.defaultColorScheme,forceColorScheme:mantine?.forceColorScheme,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(esm_index_mjs_.Notifications,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(dist_index_js_.RevealTokenProvider,{children:children})]})})})}function SingleConnector(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_js_.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(ProvidersSingleConnector,{...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(single_connector_app.d,{})})})}},4613:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{C:()=>useAppConfigConnectorSingle,a:()=>AppConfigConnectorSingleProvider});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(8556);const AppConfigCtx=/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);const AppConfigConnectorSingleProvider=AppConfigCtx.Provider;function useAppConfigConnectorSingle(){const config=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(AppConfigCtx);if(!config)throw new Error("Called `useAppConfig` outside a `<AppConfigConnectorSingleProvider />`");return config}}}]);
10
+ */var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element"),REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");function jsxProd(type,config,maybeKey){var key=null;void 0!==maybeKey&&(key=""+maybeKey);void 0!==config.key&&(key=""+config.key);if("key"in config){maybeKey={};for(var propName in config)"key"!==propName&&(maybeKey[propName]=config[propName])}else maybeKey=config;config=maybeKey.ref;return{$$typeof:REACT_ELEMENT_TYPE,type:type,key:key,ref:void 0!==config?config:null,props:maybeKey}}exports.Fragment=REACT_FRAGMENT_TYPE;exports.jsx=jsxProd;exports.jsxs=jsxProd},4848:function(module,__unused_webpack_exports,__webpack_require__){module.exports=__webpack_require__(9698)},466:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>SingleConnector});var jsx_runtime=__webpack_require__(4848);var index_js_=__webpack_require__(8556);var single_connector_app=__webpack_require__(6841);var dist_index_js_=__webpack_require__(4259);var index_mjs_=__webpack_require__(2773);var esm_index_mjs_=__webpack_require__(4931);var modern_index_js_=__webpack_require__(7714);var dist_esm_index_mjs_=__webpack_require__(4449);var useAppConfigConnectorSingle=__webpack_require__(4613);const theme=(0,index_mjs_.createTheme)((0,dist_esm_index_mjs_.assign)(dist_index_js_.theme,{components:{}}));const cssVarResolver=x=>(0,dist_esm_index_mjs_.assign)(dist_index_js_.cssVarResolver(x),{dark:{},light:{},variables:{}});function ProvidersSingleConnector(props){const[queryClient]=(0,index_js_.useState)(()=>props.tanstack?.queryClient??new modern_index_js_.QueryClient);const{children,config,mantine,tanstack}=props;return/*#__PURE__*/(0,jsx_runtime.jsx)(useAppConfigConnectorSingle.a,{value:config,children:/*#__PURE__*/(0,jsx_runtime.jsx)(modern_index_js_.QueryClientProvider,{client:queryClient,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.MantineProvider,{theme:theme,cssVariablesResolver:cssVarResolver,defaultColorScheme:mantine?.defaultColorScheme,forceColorScheme:mantine?.forceColorScheme,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(esm_index_mjs_.Notifications,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(dist_index_js_.RevealTokenProvider,{children:children})]})})})}function SingleConnector(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_js_.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(ProvidersSingleConnector,{...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(single_connector_app.d,{})})})}},4613:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{C:()=>useAppConfigConnectorSingle,a:()=>AppConfigConnectorSingleProvider});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(8556);const AppConfigCtx=/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);const AppConfigConnectorSingleProvider=AppConfigCtx.Provider;function useAppConfigConnectorSingle(){const config=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(AppConfigCtx);if(!config)throw new Error("Called `useAppConfig` outside a `<AppConfigConnectorSingleProvider />`");return config}}}]);