factpulse 4.0.2 → 4.0.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +12 -0
- data/docs/AFNORPDPPAApi.md +9 -2
- data/docs/AsyncTasksApi.md +6 -1
- data/docs/ChorusProApi.md +96 -16
- data/docs/ClientManagementApi.md +359 -13
- data/docs/ConvertResumeRequest.md +5 -1
- data/docs/DownloadsApi.md +12 -2
- data/docs/ElectronicSignatureApi.md +24 -4
- data/docs/FacturXConversionApi.md +101 -4
- data/docs/FacturXGenerationApi.md +18 -3
- data/docs/FacturXPDFXMLVerificationApi.md +18 -3
- data/docs/FacturXValidationApi.md +18 -3
- data/docs/FactureElectroniqueRestApiSchemasValidationValidationErrorResponse.md +18 -0
- data/docs/Flux10EReportingApi.md +36 -6
- data/docs/Flux6InvoiceLifecycleCDARApi.md +18 -3
- data/docs/HealthApi.md +6 -1
- data/docs/KeyRotationRequest.md +20 -0
- data/docs/KeyRotationResponse.md +24 -0
- data/docs/PDPConfigResponse.md +2 -0
- data/docs/PDPConfigUpdateRequest.md +3 -1
- data/docs/SecretStatus.md +5 -1
- data/docs/ValidateCDARResponse.md +2 -2
- data/docs/ValidationErrorResponse.md +8 -2
- data/docs/WebhookSecretDeleteResponse.md +20 -0
- data/docs/WebhookSecretGenerateResponse.md +24 -0
- data/docs/WebhookSecretStatusResponse.md +20 -0
- data/lib/factpulse/api/afnorpdppa_api.rb +4 -1
- data/lib/factpulse/api/async_tasks_api.rb +1 -1
- data/lib/factpulse/api/chorus_pro_api.rb +16 -16
- data/lib/factpulse/api/client_management_api.rb +276 -10
- data/lib/factpulse/api/downloads_api.rb +2 -2
- data/lib/factpulse/api/electronic_signature_api.rb +4 -4
- data/lib/factpulse/api/factur_x_conversion_api.rb +78 -4
- data/lib/factpulse/api/factur_x_generation_api.rb +3 -3
- data/lib/factpulse/api/factur_x_validation_api.rb +3 -3
- data/lib/factpulse/api/factur_xpdfxml_verification_api.rb +3 -3
- data/lib/factpulse/api/flux10_e_reporting_api.rb +6 -6
- data/lib/factpulse/api/flux6_invoice_lifecycle_cdar_api.rb +3 -3
- data/lib/factpulse/api/health_api.rb +1 -1
- data/lib/factpulse/configuration.rb +7 -0
- data/lib/factpulse/models/convert_resume_request.rb +27 -5
- data/lib/factpulse/models/facture_electronique_rest_api_schemas_validation_validation_error_response.rb +168 -0
- data/lib/factpulse/models/key_rotation_request.rb +211 -0
- data/lib/factpulse/models/key_rotation_response.rb +232 -0
- data/lib/factpulse/models/pdp_config_response.rb +11 -1
- data/lib/factpulse/models/pdp_config_update_request.rb +49 -5
- data/lib/factpulse/models/secret_status.rb +24 -4
- data/lib/factpulse/models/validate_cdar_response.rb +2 -2
- data/lib/factpulse/models/validation_error_response.rb +67 -20
- data/lib/factpulse/models/{facture_electronique_rest_api_schemas_cdar_validation_error_response.rb → webhook_secret_delete_response.rb} +25 -47
- data/lib/factpulse/models/webhook_secret_generate_response.rb +247 -0
- data/lib/factpulse/models/webhook_secret_status_response.rb +176 -0
- data/lib/factpulse/version.rb +1 -1
- data/lib/factpulse.rb +6 -1
- metadata +14 -4
- data/docs/FactureElectroniqueRestApiSchemasCdarValidationErrorResponse.md +0 -24
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **
|
|
7
|
+
| **field** | **String** | Champ concerné | |
|
|
8
|
+
| **message** | **String** | Message d'erreur | |
|
|
9
|
+
| **rule** | **String** | | [optional] |
|
|
10
|
+
| **severity** | **String** | Sévérité (error/warning) | [optional][default to 'error'] |
|
|
8
11
|
|
|
9
12
|
## Example
|
|
10
13
|
|
|
@@ -12,7 +15,10 @@
|
|
|
12
15
|
require 'factpulse'
|
|
13
16
|
|
|
14
17
|
instance = FactPulse::ValidationErrorResponse.new(
|
|
15
|
-
|
|
18
|
+
field: null,
|
|
19
|
+
message: null,
|
|
20
|
+
rule: null,
|
|
21
|
+
severity: null
|
|
16
22
|
)
|
|
17
23
|
```
|
|
18
24
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# FactPulse::WebhookSecretDeleteResponse
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **success** | **Boolean** | Whether the secret was deleted successfully | |
|
|
8
|
+
| **message** | **String** | Result message | |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'factpulse'
|
|
14
|
+
|
|
15
|
+
instance = FactPulse::WebhookSecretDeleteResponse.new(
|
|
16
|
+
success: null,
|
|
17
|
+
message: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# FactPulse::WebhookSecretGenerateResponse
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **success** | **Boolean** | Whether the secret was generated successfully | |
|
|
8
|
+
| **webhook_secret** | **String** | The generated webhook secret (save it, it will never be shown again) | |
|
|
9
|
+
| **message** | **String** | Result message | |
|
|
10
|
+
| **created_at** | **Time** | When the secret was created | |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'factpulse'
|
|
16
|
+
|
|
17
|
+
instance = FactPulse::WebhookSecretGenerateResponse.new(
|
|
18
|
+
success: null,
|
|
19
|
+
webhook_secret: null,
|
|
20
|
+
message: null,
|
|
21
|
+
created_at: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# FactPulse::WebhookSecretStatusResponse
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **has_secret** | **Boolean** | Whether a webhook secret is configured | |
|
|
8
|
+
| **created_at** | **Time** | | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'factpulse'
|
|
14
|
+
|
|
15
|
+
instance = FactPulse::WebhookSecretStatusResponse.new(
|
|
16
|
+
has_secret: null,
|
|
17
|
+
created_at: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -24,6 +24,7 @@ module FactPulse
|
|
|
24
24
|
# @param flow_id [String] AFNOR flow ID (UUID format)
|
|
25
25
|
# @param [Hash] opts the optional parameters
|
|
26
26
|
# @option opts [Boolean] :include_document Include base64-encoded document in response (default to false)
|
|
27
|
+
# @option opts [String] :x_encryption_key Client encryption key for double encryption mode. Must be a base64-encoded AES-256 key (32 bytes). Required only when accessing resources encrypted with encryption_mode='double'.
|
|
27
28
|
# @return [IncomingInvoice]
|
|
28
29
|
def get_flux_entrant_api_v1_afnor_incoming_flows_flow_id_get(flow_id, opts = {})
|
|
29
30
|
data, _status_code, _headers = get_flux_entrant_api_v1_afnor_incoming_flows_flow_id_get_with_http_info(flow_id, opts)
|
|
@@ -35,6 +36,7 @@ module FactPulse
|
|
|
35
36
|
# @param flow_id [String] AFNOR flow ID (UUID format)
|
|
36
37
|
# @param [Hash] opts the optional parameters
|
|
37
38
|
# @option opts [Boolean] :include_document Include base64-encoded document in response (default to false)
|
|
39
|
+
# @option opts [String] :x_encryption_key Client encryption key for double encryption mode. Must be a base64-encoded AES-256 key (32 bytes). Required only when accessing resources encrypted with encryption_mode='double'.
|
|
38
40
|
# @return [Array<(IncomingInvoice, Integer, Hash)>] IncomingInvoice data, response status code and response headers
|
|
39
41
|
def get_flux_entrant_api_v1_afnor_incoming_flows_flow_id_get_with_http_info(flow_id, opts = {})
|
|
40
42
|
if @api_client.config.debugging
|
|
@@ -55,6 +57,7 @@ module FactPulse
|
|
|
55
57
|
header_params = opts[:header_params] || {}
|
|
56
58
|
# HTTP header 'Accept' (if needed)
|
|
57
59
|
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
60
|
+
header_params[:'X-Encryption-Key'] = opts[:'x_encryption_key'] if !opts[:'x_encryption_key'].nil?
|
|
58
61
|
|
|
59
62
|
# form parameters
|
|
60
63
|
form_params = opts[:form_params] || {}
|
|
@@ -66,7 +69,7 @@ module FactPulse
|
|
|
66
69
|
return_type = opts[:debug_return_type] || 'IncomingInvoice'
|
|
67
70
|
|
|
68
71
|
# auth_names
|
|
69
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
72
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
70
73
|
|
|
71
74
|
new_options = opts.merge(
|
|
72
75
|
:operation => :"AFNORPDPPAApi.get_flux_entrant_api_v1_afnor_incoming_flows_flow_id_get",
|
|
@@ -63,7 +63,7 @@ module FactPulse
|
|
|
63
63
|
return_type = opts[:debug_return_type] || 'AsyncTaskStatus'
|
|
64
64
|
|
|
65
65
|
# auth_names
|
|
66
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
66
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
67
67
|
|
|
68
68
|
new_options = opts.merge(
|
|
69
69
|
:operation => :"AsyncTasksApi.get_task_status_api_v1_processing_tasks_task_id_status_get",
|
|
@@ -68,7 +68,7 @@ module FactPulse
|
|
|
68
68
|
return_type = opts[:debug_return_type] || 'Object'
|
|
69
69
|
|
|
70
70
|
# auth_names
|
|
71
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
71
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
72
72
|
|
|
73
73
|
new_options = opts.merge(
|
|
74
74
|
:operation => :"ChorusProApi.ajouter_fichier_api_v1_chorus_pro_transverses_ajouter_fichier_post",
|
|
@@ -136,7 +136,7 @@ module FactPulse
|
|
|
136
136
|
return_type = opts[:debug_return_type] || 'Object'
|
|
137
137
|
|
|
138
138
|
# auth_names
|
|
139
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
139
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
140
140
|
|
|
141
141
|
new_options = opts.merge(
|
|
142
142
|
:operation => :"ChorusProApi.completer_facture_api_v1_chorus_pro_factures_completer_post",
|
|
@@ -204,7 +204,7 @@ module FactPulse
|
|
|
204
204
|
return_type = opts[:debug_return_type] || 'GetInvoiceResponse'
|
|
205
205
|
|
|
206
206
|
# auth_names
|
|
207
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
207
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
208
208
|
|
|
209
209
|
new_options = opts.merge(
|
|
210
210
|
:operation => :"ChorusProApi.consulter_facture_api_v1_chorus_pro_factures_consulter_post",
|
|
@@ -272,7 +272,7 @@ module FactPulse
|
|
|
272
272
|
return_type = opts[:debug_return_type] || 'GetStructureResponse'
|
|
273
273
|
|
|
274
274
|
# auth_names
|
|
275
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
275
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
276
276
|
|
|
277
277
|
new_options = opts.merge(
|
|
278
278
|
:operation => :"ChorusProApi.consulter_structure_api_v1_chorus_pro_structures_consulter_post",
|
|
@@ -335,7 +335,7 @@ module FactPulse
|
|
|
335
335
|
return_type = opts[:debug_return_type] || 'SearchServicesResponse'
|
|
336
336
|
|
|
337
337
|
# auth_names
|
|
338
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
338
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
339
339
|
|
|
340
340
|
new_options = opts.merge(
|
|
341
341
|
:operation => :"ChorusProApi.lister_services_structure_api_v1_chorus_pro_structures_id_structure_cpp_services_get",
|
|
@@ -403,7 +403,7 @@ module FactPulse
|
|
|
403
403
|
return_type = opts[:debug_return_type] || 'GetChorusProIdResponse'
|
|
404
404
|
|
|
405
405
|
# auth_names
|
|
406
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
406
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
407
407
|
|
|
408
408
|
new_options = opts.merge(
|
|
409
409
|
:operation => :"ChorusProApi.obtenir_id_chorus_pro_depuis_siret_api_v1_chorus_pro_structures_obtenir_id_depuis_siret_post",
|
|
@@ -471,7 +471,7 @@ module FactPulse
|
|
|
471
471
|
return_type = opts[:debug_return_type] || 'Object'
|
|
472
472
|
|
|
473
473
|
# auth_names
|
|
474
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
474
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
475
475
|
|
|
476
476
|
new_options = opts.merge(
|
|
477
477
|
:operation => :"ChorusProApi.rechercher_factures_destinataire_api_v1_chorus_pro_factures_rechercher_destinataire_post",
|
|
@@ -539,7 +539,7 @@ module FactPulse
|
|
|
539
539
|
return_type = opts[:debug_return_type] || 'Object'
|
|
540
540
|
|
|
541
541
|
# auth_names
|
|
542
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
542
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
543
543
|
|
|
544
544
|
new_options = opts.merge(
|
|
545
545
|
:operation => :"ChorusProApi.rechercher_factures_fournisseur_api_v1_chorus_pro_factures_rechercher_fournisseur_post",
|
|
@@ -607,7 +607,7 @@ module FactPulse
|
|
|
607
607
|
return_type = opts[:debug_return_type] || 'SearchStructureResponse'
|
|
608
608
|
|
|
609
609
|
# auth_names
|
|
610
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
610
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
611
611
|
|
|
612
612
|
new_options = opts.merge(
|
|
613
613
|
:operation => :"ChorusProApi.rechercher_structures_api_v1_chorus_pro_structures_rechercher_post",
|
|
@@ -675,7 +675,7 @@ module FactPulse
|
|
|
675
675
|
return_type = opts[:debug_return_type] || 'Object'
|
|
676
676
|
|
|
677
677
|
# auth_names
|
|
678
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
678
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
679
679
|
|
|
680
680
|
new_options = opts.merge(
|
|
681
681
|
:operation => :"ChorusProApi.recycler_facture_api_v1_chorus_pro_factures_recycler_post",
|
|
@@ -743,7 +743,7 @@ module FactPulse
|
|
|
743
743
|
return_type = opts[:debug_return_type] || 'SubmitInvoiceResponse'
|
|
744
744
|
|
|
745
745
|
# auth_names
|
|
746
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
746
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
747
747
|
|
|
748
748
|
new_options = opts.merge(
|
|
749
749
|
:operation => :"ChorusProApi.soumettre_facture_api_v1_chorus_pro_factures_soumettre_post",
|
|
@@ -811,7 +811,7 @@ module FactPulse
|
|
|
811
811
|
return_type = opts[:debug_return_type] || 'Object'
|
|
812
812
|
|
|
813
813
|
# auth_names
|
|
814
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
814
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
815
815
|
|
|
816
816
|
new_options = opts.merge(
|
|
817
817
|
:operation => :"ChorusProApi.telecharger_groupe_factures_api_v1_chorus_pro_factures_telecharger_groupe_post",
|
|
@@ -879,7 +879,7 @@ module FactPulse
|
|
|
879
879
|
return_type = opts[:debug_return_type] || 'Object'
|
|
880
880
|
|
|
881
881
|
# auth_names
|
|
882
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
882
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
883
883
|
|
|
884
884
|
new_options = opts.merge(
|
|
885
885
|
:operation => :"ChorusProApi.traiter_facture_recue_api_v1_chorus_pro_factures_traiter_facture_recue_post",
|
|
@@ -947,7 +947,7 @@ module FactPulse
|
|
|
947
947
|
return_type = opts[:debug_return_type] || 'Object'
|
|
948
948
|
|
|
949
949
|
# auth_names
|
|
950
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
950
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
951
951
|
|
|
952
952
|
new_options = opts.merge(
|
|
953
953
|
:operation => :"ChorusProApi.valideur_consulter_facture_api_v1_chorus_pro_factures_valideur_consulter_post",
|
|
@@ -1015,7 +1015,7 @@ module FactPulse
|
|
|
1015
1015
|
return_type = opts[:debug_return_type] || 'Object'
|
|
1016
1016
|
|
|
1017
1017
|
# auth_names
|
|
1018
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
1018
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
1019
1019
|
|
|
1020
1020
|
new_options = opts.merge(
|
|
1021
1021
|
:operation => :"ChorusProApi.valideur_rechercher_factures_api_v1_chorus_pro_factures_valideur_rechercher_post",
|
|
@@ -1083,7 +1083,7 @@ module FactPulse
|
|
|
1083
1083
|
return_type = opts[:debug_return_type] || 'Object'
|
|
1084
1084
|
|
|
1085
1085
|
# auth_names
|
|
1086
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
1086
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
1087
1087
|
|
|
1088
1088
|
new_options = opts.merge(
|
|
1089
1089
|
:operation => :"ChorusProApi.valideur_traiter_facture_api_v1_chorus_pro_factures_valideur_traiter_post",
|
|
@@ -63,7 +63,7 @@ module FactPulse
|
|
|
63
63
|
return_type = opts[:debug_return_type] || 'ClientActivateResponse'
|
|
64
64
|
|
|
65
65
|
# auth_names
|
|
66
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
66
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
67
67
|
|
|
68
68
|
new_options = opts.merge(
|
|
69
69
|
:operation => :"ClientManagementApi.activate_client_api_v1_clients_uid_activer_post",
|
|
@@ -131,7 +131,7 @@ module FactPulse
|
|
|
131
131
|
return_type = opts[:debug_return_type] || 'ClientDetail'
|
|
132
132
|
|
|
133
133
|
# auth_names
|
|
134
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
134
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
135
135
|
|
|
136
136
|
new_options = opts.merge(
|
|
137
137
|
:operation => :"ClientManagementApi.create_client_api_v1_clients_post",
|
|
@@ -194,7 +194,7 @@ module FactPulse
|
|
|
194
194
|
return_type = opts[:debug_return_type] || 'ClientActivateResponse'
|
|
195
195
|
|
|
196
196
|
# auth_names
|
|
197
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
197
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
198
198
|
|
|
199
199
|
new_options = opts.merge(
|
|
200
200
|
:operation => :"ClientManagementApi.deactivate_client_api_v1_clients_uid_desactiver_post",
|
|
@@ -213,6 +213,132 @@ module FactPulse
|
|
|
213
213
|
return data, status_code, headers
|
|
214
214
|
end
|
|
215
215
|
|
|
216
|
+
# Delete webhook secret
|
|
217
|
+
# Delete the webhook secret for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **After deletion**: Webhooks for this client will use the global server key for HMAC signature instead of a client-specific key.
|
|
218
|
+
# @param uid [String]
|
|
219
|
+
# @param [Hash] opts the optional parameters
|
|
220
|
+
# @return [WebhookSecretDeleteResponse]
|
|
221
|
+
def delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete(uid, opts = {})
|
|
222
|
+
data, _status_code, _headers = delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete_with_http_info(uid, opts)
|
|
223
|
+
data
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# Delete webhook secret
|
|
227
|
+
# Delete the webhook secret for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **After deletion**: Webhooks for this client will use the global server key for HMAC signature instead of a client-specific key.
|
|
228
|
+
# @param uid [String]
|
|
229
|
+
# @param [Hash] opts the optional parameters
|
|
230
|
+
# @return [Array<(WebhookSecretDeleteResponse, Integer, Hash)>] WebhookSecretDeleteResponse data, response status code and response headers
|
|
231
|
+
def delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete_with_http_info(uid, opts = {})
|
|
232
|
+
if @api_client.config.debugging
|
|
233
|
+
@api_client.config.logger.debug 'Calling API: ClientManagementApi.delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete ...'
|
|
234
|
+
end
|
|
235
|
+
# verify the required parameter 'uid' is set
|
|
236
|
+
if @api_client.config.client_side_validation && uid.nil?
|
|
237
|
+
fail ArgumentError, "Missing the required parameter 'uid' when calling ClientManagementApi.delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete"
|
|
238
|
+
end
|
|
239
|
+
# resource path
|
|
240
|
+
local_var_path = '/api/v1/clients/{uid}/webhook-secret'.sub('{' + 'uid' + '}', CGI.escape(uid.to_s))
|
|
241
|
+
|
|
242
|
+
# query parameters
|
|
243
|
+
query_params = opts[:query_params] || {}
|
|
244
|
+
|
|
245
|
+
# header parameters
|
|
246
|
+
header_params = opts[:header_params] || {}
|
|
247
|
+
# HTTP header 'Accept' (if needed)
|
|
248
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
249
|
+
|
|
250
|
+
# form parameters
|
|
251
|
+
form_params = opts[:form_params] || {}
|
|
252
|
+
|
|
253
|
+
# http body (model)
|
|
254
|
+
post_body = opts[:debug_body]
|
|
255
|
+
|
|
256
|
+
# return_type
|
|
257
|
+
return_type = opts[:debug_return_type] || 'WebhookSecretDeleteResponse'
|
|
258
|
+
|
|
259
|
+
# auth_names
|
|
260
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
261
|
+
|
|
262
|
+
new_options = opts.merge(
|
|
263
|
+
:operation => :"ClientManagementApi.delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete",
|
|
264
|
+
:header_params => header_params,
|
|
265
|
+
:query_params => query_params,
|
|
266
|
+
:form_params => form_params,
|
|
267
|
+
:body => post_body,
|
|
268
|
+
:auth_names => auth_names,
|
|
269
|
+
:return_type => return_type
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
|
|
273
|
+
if @api_client.config.debugging
|
|
274
|
+
@api_client.config.logger.debug "API called: ClientManagementApi#delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
275
|
+
end
|
|
276
|
+
return data, status_code, headers
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
# Generate webhook secret
|
|
280
|
+
# Generate or regenerate the webhook secret for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Important**: Save the returned secret immediately - it will never be shown again. The secret is used to sign webhooks sent by the server (HMAC-SHA256). **If a secret already exists**: It will be replaced by the new one.
|
|
281
|
+
# @param uid [String]
|
|
282
|
+
# @param [Hash] opts the optional parameters
|
|
283
|
+
# @return [WebhookSecretGenerateResponse]
|
|
284
|
+
def generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post(uid, opts = {})
|
|
285
|
+
data, _status_code, _headers = generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post_with_http_info(uid, opts)
|
|
286
|
+
data
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
# Generate webhook secret
|
|
290
|
+
# Generate or regenerate the webhook secret for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Important**: Save the returned secret immediately - it will never be shown again. The secret is used to sign webhooks sent by the server (HMAC-SHA256). **If a secret already exists**: It will be replaced by the new one.
|
|
291
|
+
# @param uid [String]
|
|
292
|
+
# @param [Hash] opts the optional parameters
|
|
293
|
+
# @return [Array<(WebhookSecretGenerateResponse, Integer, Hash)>] WebhookSecretGenerateResponse data, response status code and response headers
|
|
294
|
+
def generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post_with_http_info(uid, opts = {})
|
|
295
|
+
if @api_client.config.debugging
|
|
296
|
+
@api_client.config.logger.debug 'Calling API: ClientManagementApi.generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post ...'
|
|
297
|
+
end
|
|
298
|
+
# verify the required parameter 'uid' is set
|
|
299
|
+
if @api_client.config.client_side_validation && uid.nil?
|
|
300
|
+
fail ArgumentError, "Missing the required parameter 'uid' when calling ClientManagementApi.generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post"
|
|
301
|
+
end
|
|
302
|
+
# resource path
|
|
303
|
+
local_var_path = '/api/v1/clients/{uid}/webhook-secret/generate'.sub('{' + 'uid' + '}', CGI.escape(uid.to_s))
|
|
304
|
+
|
|
305
|
+
# query parameters
|
|
306
|
+
query_params = opts[:query_params] || {}
|
|
307
|
+
|
|
308
|
+
# header parameters
|
|
309
|
+
header_params = opts[:header_params] || {}
|
|
310
|
+
# HTTP header 'Accept' (if needed)
|
|
311
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
312
|
+
|
|
313
|
+
# form parameters
|
|
314
|
+
form_params = opts[:form_params] || {}
|
|
315
|
+
|
|
316
|
+
# http body (model)
|
|
317
|
+
post_body = opts[:debug_body]
|
|
318
|
+
|
|
319
|
+
# return_type
|
|
320
|
+
return_type = opts[:debug_return_type] || 'WebhookSecretGenerateResponse'
|
|
321
|
+
|
|
322
|
+
# auth_names
|
|
323
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
324
|
+
|
|
325
|
+
new_options = opts.merge(
|
|
326
|
+
:operation => :"ClientManagementApi.generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post",
|
|
327
|
+
:header_params => header_params,
|
|
328
|
+
:query_params => query_params,
|
|
329
|
+
:form_params => form_params,
|
|
330
|
+
:body => post_body,
|
|
331
|
+
:auth_names => auth_names,
|
|
332
|
+
:return_type => return_type
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
336
|
+
if @api_client.config.debugging
|
|
337
|
+
@api_client.config.logger.debug "API called: ClientManagementApi#generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
338
|
+
end
|
|
339
|
+
return data, status_code, headers
|
|
340
|
+
end
|
|
341
|
+
|
|
216
342
|
# Get client details
|
|
217
343
|
# Get details of a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Security**: If the JWT contains a client_uid, it must match the {uid} in the URL, otherwise a 403 error is returned.
|
|
218
344
|
# @param uid [String]
|
|
@@ -257,7 +383,7 @@ module FactPulse
|
|
|
257
383
|
return_type = opts[:debug_return_type] || 'ClientDetail'
|
|
258
384
|
|
|
259
385
|
# auth_names
|
|
260
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
386
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
261
387
|
|
|
262
388
|
new_options = opts.merge(
|
|
263
389
|
:operation => :"ClientManagementApi.get_client_api_v1_clients_uid_get",
|
|
@@ -320,7 +446,7 @@ module FactPulse
|
|
|
320
446
|
return_type = opts[:debug_return_type] || 'PDPConfigResponse'
|
|
321
447
|
|
|
322
448
|
# auth_names
|
|
323
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
449
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
324
450
|
|
|
325
451
|
new_options = opts.merge(
|
|
326
452
|
:operation => :"ClientManagementApi.get_pdp_config_api_v1_clients_uid_pdp_config_get",
|
|
@@ -339,6 +465,69 @@ module FactPulse
|
|
|
339
465
|
return data, status_code, headers
|
|
340
466
|
end
|
|
341
467
|
|
|
468
|
+
# Get webhook secret status
|
|
469
|
+
# Check if a webhook secret is configured for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Response**: - `hasSecret`: Whether a webhook secret is configured - `createdAt`: When the secret was created (if exists) **Note**: The secret value is never returned, only its status.
|
|
470
|
+
# @param uid [String]
|
|
471
|
+
# @param [Hash] opts the optional parameters
|
|
472
|
+
# @return [WebhookSecretStatusResponse]
|
|
473
|
+
def get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get(uid, opts = {})
|
|
474
|
+
data, _status_code, _headers = get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get_with_http_info(uid, opts)
|
|
475
|
+
data
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
# Get webhook secret status
|
|
479
|
+
# Check if a webhook secret is configured for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Response**: - `hasSecret`: Whether a webhook secret is configured - `createdAt`: When the secret was created (if exists) **Note**: The secret value is never returned, only its status.
|
|
480
|
+
# @param uid [String]
|
|
481
|
+
# @param [Hash] opts the optional parameters
|
|
482
|
+
# @return [Array<(WebhookSecretStatusResponse, Integer, Hash)>] WebhookSecretStatusResponse data, response status code and response headers
|
|
483
|
+
def get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get_with_http_info(uid, opts = {})
|
|
484
|
+
if @api_client.config.debugging
|
|
485
|
+
@api_client.config.logger.debug 'Calling API: ClientManagementApi.get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get ...'
|
|
486
|
+
end
|
|
487
|
+
# verify the required parameter 'uid' is set
|
|
488
|
+
if @api_client.config.client_side_validation && uid.nil?
|
|
489
|
+
fail ArgumentError, "Missing the required parameter 'uid' when calling ClientManagementApi.get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get"
|
|
490
|
+
end
|
|
491
|
+
# resource path
|
|
492
|
+
local_var_path = '/api/v1/clients/{uid}/webhook-secret/status'.sub('{' + 'uid' + '}', CGI.escape(uid.to_s))
|
|
493
|
+
|
|
494
|
+
# query parameters
|
|
495
|
+
query_params = opts[:query_params] || {}
|
|
496
|
+
|
|
497
|
+
# header parameters
|
|
498
|
+
header_params = opts[:header_params] || {}
|
|
499
|
+
# HTTP header 'Accept' (if needed)
|
|
500
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
501
|
+
|
|
502
|
+
# form parameters
|
|
503
|
+
form_params = opts[:form_params] || {}
|
|
504
|
+
|
|
505
|
+
# http body (model)
|
|
506
|
+
post_body = opts[:debug_body]
|
|
507
|
+
|
|
508
|
+
# return_type
|
|
509
|
+
return_type = opts[:debug_return_type] || 'WebhookSecretStatusResponse'
|
|
510
|
+
|
|
511
|
+
# auth_names
|
|
512
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
513
|
+
|
|
514
|
+
new_options = opts.merge(
|
|
515
|
+
:operation => :"ClientManagementApi.get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get",
|
|
516
|
+
:header_params => header_params,
|
|
517
|
+
:query_params => query_params,
|
|
518
|
+
:form_params => form_params,
|
|
519
|
+
:body => post_body,
|
|
520
|
+
:auth_names => auth_names,
|
|
521
|
+
:return_type => return_type
|
|
522
|
+
)
|
|
523
|
+
|
|
524
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
525
|
+
if @api_client.config.debugging
|
|
526
|
+
@api_client.config.logger.debug "API called: ClientManagementApi#get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
527
|
+
end
|
|
528
|
+
return data, status_code, headers
|
|
529
|
+
end
|
|
530
|
+
|
|
342
531
|
# List clients
|
|
343
532
|
# Paginated list of clients for the account. **Scope**: Account level (JWT without client_uid) **Pagination**: - `page`: Page number (default: 1) - `pageSize`: Page size (default: 20, max: 100)
|
|
344
533
|
# @param [Hash] opts the optional parameters
|
|
@@ -395,7 +584,7 @@ module FactPulse
|
|
|
395
584
|
return_type = opts[:debug_return_type] || 'ClientListResponse'
|
|
396
585
|
|
|
397
586
|
# auth_names
|
|
398
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
587
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
399
588
|
|
|
400
589
|
new_options = opts.merge(
|
|
401
590
|
:operation => :"ClientManagementApi.list_clients_api_v1_clients_get",
|
|
@@ -414,6 +603,80 @@ module FactPulse
|
|
|
414
603
|
return data, status_code, headers
|
|
415
604
|
end
|
|
416
605
|
|
|
606
|
+
# Rotate client encryption key
|
|
607
|
+
# Rotate the client encryption key for all secrets in double encryption mode. **Scope**: Client level (JWT with client_uid that must match {uid}) **What this does**: 1. Decrypts all secrets (PDP, Chorus Pro) using the old key 2. Re-encrypts them using the new key 3. Saves to database **Important notes**: - Both keys must be base64-encoded AES-256 keys (32 bytes each) - The old key becomes invalid immediately after rotation - Only secrets encrypted with `encryptionMode: \"double\"` are affected - If the client has no double-encrypted secrets, returns 404 **Security**: - The old key must be valid (decryption is verified) - If decryption fails, rotation is aborted (atomic operation) - Neither key is logged or stored by the server
|
|
608
|
+
# @param uid [String]
|
|
609
|
+
# @param key_rotation_request [KeyRotationRequest]
|
|
610
|
+
# @param [Hash] opts the optional parameters
|
|
611
|
+
# @return [KeyRotationResponse]
|
|
612
|
+
def rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post(uid, key_rotation_request, opts = {})
|
|
613
|
+
data, _status_code, _headers = rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post_with_http_info(uid, key_rotation_request, opts)
|
|
614
|
+
data
|
|
615
|
+
end
|
|
616
|
+
|
|
617
|
+
# Rotate client encryption key
|
|
618
|
+
# Rotate the client encryption key for all secrets in double encryption mode. **Scope**: Client level (JWT with client_uid that must match {uid}) **What this does**: 1. Decrypts all secrets (PDP, Chorus Pro) using the old key 2. Re-encrypts them using the new key 3. Saves to database **Important notes**: - Both keys must be base64-encoded AES-256 keys (32 bytes each) - The old key becomes invalid immediately after rotation - Only secrets encrypted with `encryptionMode: \"double\"` are affected - If the client has no double-encrypted secrets, returns 404 **Security**: - The old key must be valid (decryption is verified) - If decryption fails, rotation is aborted (atomic operation) - Neither key is logged or stored by the server
|
|
619
|
+
# @param uid [String]
|
|
620
|
+
# @param key_rotation_request [KeyRotationRequest]
|
|
621
|
+
# @param [Hash] opts the optional parameters
|
|
622
|
+
# @return [Array<(KeyRotationResponse, Integer, Hash)>] KeyRotationResponse data, response status code and response headers
|
|
623
|
+
def rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post_with_http_info(uid, key_rotation_request, opts = {})
|
|
624
|
+
if @api_client.config.debugging
|
|
625
|
+
@api_client.config.logger.debug 'Calling API: ClientManagementApi.rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post ...'
|
|
626
|
+
end
|
|
627
|
+
# verify the required parameter 'uid' is set
|
|
628
|
+
if @api_client.config.client_side_validation && uid.nil?
|
|
629
|
+
fail ArgumentError, "Missing the required parameter 'uid' when calling ClientManagementApi.rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post"
|
|
630
|
+
end
|
|
631
|
+
# verify the required parameter 'key_rotation_request' is set
|
|
632
|
+
if @api_client.config.client_side_validation && key_rotation_request.nil?
|
|
633
|
+
fail ArgumentError, "Missing the required parameter 'key_rotation_request' when calling ClientManagementApi.rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post"
|
|
634
|
+
end
|
|
635
|
+
# resource path
|
|
636
|
+
local_var_path = '/api/v1/clients/{uid}/rotate-encryption-key'.sub('{' + 'uid' + '}', CGI.escape(uid.to_s))
|
|
637
|
+
|
|
638
|
+
# query parameters
|
|
639
|
+
query_params = opts[:query_params] || {}
|
|
640
|
+
|
|
641
|
+
# header parameters
|
|
642
|
+
header_params = opts[:header_params] || {}
|
|
643
|
+
# HTTP header 'Accept' (if needed)
|
|
644
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
645
|
+
# HTTP header 'Content-Type'
|
|
646
|
+
content_type = @api_client.select_header_content_type(['application/json'])
|
|
647
|
+
if !content_type.nil?
|
|
648
|
+
header_params['Content-Type'] = content_type
|
|
649
|
+
end
|
|
650
|
+
|
|
651
|
+
# form parameters
|
|
652
|
+
form_params = opts[:form_params] || {}
|
|
653
|
+
|
|
654
|
+
# http body (model)
|
|
655
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(key_rotation_request)
|
|
656
|
+
|
|
657
|
+
# return_type
|
|
658
|
+
return_type = opts[:debug_return_type] || 'KeyRotationResponse'
|
|
659
|
+
|
|
660
|
+
# auth_names
|
|
661
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
662
|
+
|
|
663
|
+
new_options = opts.merge(
|
|
664
|
+
:operation => :"ClientManagementApi.rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post",
|
|
665
|
+
:header_params => header_params,
|
|
666
|
+
:query_params => query_params,
|
|
667
|
+
:form_params => form_params,
|
|
668
|
+
:body => post_body,
|
|
669
|
+
:auth_names => auth_names,
|
|
670
|
+
:return_type => return_type
|
|
671
|
+
)
|
|
672
|
+
|
|
673
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
674
|
+
if @api_client.config.debugging
|
|
675
|
+
@api_client.config.logger.debug "API called: ClientManagementApi#rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
676
|
+
end
|
|
677
|
+
return data, status_code, headers
|
|
678
|
+
end
|
|
679
|
+
|
|
417
680
|
# Update a client
|
|
418
681
|
# Update client information (partial update). **Scope**: Client level (JWT with client_uid that must match {uid}) **Updatable fields**: - `name`: Client name - `description`: Description - `siret`: SIRET (14 digits) Only provided fields are updated.
|
|
419
682
|
# @param uid [String]
|
|
@@ -469,7 +732,7 @@ module FactPulse
|
|
|
469
732
|
return_type = opts[:debug_return_type] || 'ClientDetail'
|
|
470
733
|
|
|
471
734
|
# auth_names
|
|
472
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
735
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
473
736
|
|
|
474
737
|
new_options = opts.merge(
|
|
475
738
|
:operation => :"ClientManagementApi.update_client_api_v1_clients_uid_patch",
|
|
@@ -489,10 +752,11 @@ module FactPulse
|
|
|
489
752
|
end
|
|
490
753
|
|
|
491
754
|
# Configure client PDP
|
|
492
|
-
# Configure or update the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Required fields**: - `flowServiceUrl`: PDP Flow Service URL - `tokenUrl`: PDP OAuth token URL - `oauthClientId`: OAuth Client ID - `clientSecret`: OAuth Client Secret (sent but NEVER returned) **Optional fields**: - `isActive`: Enable/disable the config (default: true) - `modeSandbox`: Sandbox mode (default: false) **Security**: The `clientSecret` is stored encrypted on Django side and is never returned in API responses.
|
|
755
|
+
# Configure or update the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Required fields**: - `flowServiceUrl`: PDP Flow Service URL - `tokenUrl`: PDP OAuth token URL - `oauthClientId`: OAuth Client ID - `clientSecret`: OAuth Client Secret (sent but NEVER returned) **Optional fields**: - `isActive`: Enable/disable the config (default: true) - `modeSandbox`: Sandbox mode (default: false) - `encryptionMode`: Encryption mode (default: \"fernet\") - \"fernet\": Server-side encryption only - \"double\": Client AES-256-GCM + Server Fernet (requires X-Encryption-Key header) **Double Encryption Mode**: When `encryptionMode` is set to \"double\", you MUST also provide the `X-Encryption-Key` header containing a base64-encoded AES-256 key (32 bytes). This key is used to encrypt the `clientSecret` on the client side before the server encrypts it again with Fernet. The server cannot decrypt the secret without the client key. **Security**: The `clientSecret` is stored encrypted on Django side and is never returned in API responses.
|
|
493
756
|
# @param uid [String]
|
|
494
757
|
# @param pdp_config_update_request [PDPConfigUpdateRequest]
|
|
495
758
|
# @param [Hash] opts the optional parameters
|
|
759
|
+
# @option opts [String] :x_encryption_key Client encryption key for double encryption mode. Must be a base64-encoded AES-256 key (32 bytes). Required only when accessing resources encrypted with encryption_mode='double'.
|
|
496
760
|
# @return [PDPConfigResponse]
|
|
497
761
|
def update_pdp_config_api_v1_clients_uid_pdp_config_put(uid, pdp_config_update_request, opts = {})
|
|
498
762
|
data, _status_code, _headers = update_pdp_config_api_v1_clients_uid_pdp_config_put_with_http_info(uid, pdp_config_update_request, opts)
|
|
@@ -500,10 +764,11 @@ module FactPulse
|
|
|
500
764
|
end
|
|
501
765
|
|
|
502
766
|
# Configure client PDP
|
|
503
|
-
# Configure or update the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Required fields**: - `flowServiceUrl`: PDP Flow Service URL - `tokenUrl`: PDP OAuth token URL - `oauthClientId`: OAuth Client ID - `clientSecret`: OAuth Client Secret (sent but NEVER returned) **Optional fields**: - `isActive`: Enable/disable the config (default: true) - `modeSandbox`: Sandbox mode (default: false) **Security**: The `clientSecret` is stored encrypted on Django side and is never returned in API responses.
|
|
767
|
+
# Configure or update the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Required fields**: - `flowServiceUrl`: PDP Flow Service URL - `tokenUrl`: PDP OAuth token URL - `oauthClientId`: OAuth Client ID - `clientSecret`: OAuth Client Secret (sent but NEVER returned) **Optional fields**: - `isActive`: Enable/disable the config (default: true) - `modeSandbox`: Sandbox mode (default: false) - `encryptionMode`: Encryption mode (default: \"fernet\") - \"fernet\": Server-side encryption only - \"double\": Client AES-256-GCM + Server Fernet (requires X-Encryption-Key header) **Double Encryption Mode**: When `encryptionMode` is set to \"double\", you MUST also provide the `X-Encryption-Key` header containing a base64-encoded AES-256 key (32 bytes). This key is used to encrypt the `clientSecret` on the client side before the server encrypts it again with Fernet. The server cannot decrypt the secret without the client key. **Security**: The `clientSecret` is stored encrypted on Django side and is never returned in API responses.
|
|
504
768
|
# @param uid [String]
|
|
505
769
|
# @param pdp_config_update_request [PDPConfigUpdateRequest]
|
|
506
770
|
# @param [Hash] opts the optional parameters
|
|
771
|
+
# @option opts [String] :x_encryption_key Client encryption key for double encryption mode. Must be a base64-encoded AES-256 key (32 bytes). Required only when accessing resources encrypted with encryption_mode='double'.
|
|
507
772
|
# @return [Array<(PDPConfigResponse, Integer, Hash)>] PDPConfigResponse data, response status code and response headers
|
|
508
773
|
def update_pdp_config_api_v1_clients_uid_pdp_config_put_with_http_info(uid, pdp_config_update_request, opts = {})
|
|
509
774
|
if @api_client.config.debugging
|
|
@@ -532,6 +797,7 @@ module FactPulse
|
|
|
532
797
|
if !content_type.nil?
|
|
533
798
|
header_params['Content-Type'] = content_type
|
|
534
799
|
end
|
|
800
|
+
header_params[:'X-Encryption-Key'] = opts[:'x_encryption_key'] if !opts[:'x_encryption_key'].nil?
|
|
535
801
|
|
|
536
802
|
# form parameters
|
|
537
803
|
form_params = opts[:form_params] || {}
|
|
@@ -543,7 +809,7 @@ module FactPulse
|
|
|
543
809
|
return_type = opts[:debug_return_type] || 'PDPConfigResponse'
|
|
544
810
|
|
|
545
811
|
# auth_names
|
|
546
|
-
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
812
|
+
auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
|
|
547
813
|
|
|
548
814
|
new_options = opts.merge(
|
|
549
815
|
:operation => :"ClientManagementApi.update_pdp_config_api_v1_clients_uid_pdp_config_put",
|