From ea403b5bc94dde20905e900ef10853462b942aaa Mon Sep 17 00:00:00 2001 From: Jim Anderson Date: Thu, 30 May 2024 12:50:54 -0500 Subject: [PATCH 1/4] release(go-sdk): v0.4.0 --- config/clients/go/CHANGELOG.md.mustache | 13 +++++++++++++ config/clients/go/config.overrides.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/config/clients/go/CHANGELOG.md.mustache b/config/clients/go/CHANGELOG.md.mustache index c09b64d2..405bbdc4 100644 --- a/config/clients/go/CHANGELOG.md.mustache +++ b/config/clients/go/CHANGELOG.md.mustache @@ -1,5 +1,18 @@ # Changelog +## v0.4.0 + +### [0.4.0](https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/compare/v0.3.7...v0.4.0) (2024-05-30) +- feat!: remove store ID from API config, allow override per-request +- fix: only retry on client credential requests that are 429 or 5x + +BREAKING CHANGE: + +This version removes the `StoreId` from the API client configuration. Instead, the `StoreId` parameter +must now be passed to each of the API methods that require a store ID. + +**If you are using `api_open_fga.go` directly, you will now need to pass the `StoreId` parameter.** + ## v0.3.7 ### [0.3.7](https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/compare/v0.3.6...v0.3.7) (2024-05-08) diff --git a/config/clients/go/config.overrides.json b/config/clients/go/config.overrides.json index 086a3650..18e1d349 100644 --- a/config/clients/go/config.overrides.json +++ b/config/clients/go/config.overrides.json @@ -2,7 +2,7 @@ "sdkId": "go", "gitRepoId": "go-sdk", "packageName": "openfga", - "packageVersion": "0.3.7", + "packageVersion": "0.4.0", "packageDescription": "Go SDK for OpenFGA", "packageDetailedDescription": "This is an autogenerated Go SDK for OpenFGA. It provides a wrapper around the [OpenFGA API definition](https://openfga.dev/api).", "fossaComplianceNoticeId": "41c01c64-f74a-414a-9e39-7aeca87bc47b", From 2748da494718d96abe1c30cfe2afabd86a8ecb92 Mon Sep 17 00:00:00 2001 From: Jim Anderson Date: Thu, 30 May 2024 16:24:38 -0500 Subject: [PATCH 2/4] Add documentation for overriding the store id --- .../go/template/README_calling_api.mustache | 58 ++++++++++++++++--- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/config/clients/go/template/README_calling_api.mustache b/config/clients/go/template/README_calling_api.mustache index c68682c1..0357fbbb 100644 --- a/config/clients/go/template/README_calling_api.mustache +++ b/config/clients/go/template/README_calling_api.mustache @@ -43,10 +43,12 @@ Get information about the current store. [API Documentation]({{apiDocsUrl}}/docs/api#/Stores/GetStore) -> Requires a client initialized with a storeId - ```golang -store, err := fgaClient.GetStore(context.Background()).Execute() +options := ClientGetStoreOptions{ + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", +} +store, err := fgaClient.GetStore(context.Background()).Options(options)Execute() if err != nil { // handle error } @@ -60,10 +62,12 @@ Delete a store. [API Documentation]({{apiDocsUrl}}/docs/api#/Stores/DeleteStore) -> Requires a client initialized with a storeId - ```golang -_, err := fgaClient.DeleteStore(context.Background()).Execute() +options := ClientDeleteStoreOptions{ + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", +} +_, err := fgaClient.DeleteStore(context.Background()).Options(options).Execute() if err != nil { // handle error } @@ -80,6 +84,8 @@ Read all authorization models in the store. options := ClientReadAuthorizationModelsOptions{ PageSize: {{packageName}}.PtrInt32(10), ContinuationToken: {{packageName}}.PtrString("..."), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } data, err := fgaClient.ReadAuthorizationModels(context.Background()).Options(options).Execute() @@ -137,7 +143,11 @@ body := ClientWriteAuthorizationModelRequest{ }, }}, } -data, err := fgaClient.WriteAuthorizationModel(context.Background()).Body(body).Execute() +options := ClientWriteAuthorizationModelOptions{ + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", +} +data, err := fgaClient.WriteAuthorizationModel(context.Background()).Options(options).Body(body).Execute() fmt.Printf("%s", data.AuthorizationModelId) // 01GXSA8YR785C4FYS3C0RTG7B1 ``` @@ -152,6 +162,8 @@ Read a particular authorization model. options := ClientReadAuthorizationModelOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString(modelId), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } data, err := fgaClient.ReadAuthorizationModel(context.Background()).Options(options).Execute() @@ -167,7 +179,13 @@ Reads the latest authorization model (note: this ignores the model id in configu [API Documentation]({{apiDocsUrl}}#/Authorization%20Models/ReadAuthorizationModel) ```golang -data, err := fgaClient.ReadLatestAuthorizationModel(context.Background()).Execute() +options := ClientReadLatestAuthorizationModelOptions{ + // You can rely on the model id set in the configuration or override it for this specific request + AuthorizationModelId: {{packageName}}.PtrString(modelId), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", +} +data, err := fgaClient.ReadLatestAuthorizationModel(context.Background()).Options(options)Execute() // data.AuthorizationModel.Id = "01GXSA8YR785C4FYS3C0RTG7B1" // data.AuthorizationModel.SchemaVersion = "1.1" @@ -191,6 +209,8 @@ body := ClientReadChangesRequest{ options := ClientReadChangesOptions{ PageSize: {{packageName}}.PtrInt32(10), ContinuationToken: {{packageName}}.PtrString("eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ=="), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } data, err := fgaClient.ReadChanges(context.Background()).Body(body).Options(options).Execute() @@ -239,6 +259,8 @@ body := ClientReadRequest{} options := ClientReadOptions{ PageSize: {{packageName}}.PtrInt32(10), ContinuationToken: {{packageName}}.PtrString("eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ=="), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } data, err := fgaClient.Read(context.Background()).Body(requestBody).Options(options).Execute() @@ -277,6 +299,8 @@ body := ClientWriteRequest{ options := ClientWriteOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } data, err := fgaClient.Write(context.Background()).Body(body).Options(options).Execute() ``` @@ -308,6 +332,8 @@ body := ClientWriteRequest{ options := ClientWriteOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", Transaction: &TransactionOptions{ Disable: true, MaxParallelRequests: 5, // Maximum number of requests to issue in parallel @@ -357,6 +383,8 @@ body := ClientCheckRequest{ options := ClientCheckOptions{ AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } data, err := fgaClient.Check(context.Background()).Body(body).Options(options).Execute() @@ -375,6 +403,8 @@ If 429s or 5xxs are encountered, the underlying check will retry up to 15 times options := ClientBatchCheckOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", MaxParallelRequests: {{packageName}}.PtrInt32(5), // Max number of requests to issue in parallel, defaults to 10 } @@ -466,6 +496,8 @@ Expands the relationships in userset tree format. options := ClientExpandOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } body := ClientExpandRequest{ Relation: "viewer", @@ -486,6 +518,8 @@ List the objects of a particular type a user has access to. options := ClientListObjectsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } body := ClientListObjectsRequest{ User: "user:81684243-9356-4421-8fbf-a4f8d36aa31b", @@ -517,6 +551,8 @@ List the relations a user has on an object. options := ClientListRelationsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", // Max number of requests to issue in parallel, defaults to 10 MaxParallelRequests: openfga.PtrInt32(5), } @@ -548,6 +584,8 @@ List the users who have a certain relation to a particular type. options := ClientListRelationsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", // Max number of requests to issue in parallel, defaults to 10 MaxParallelRequests: openfga.PtrInt32(5), } @@ -598,6 +636,8 @@ Read assertions for a particular authorization model. options := ClientReadAssertionsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } data, err := fgaClient.ReadAssertions(context.Background()). Options(options). @@ -614,6 +654,8 @@ Update the assertions for a particular authorization model. options := ClientWriteAssertionsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), + // You can rely on the store id set in the configuration or override it for this specific request + StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", } requestBody := ClientWriteAssertionsRequest{ ClientAssertion{ From 33228e872b8a0c19e840d455853c1f8d0888afa1 Mon Sep 17 00:00:00 2001 From: Jim Anderson Date: Thu, 30 May 2024 16:27:00 -0500 Subject: [PATCH 3/4] update changelog with reference to store ID override docs --- config/clients/go/CHANGELOG.md.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/clients/go/CHANGELOG.md.mustache b/config/clients/go/CHANGELOG.md.mustache index 405bbdc4..f3bd2de5 100644 --- a/config/clients/go/CHANGELOG.md.mustache +++ b/config/clients/go/CHANGELOG.md.mustache @@ -3,7 +3,7 @@ ## v0.4.0 ### [0.4.0](https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/compare/v0.3.7...v0.4.0) (2024-05-30) -- feat!: remove store ID from API config, allow override per-request +- feat!: remove store ID from API config, allow store ID override per-request (see README for additional documentation and examples) - fix: only retry on client credential requests that are 429 or 5x BREAKING CHANGE: From 15b192e314c0b07fe02cb197cd463c4d7032c67b Mon Sep 17 00:00:00 2001 From: Jim Anderson Date: Thu, 30 May 2024 16:55:21 -0500 Subject: [PATCH 4/4] fix store id override docs --- .../go/template/README_calling_api.mustache | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/config/clients/go/template/README_calling_api.mustache b/config/clients/go/template/README_calling_api.mustache index 0357fbbb..4e3007d0 100644 --- a/config/clients/go/template/README_calling_api.mustache +++ b/config/clients/go/template/README_calling_api.mustache @@ -46,7 +46,7 @@ Get information about the current store. ```golang options := ClientGetStoreOptions{ // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } store, err := fgaClient.GetStore(context.Background()).Options(options)Execute() if err != nil { @@ -65,7 +65,7 @@ Delete a store. ```golang options := ClientDeleteStoreOptions{ // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } _, err := fgaClient.DeleteStore(context.Background()).Options(options).Execute() if err != nil { @@ -85,7 +85,7 @@ options := ClientReadAuthorizationModelsOptions{ PageSize: {{packageName}}.PtrInt32(10), ContinuationToken: {{packageName}}.PtrString("..."), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.ReadAuthorizationModels(context.Background()).Options(options).Execute() @@ -145,7 +145,7 @@ body := ClientWriteAuthorizationModelRequest{ } options := ClientWriteAuthorizationModelOptions{ // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.WriteAuthorizationModel(context.Background()).Options(options).Body(body).Execute() @@ -163,7 +163,7 @@ options := ClientReadAuthorizationModelOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString(modelId), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.ReadAuthorizationModel(context.Background()).Options(options).Execute() @@ -183,7 +183,7 @@ options := ClientReadLatestAuthorizationModelOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString(modelId), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.ReadLatestAuthorizationModel(context.Background()).Options(options)Execute() @@ -210,7 +210,7 @@ options := ClientReadChangesOptions{ PageSize: {{packageName}}.PtrInt32(10), ContinuationToken: {{packageName}}.PtrString("eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ=="), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.ReadChanges(context.Background()).Body(body).Options(options).Execute() @@ -260,7 +260,7 @@ options := ClientReadOptions{ PageSize: {{packageName}}.PtrInt32(10), ContinuationToken: {{packageName}}.PtrString("eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ=="), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.Read(context.Background()).Body(requestBody).Options(options).Execute() @@ -300,7 +300,7 @@ options := ClientWriteOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.Write(context.Background()).Body(body).Options(options).Execute() ``` @@ -333,7 +333,7 @@ options := ClientWriteOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), Transaction: &TransactionOptions{ Disable: true, MaxParallelRequests: 5, // Maximum number of requests to issue in parallel @@ -384,7 +384,7 @@ body := ClientCheckRequest{ options := ClientCheckOptions{ AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.Check(context.Background()).Body(body).Options(options).Execute() @@ -404,7 +404,7 @@ options := ClientBatchCheckOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), MaxParallelRequests: {{packageName}}.PtrInt32(5), // Max number of requests to issue in parallel, defaults to 10 } @@ -497,7 +497,7 @@ options := ClientExpandOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } body := ClientExpandRequest{ Relation: "viewer", @@ -519,7 +519,7 @@ options := ClientListObjectsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } body := ClientListObjectsRequest{ User: "user:81684243-9356-4421-8fbf-a4f8d36aa31b", @@ -552,7 +552,7 @@ options := ClientListRelationsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), // Max number of requests to issue in parallel, defaults to 10 MaxParallelRequests: openfga.PtrInt32(5), } @@ -585,7 +585,7 @@ options := ClientListRelationsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), // Max number of requests to issue in parallel, defaults to 10 MaxParallelRequests: openfga.PtrInt32(5), } @@ -637,7 +637,7 @@ options := ClientReadAssertionsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId: {{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } data, err := fgaClient.ReadAssertions(context.Background()). Options(options). @@ -655,7 +655,7 @@ options := ClientWriteAssertionsOptions{ // You can rely on the model id set in the configuration or override it for this specific request AuthorizationModelId: {{packageName}}.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"), // You can rely on the store id set in the configuration or override it for this specific request - StoreId: "01FQH7V8BEG3GPQW93KTRFR8JB", + StoreId:{{packageName}}.PtrString("01FQH7V8BEG3GPQW93KTRFR8JB"), } requestBody := ClientWriteAssertionsRequest{ ClientAssertion{