github.com/openfga/go-sdk@v0.3.5/client/client.go (about) 1 /** 2 * Go SDK for OpenFGA 3 * 4 * API version: 0.1 5 * Website: https://openfga.dev 6 * Documentation: https://openfga.dev/docs 7 * Support: https://discord.gg/8naAwJfWN6 8 * License: [Apache-2.0](https://github.com/openfga/go-sdk/blob/main/LICENSE) 9 * 10 * NOTE: This file was auto generated by OpenAPI Generator (https://openapi-generator.tech). DO NOT EDIT. 11 */ 12 13 package client 14 15 import ( 16 _context "context" 17 "encoding/json" 18 "fmt" 19 "math" 20 _nethttp "net/http" 21 22 fgaSdk "github.com/openfga/go-sdk" 23 "github.com/openfga/go-sdk/credentials" 24 internalutils "github.com/openfga/go-sdk/internal/utils" 25 "golang.org/x/sync/errgroup" 26 ) 27 28 var ( 29 _ _context.Context 30 // Ensure the SdkClient fits OpenFgaClient interface 31 _ SdkClient = (*OpenFgaClient)(nil) 32 ) 33 34 var DEFAULT_MAX_METHOD_PARALLEL_REQS = int32(10) 35 36 type ClientConfiguration struct { 37 fgaSdk.Configuration 38 // ApiScheme - defines the scheme for the API: http or https 39 // Deprecated: use ApiUrl instead of ApiScheme and ApiHost 40 ApiScheme string `json:"api_scheme"` 41 // ApiHost - defines the host for the API without the scheme e.g. (api.fga.example) 42 // Deprecated: use ApiUrl instead of ApiScheme and ApiHost 43 ApiHost string `json:"api_host"` 44 ApiUrl string `json:"api_url"` 45 StoreId string `json:"store_id"` 46 AuthorizationModelId string `json:"authorization_model_id"` 47 Credentials *credentials.Credentials `json:"credentials"` 48 DefaultHeaders map[string]string `json:"default_headers"` 49 UserAgent string `json:"user_agent"` 50 Debug bool `json:"debug"` 51 HTTPClient *_nethttp.Client 52 RetryParams *fgaSdk.RetryParams 53 } 54 55 func newClientConfiguration(cfg *fgaSdk.Configuration) ClientConfiguration { 56 return ClientConfiguration{ 57 ApiScheme: cfg.ApiScheme, 58 ApiHost: cfg.ApiHost, 59 ApiUrl: cfg.ApiUrl, 60 StoreId: cfg.StoreId, 61 Credentials: cfg.Credentials, 62 DefaultHeaders: cfg.DefaultHeaders, 63 UserAgent: cfg.UserAgent, 64 Debug: cfg.Debug, 65 RetryParams: cfg.RetryParams, 66 } 67 } 68 69 type OpenFgaClient struct { 70 config ClientConfiguration 71 SdkClient 72 fgaSdk.APIClient 73 } 74 75 func NewSdkClient(cfg *ClientConfiguration) (*OpenFgaClient, error) { 76 apiConfiguration, err := fgaSdk.NewConfiguration(fgaSdk.Configuration{ 77 ApiScheme: cfg.ApiScheme, 78 ApiHost: cfg.ApiHost, 79 ApiUrl: cfg.ApiUrl, 80 StoreId: cfg.StoreId, 81 Credentials: cfg.Credentials, 82 DefaultHeaders: cfg.DefaultHeaders, 83 UserAgent: cfg.UserAgent, 84 Debug: cfg.Debug, 85 RetryParams: cfg.RetryParams, 86 }) 87 88 if err != nil { 89 return nil, err 90 } 91 92 clientConfig := newClientConfiguration(apiConfiguration) 93 clientConfig.AuthorizationModelId = cfg.AuthorizationModelId 94 95 // store id is already validate as part of configuration validation 96 97 if cfg.AuthorizationModelId != "" && !internalutils.IsWellFormedUlidString(cfg.AuthorizationModelId) { 98 return nil, FgaInvalidError{param: "AuthorizationModelId", description: "ULID"} 99 } 100 101 apiClient := fgaSdk.NewAPIClient(apiConfiguration) 102 103 return &OpenFgaClient{ 104 config: clientConfig, 105 APIClient: *apiClient, 106 }, nil 107 } 108 109 type ClientRequestOptions struct { 110 MaxRetry *int `json:"max_retry,omitempty"` 111 MinWaitInMs *int `json:"min_wait_in_ms,omitempty"` 112 } 113 114 type AuthorizationModelIdOptions struct { 115 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 116 } 117 118 type ClientRequestOptionsWithAuthZModelId struct { 119 ClientRequestOptions 120 AuthorizationModelIdOptions 121 } 122 123 type ClientTupleKey = fgaSdk.TupleKey 124 type ClientTupleKeyWithoutCondition = fgaSdk.TupleKeyWithoutCondition 125 type ClientCheckRequestTupleKey = fgaSdk.CheckRequestTupleKey 126 type ClientReadRequestTupleKey = fgaSdk.ReadRequestTupleKey 127 type ClientExpandRequestTupleKey = fgaSdk.ExpandRequestTupleKey 128 type ClientContextualTupleKey = ClientTupleKey 129 130 type ClientPaginationOptions struct { 131 PageSize *int32 `json:"page_size,omitempty"` 132 ContinuationToken *string `json:"continuation_token,omitempty"` 133 } 134 135 func getPageSizeFromRequest(options *ClientPaginationOptions) *int32 { 136 if options == nil { 137 return nil 138 } 139 return options.PageSize 140 } 141 func getContinuationTokenFromRequest(options *ClientPaginationOptions) *string { 142 if options == nil { 143 return nil 144 } 145 return options.ContinuationToken 146 } 147 148 type SdkClient interface { 149 /* Stores */ 150 151 /* 152 * ListStores Get a paginated list of stores. 153 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 154 * @return SdkClientListStoresRequestInterface 155 */ 156 ListStores(ctx _context.Context) SdkClientListStoresRequestInterface 157 158 /* 159 * ListStoresExecute executes the ListStores request 160 * @return *ClientListStoresResponse 161 */ 162 ListStoresExecute(request SdkClientListStoresRequestInterface) (*ClientListStoresResponse, error) 163 164 /* 165 * CreateStore Create and initialize a store 166 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 167 * @return SdkClientCreateStoreRequestInterface 168 */ 169 CreateStore(ctx _context.Context) SdkClientCreateStoreRequestInterface 170 171 /* 172 * CreateStoreExecute executes the CreateStore request 173 * @return *ClientCreateStoreResponse 174 */ 175 CreateStoreExecute(request SdkClientCreateStoreRequestInterface) (*ClientCreateStoreResponse, error) 176 177 /* 178 * GetStore Get information about the current store. 179 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 180 * @return SdkClientGetStoreRequestInterface 181 */ 182 GetStore(ctx _context.Context) SdkClientGetStoreRequestInterface 183 184 /* 185 * GetStoreExecute executes the GetStore request 186 * @return *ClientGetStoreResponse 187 */ 188 GetStoreExecute(request SdkClientGetStoreRequestInterface) (*ClientGetStoreResponse, error) 189 190 /* 191 * DeleteStore Delete a store. 192 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 193 * @return SdkClientDeleteStoreRequestInterface 194 */ 195 DeleteStore(ctx _context.Context) SdkClientDeleteStoreRequestInterface 196 197 /* 198 * DeleteStoreExecute executes the DeleteStore request 199 * @return *ClientDeleteStoreResponse 200 */ 201 DeleteStoreExecute(request SdkClientDeleteStoreRequestInterface) (*ClientDeleteStoreResponse, error) 202 203 /* Authorization Models */ 204 205 /* 206 * ReadAuthorizationModels Read all authorization models in the store. 207 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 208 * @return SdkClientReadAuthorizationModelsRequest 209 */ 210 ReadAuthorizationModels(ctx _context.Context) SdkClientReadAuthorizationModelsRequestInterface 211 212 /* 213 * ReadAuthorizationModelsExecute executes the ReadAuthorizationModels request 214 * @return *ClientReadAuthorizationModelsResponse 215 */ 216 ReadAuthorizationModelsExecute(request SdkClientReadAuthorizationModelsRequestInterface) (*ClientReadAuthorizationModelsResponse, error) 217 218 /* 219 * WriteAuthorizationModel Create a new authorization model. 220 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 221 * @return SdkClientWriteAuthorizationModelRequest 222 */ 223 WriteAuthorizationModel(ctx _context.Context) SdkClientWriteAuthorizationModelRequestInterface 224 225 /* 226 * WriteAuthorizationModelExecute executes the WriteAuthorizationModel request 227 * @return *ClientWriteAuthorizationModelResponse 228 */ 229 WriteAuthorizationModelExecute(request SdkClientWriteAuthorizationModelRequestInterface) (*ClientWriteAuthorizationModelResponse, error) 230 231 /* 232 * ReadAuthorizationModel Read a particular authorization model. 233 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 234 * @return SdkClientReadAuthorizationModelRequestInterface 235 */ 236 ReadAuthorizationModel(ctx _context.Context) SdkClientReadAuthorizationModelRequestInterface 237 238 /* 239 * ReadAuthorizationModelExecute executes the ReadAuthorizationModel request 240 * @return *ClientReadAuthorizationModelResponse 241 */ 242 ReadAuthorizationModelExecute(request SdkClientReadAuthorizationModelRequestInterface) (*ClientReadAuthorizationModelResponse, error) 243 244 /* 245 * ReadLatestAuthorizationModel Reads the latest authorization model (note: this ignores the model id in configuration). 246 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 247 * @return SdkClientReadLatestAuthorizationModelRequestInterface 248 */ 249 ReadLatestAuthorizationModel(ctx _context.Context) SdkClientReadLatestAuthorizationModelRequestInterface 250 251 /* 252 * ReadLatestAuthorizationModelExecute executes the ReadLatestAuthorizationModel request 253 * @return *ClientReadAuthorizationModelResponse 254 */ 255 ReadLatestAuthorizationModelExecute(request SdkClientReadLatestAuthorizationModelRequestInterface) (*ClientReadAuthorizationModelResponse, error) 256 257 /* Relationship Tuples */ 258 259 /* 260 * ReadChanges Reads the list of historical relationship tuple writes and deletes. 261 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 262 * @return SdkClientReadChangesRequestInterface 263 */ 264 ReadChanges(ctx _context.Context) SdkClientReadChangesRequestInterface 265 266 /* 267 * ReadChangesExecute executes the ReadChanges request 268 * @return *ClientReadChangesResponse 269 */ 270 ReadChangesExecute(request SdkClientReadChangesRequestInterface) (*ClientReadChangesResponse, error) 271 272 /* 273 * Read Reads the relationship tuples stored in the database. It does not evaluate nor exclude invalid tuples according to the authorization model. 274 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 275 * @return SdkClientReadRequestInterface 276 */ 277 Read(ctx _context.Context) SdkClientReadRequestInterface 278 279 /* 280 * ReadExecute executes the Read request 281 * @return *ClientReadResponse 282 */ 283 ReadExecute(request SdkClientReadRequestInterface) (*ClientReadResponse, error) 284 285 /* 286 * Write Create and/or delete relationship tuples to update the system state. 287 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 288 * @return SdkClientWriteRequestInterface 289 */ 290 Write(ctx _context.Context) SdkClientWriteRequestInterface 291 292 /* 293 * WriteExecute executes the Write request 294 * @return *ClientWriteResponse 295 */ 296 WriteExecute(request SdkClientWriteRequestInterface) (*ClientWriteResponse, error) 297 298 /* 299 * WriteTuples Utility method around Write 300 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 301 * @return SdkClientWriteTuplesRequestInterface 302 */ 303 WriteTuples(ctx _context.Context) SdkClientWriteTuplesRequestInterface 304 305 /* 306 * WriteTuplesExecute executes the WriteTuples request 307 * @return *ClientWriteResponse 308 */ 309 WriteTuplesExecute(request SdkClientWriteTuplesRequestInterface) (*ClientWriteResponse, error) 310 311 /* 312 * DeleteTuples Utility method around Write 313 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 314 * @return SdkClientDeleteTuplesRequestInterface 315 */ 316 DeleteTuples(ctx _context.Context) SdkClientDeleteTuplesRequestInterface 317 318 /* 319 * DeleteTuplesExecute executes the DeleteTuples request 320 * @return *ClientWriteResponse 321 */ 322 DeleteTuplesExecute(request SdkClientDeleteTuplesRequestInterface) (*ClientWriteResponse, error) 323 324 /* Relationship Queries */ 325 326 /* 327 * Check Check if a user has a particular relation with an object. 328 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 329 * @return SdkClientCheckRequestInterface 330 */ 331 Check(ctx _context.Context) SdkClientCheckRequestInterface 332 333 /* 334 * CheckExecute executes the Check request 335 * @return *ClientCheckResponse 336 */ 337 CheckExecute(request SdkClientCheckRequestInterface) (*ClientCheckResponse, error) 338 339 /* 340 * BatchCheck Run a set of [checks](#check). Batch Check will return `allowed: false` if it encounters an error, and will return the error in the body. 341 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 342 * @return SdkClientBatchCheckRequestInterface 343 */ 344 BatchCheck(ctx _context.Context) SdkClientBatchCheckRequestInterface 345 346 /* 347 * BatchCheckExecute executes the BatchCheck request 348 * @return *ClientBatchCheckResponse 349 */ 350 BatchCheckExecute(request SdkClientBatchCheckRequestInterface) (*ClientBatchCheckResponse, error) 351 352 /* 353 * Expand Expands the relationships in userset tree format. 354 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 355 * @return SdkClientExpandRequestInterface 356 */ 357 Expand(ctx _context.Context) SdkClientExpandRequestInterface 358 359 /* 360 * ExpandExecute executes the Expand request 361 * @return *ClientExpandResponse 362 */ 363 ExpandExecute(request SdkClientExpandRequestInterface) (*ClientExpandResponse, error) 364 365 /* 366 * ListObjects List the objects of a particular type a user has access to. 367 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 368 * @return SdkClientListObjectsRequestInterface 369 */ 370 ListObjects(ctx _context.Context) SdkClientListObjectsRequestInterface 371 372 /* 373 * ListObjectsExecute executes the ListObjects request 374 * @return *ClientListObjectsResponse 375 */ 376 ListObjectsExecute(request SdkClientListObjectsRequestInterface) (*ClientListObjectsResponse, error) 377 378 /* 379 * ListRelations List the relations a user has on an object. 380 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 381 * @return SdkClientListRelationsRequestInterface 382 */ 383 ListRelations(ctx _context.Context) SdkClientListRelationsRequestInterface 384 385 /* 386 * ListRelationsExecute executes the ListRelations request 387 * @return *ClientListRelationsResponse 388 */ 389 ListRelationsExecute(request SdkClientListRelationsRequestInterface) (*ClientListRelationsResponse, error) 390 391 /* Assertions */ 392 393 /* 394 * ReadAssertions Read assertions for a particular authorization model. 395 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 396 * @return SdkClientReadAssertionsRequestInterface 397 */ 398 ReadAssertions(ctx _context.Context) SdkClientReadAssertionsRequestInterface 399 400 /* 401 * ReadAssertionsExecute executes the ReadAssertions request 402 * @return *ClientReadAssertionsResponse 403 */ 404 ReadAssertionsExecute(request SdkClientReadAssertionsRequestInterface) (*ClientReadAssertionsResponse, error) 405 406 /* 407 * WriteAssertions Update the assertions for a particular authorization model. 408 * @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). 409 * @return SdkClientWriteAssertionsRequestInterface 410 */ 411 WriteAssertions(ctx _context.Context) SdkClientWriteAssertionsRequestInterface 412 413 /* 414 * WriteAssertionsExecute executes the WriteAssertions request 415 * @return *ClientWriteAssertionsResponse 416 */ 417 WriteAssertionsExecute(request SdkClientWriteAssertionsRequestInterface) (*ClientWriteAssertionsResponse, error) 418 } 419 420 func (client *OpenFgaClient) SetAuthorizationModelId(authorizationModelId string) error { 421 if authorizationModelId != "" && !internalutils.IsWellFormedUlidString(authorizationModelId) { 422 return FgaInvalidError{param: "AuthorizationModelId", description: "ULID"} 423 } 424 425 client.config.AuthorizationModelId = authorizationModelId 426 427 return nil 428 } 429 430 func (client *OpenFgaClient) GetAuthorizationModelId() (string, error) { 431 modelId := client.config.AuthorizationModelId 432 if modelId != "" && !internalutils.IsWellFormedUlidString(modelId) { 433 return "", FgaInvalidError{param: "AuthorizationModelId", description: "ULID"} 434 } 435 436 return modelId, nil 437 } 438 439 func (client *OpenFgaClient) getAuthorizationModelId(authorizationModelId *string) (*string, error) { 440 modelId := client.config.AuthorizationModelId 441 if authorizationModelId != nil && *authorizationModelId != "" { 442 modelId = *authorizationModelId 443 } 444 445 if modelId != "" && !internalutils.IsWellFormedUlidString(modelId) { 446 return nil, FgaInvalidError{param: "AuthorizationModelId", description: "ULID"} 447 } 448 return &modelId, nil 449 } 450 451 // helper function to validate the connection (i.e., get token) 452 func (client *OpenFgaClient) checkValidApiConnection(ctx _context.Context, authorizationModelId *string) error { 453 if authorizationModelId != nil && *authorizationModelId != "" { 454 _, _, err := client.OpenFgaApi.ReadAuthorizationModel(ctx, *authorizationModelId).Execute() 455 return err 456 } else { 457 _, err := client.ReadAuthorizationModels(ctx).Options(ClientReadAuthorizationModelsOptions{ 458 PageSize: fgaSdk.PtrInt32(1), 459 }).Execute() 460 return err 461 } 462 } 463 464 /* Stores */ 465 466 // / ListStores 467 type SdkClientListStoresRequest struct { 468 ctx _context.Context 469 Client *OpenFgaClient 470 471 options *ClientListStoresOptions 472 } 473 474 type SdkClientListStoresRequestInterface interface { 475 Options(options ClientListStoresOptions) SdkClientListStoresRequestInterface 476 Execute() (*ClientListStoresResponse, error) 477 GetContext() _context.Context 478 GetOptions() *ClientListStoresOptions 479 } 480 481 type ClientListStoresOptions struct { 482 PageSize *int32 `json:"page_size,omitempty"` 483 ContinuationToken *string `json:"continuation_token,omitempty"` 484 } 485 486 type ClientListStoresResponse = fgaSdk.ListStoresResponse 487 488 func (request *SdkClientListStoresRequest) Options(options ClientListStoresOptions) SdkClientListStoresRequestInterface { 489 request.options = &options 490 return request 491 } 492 493 func (request *SdkClientListStoresRequest) Execute() (*ClientListStoresResponse, error) { 494 return request.Client.ListStoresExecute(request) 495 } 496 497 func (request *SdkClientListStoresRequest) GetContext() _context.Context { 498 return request.ctx 499 } 500 501 func (request *SdkClientListStoresRequest) GetOptions() *ClientListStoresOptions { 502 return request.options 503 } 504 505 func (client *OpenFgaClient) ListStoresExecute(request SdkClientListStoresRequestInterface) (*ClientListStoresResponse, error) { 506 req := client.OpenFgaApi.ListStores(request.GetContext()) 507 pageSize := getPageSizeFromRequest((*ClientPaginationOptions)(request.GetOptions())) 508 if pageSize != nil { 509 req = req.PageSize(*pageSize) 510 } 511 continuationToken := getContinuationTokenFromRequest((*ClientPaginationOptions)(request.GetOptions())) 512 if continuationToken != nil { 513 req = req.ContinuationToken(*continuationToken) 514 } 515 data, _, err := req.Execute() 516 if err != nil { 517 return nil, err 518 } 519 return &data, nil 520 } 521 522 func (client *OpenFgaClient) ListStores(ctx _context.Context) SdkClientListStoresRequestInterface { 523 return &SdkClientListStoresRequest{ 524 ctx: ctx, 525 Client: client, 526 } 527 } 528 529 // / CreateStore 530 type SdkClientCreateStoreRequest struct { 531 ctx _context.Context 532 Client *OpenFgaClient 533 534 body *ClientCreateStoreRequest 535 options *ClientCreateStoreOptions 536 } 537 538 type SdkClientCreateStoreRequestInterface interface { 539 Options(options ClientCreateStoreOptions) SdkClientCreateStoreRequestInterface 540 Body(body ClientCreateStoreRequest) SdkClientCreateStoreRequestInterface 541 Execute() (*ClientCreateStoreResponse, error) 542 543 GetContext() _context.Context 544 GetOptions() *ClientCreateStoreOptions 545 GetBody() *ClientCreateStoreRequest 546 } 547 548 type ClientCreateStoreRequest struct { 549 Name string `json:"name"` 550 } 551 552 type ClientCreateStoreOptions struct { 553 } 554 555 type ClientCreateStoreResponse = fgaSdk.CreateStoreResponse 556 557 func (request *SdkClientCreateStoreRequest) Options(options ClientCreateStoreOptions) SdkClientCreateStoreRequestInterface { 558 request.options = &options 559 return request 560 } 561 562 func (request *SdkClientCreateStoreRequest) Body(body ClientCreateStoreRequest) SdkClientCreateStoreRequestInterface { 563 request.body = &body 564 return request 565 } 566 567 func (request *SdkClientCreateStoreRequest) Execute() (*ClientCreateStoreResponse, error) { 568 return request.Client.CreateStoreExecute(request) 569 } 570 571 func (request *SdkClientCreateStoreRequest) GetContext() _context.Context { 572 return request.ctx 573 } 574 575 func (request *SdkClientCreateStoreRequest) GetOptions() *ClientCreateStoreOptions { 576 return request.options 577 } 578 579 func (request *SdkClientCreateStoreRequest) GetBody() *ClientCreateStoreRequest { 580 return request.body 581 } 582 583 func (client *OpenFgaClient) CreateStoreExecute(request SdkClientCreateStoreRequestInterface) (*ClientCreateStoreResponse, error) { 584 data, _, err := client.OpenFgaApi.CreateStore(request.GetContext()).Body(fgaSdk.CreateStoreRequest{ 585 Name: request.GetBody().Name, 586 }).Execute() 587 if err != nil { 588 return nil, err 589 } 590 return &data, nil 591 } 592 593 func (client *OpenFgaClient) CreateStore(ctx _context.Context) SdkClientCreateStoreRequestInterface { 594 return &SdkClientCreateStoreRequest{ 595 Client: client, 596 ctx: ctx, 597 } 598 } 599 600 // / GetStore 601 type SdkClientGetStoreRequest struct { 602 ctx _context.Context 603 Client *OpenFgaClient 604 605 options *ClientGetStoreOptions 606 } 607 608 type SdkClientGetStoreRequestInterface interface { 609 Options(options ClientGetStoreOptions) SdkClientGetStoreRequestInterface 610 Execute() (*ClientGetStoreResponse, error) 611 612 GetContext() _context.Context 613 GetOptions() *ClientGetStoreOptions 614 } 615 616 type ClientGetStoreOptions struct { 617 } 618 619 type ClientGetStoreResponse = fgaSdk.GetStoreResponse 620 621 func (request *SdkClientGetStoreRequest) Options(options ClientGetStoreOptions) SdkClientGetStoreRequestInterface { 622 request.options = &options 623 return request 624 } 625 626 func (request *SdkClientGetStoreRequest) Execute() (*ClientGetStoreResponse, error) { 627 return request.Client.GetStoreExecute(request) 628 } 629 630 func (request *SdkClientGetStoreRequest) GetContext() _context.Context { 631 return request.ctx 632 } 633 634 func (request *SdkClientGetStoreRequest) GetOptions() *ClientGetStoreOptions { 635 return request.options 636 } 637 638 func (client *OpenFgaClient) GetStoreExecute(request SdkClientGetStoreRequestInterface) (*ClientGetStoreResponse, error) { 639 data, _, err := client.OpenFgaApi.GetStore(request.GetContext()).Execute() 640 if err != nil { 641 return nil, err 642 } 643 return &data, nil 644 } 645 646 func (client *OpenFgaClient) GetStore(ctx _context.Context) SdkClientGetStoreRequestInterface { 647 return &SdkClientGetStoreRequest{ 648 Client: client, 649 ctx: ctx, 650 } 651 } 652 653 // / DeleteStore 654 type SdkClientDeleteStoreRequest struct { 655 ctx _context.Context 656 Client *OpenFgaClient 657 658 options *ClientDeleteStoreOptions 659 } 660 661 type SdkClientDeleteStoreRequestInterface interface { 662 Options(options ClientDeleteStoreOptions) SdkClientDeleteStoreRequestInterface 663 Execute() (*ClientDeleteStoreResponse, error) 664 665 GetContext() _context.Context 666 GetOptions() *ClientDeleteStoreOptions 667 } 668 669 type ClientDeleteStoreOptions struct { 670 } 671 672 type ClientDeleteStoreResponse struct{} 673 674 func (request *SdkClientDeleteStoreRequest) Options(options ClientDeleteStoreOptions) SdkClientDeleteStoreRequestInterface { 675 request.options = &options 676 return request 677 } 678 679 func (request *SdkClientDeleteStoreRequest) Execute() (*ClientDeleteStoreResponse, error) { 680 return request.Client.DeleteStoreExecute(request) 681 } 682 683 func (request *SdkClientDeleteStoreRequest) GetContext() _context.Context { 684 return request.ctx 685 } 686 687 func (request *SdkClientDeleteStoreRequest) GetOptions() *ClientDeleteStoreOptions { 688 return request.options 689 } 690 691 func (client *OpenFgaClient) DeleteStoreExecute(request SdkClientDeleteStoreRequestInterface) (*ClientDeleteStoreResponse, error) { 692 _, err := client.OpenFgaApi.DeleteStore(request.GetContext()).Execute() 693 if err != nil { 694 return nil, err 695 } 696 return &ClientDeleteStoreResponse{}, nil 697 } 698 699 func (client *OpenFgaClient) DeleteStore(ctx _context.Context) SdkClientDeleteStoreRequestInterface { 700 return &SdkClientDeleteStoreRequest{ 701 Client: client, 702 ctx: ctx, 703 } 704 } 705 706 /* Authorization Models */ 707 708 // / ReadAuthorizationModels 709 type SdkClientReadAuthorizationModelsRequest struct { 710 ctx _context.Context 711 Client *OpenFgaClient 712 713 options *ClientReadAuthorizationModelsOptions 714 } 715 716 type SdkClientReadAuthorizationModelsRequestInterface interface { 717 Options(options ClientReadAuthorizationModelsOptions) SdkClientReadAuthorizationModelsRequestInterface 718 Execute() (*ClientReadAuthorizationModelsResponse, error) 719 720 GetContext() _context.Context 721 GetOptions() *ClientReadAuthorizationModelsOptions 722 } 723 724 type ClientReadAuthorizationModelsOptions struct { 725 PageSize *int32 `json:"page_size,omitempty"` 726 ContinuationToken *string `json:"continuation_token,omitempty"` 727 } 728 729 type ClientReadAuthorizationModelsResponse = fgaSdk.ReadAuthorizationModelsResponse 730 731 func (request *SdkClientReadAuthorizationModelsRequest) Options(options ClientReadAuthorizationModelsOptions) SdkClientReadAuthorizationModelsRequestInterface { 732 request.options = &options 733 return request 734 } 735 736 func (request *SdkClientReadAuthorizationModelsRequest) Execute() (*ClientReadAuthorizationModelsResponse, error) { 737 return request.Client.ReadAuthorizationModelsExecute(request) 738 } 739 740 func (request *SdkClientReadAuthorizationModelsRequest) GetContext() _context.Context { 741 return request.ctx 742 } 743 744 func (request *SdkClientReadAuthorizationModelsRequest) GetOptions() *ClientReadAuthorizationModelsOptions { 745 return request.options 746 } 747 748 func (client *OpenFgaClient) ReadAuthorizationModelsExecute(request SdkClientReadAuthorizationModelsRequestInterface) (*ClientReadAuthorizationModelsResponse, error) { 749 req := client.OpenFgaApi.ReadAuthorizationModels(request.GetContext()) 750 pageSize := getPageSizeFromRequest((*ClientPaginationOptions)(request.GetOptions())) 751 if pageSize != nil { 752 req = req.PageSize(*pageSize) 753 } 754 continuationToken := getContinuationTokenFromRequest((*ClientPaginationOptions)(request.GetOptions())) 755 if continuationToken != nil { 756 req = req.ContinuationToken(*continuationToken) 757 } 758 data, _, err := req.Execute() 759 if err != nil { 760 return nil, err 761 } 762 return &data, nil 763 } 764 765 func (client *OpenFgaClient) ReadAuthorizationModels(ctx _context.Context) SdkClientReadAuthorizationModelsRequestInterface { 766 return &SdkClientReadAuthorizationModelsRequest{ 767 Client: client, 768 ctx: ctx, 769 } 770 } 771 772 // / WriteAuthorizationModel 773 type SdkClientWriteAuthorizationModelRequest struct { 774 ctx _context.Context 775 Client *OpenFgaClient 776 777 body *ClientWriteAuthorizationModelRequest 778 options *ClientWriteAuthorizationModelOptions 779 } 780 781 type SdkClientWriteAuthorizationModelRequestInterface interface { 782 Options(options ClientWriteAuthorizationModelOptions) SdkClientWriteAuthorizationModelRequestInterface 783 Body(body ClientWriteAuthorizationModelRequest) SdkClientWriteAuthorizationModelRequestInterface 784 Execute() (*ClientWriteAuthorizationModelResponse, error) 785 786 GetBody() *ClientWriteAuthorizationModelRequest 787 GetOptions() *ClientWriteAuthorizationModelOptions 788 GetContext() _context.Context 789 } 790 791 type ClientWriteAuthorizationModelRequest = fgaSdk.WriteAuthorizationModelRequest 792 793 type ClientWriteAuthorizationModelOptions struct { 794 } 795 796 type ClientWriteAuthorizationModelResponse = fgaSdk.WriteAuthorizationModelResponse 797 798 func (request *SdkClientWriteAuthorizationModelRequest) Options(options ClientWriteAuthorizationModelOptions) SdkClientWriteAuthorizationModelRequestInterface { 799 request.options = &options 800 return request 801 } 802 803 func (request *SdkClientWriteAuthorizationModelRequest) Body(body ClientWriteAuthorizationModelRequest) SdkClientWriteAuthorizationModelRequestInterface { 804 request.body = &body 805 return request 806 } 807 808 func (request *SdkClientWriteAuthorizationModelRequest) Execute() (*ClientWriteAuthorizationModelResponse, error) { 809 return request.Client.WriteAuthorizationModelExecute(request) 810 } 811 812 func (request *SdkClientWriteAuthorizationModelRequest) GetBody() *ClientWriteAuthorizationModelRequest { 813 return request.body 814 } 815 816 func (request *SdkClientWriteAuthorizationModelRequest) GetOptions() *ClientWriteAuthorizationModelOptions { 817 return request.options 818 } 819 820 func (request *SdkClientWriteAuthorizationModelRequest) GetContext() _context.Context { 821 return request.ctx 822 } 823 824 func (client *OpenFgaClient) WriteAuthorizationModelExecute(request SdkClientWriteAuthorizationModelRequestInterface) (*ClientWriteAuthorizationModelResponse, error) { 825 data, _, err := client.OpenFgaApi.WriteAuthorizationModel(request.GetContext()).Body(*request.GetBody()).Execute() 826 if err != nil { 827 return nil, err 828 } 829 return &data, nil 830 } 831 832 func (client *OpenFgaClient) WriteAuthorizationModel(ctx _context.Context) SdkClientWriteAuthorizationModelRequestInterface { 833 return &SdkClientWriteAuthorizationModelRequest{ 834 Client: client, 835 ctx: ctx, 836 } 837 } 838 839 // / ReadAuthorizationModel 840 type SdkClientReadAuthorizationModelRequest struct { 841 ctx _context.Context 842 Client *OpenFgaClient 843 844 body *ClientReadAuthorizationModelRequest 845 options *ClientReadAuthorizationModelOptions 846 } 847 848 type SdkClientReadAuthorizationModelRequestInterface interface { 849 Options(options ClientReadAuthorizationModelOptions) SdkClientReadAuthorizationModelRequestInterface 850 Body(body ClientReadAuthorizationModelRequest) SdkClientReadAuthorizationModelRequestInterface 851 Execute() (*ClientReadAuthorizationModelResponse, error) 852 GetAuthorizationModelIdOverride() *string 853 854 GetContext() _context.Context 855 GetBody() *ClientReadAuthorizationModelRequest 856 GetOptions() *ClientReadAuthorizationModelOptions 857 } 858 859 type ClientReadAuthorizationModelRequest struct { 860 } 861 862 type ClientReadAuthorizationModelOptions struct { 863 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 864 } 865 866 type ClientReadAuthorizationModelResponse = fgaSdk.ReadAuthorizationModelResponse 867 868 func (request *SdkClientReadAuthorizationModelRequest) Options(options ClientReadAuthorizationModelOptions) SdkClientReadAuthorizationModelRequestInterface { 869 request.options = &options 870 return request 871 } 872 873 func (request *SdkClientReadAuthorizationModelRequest) GetAuthorizationModelIdOverride() *string { 874 if request.options == nil { 875 return nil 876 } 877 return request.options.AuthorizationModelId 878 } 879 880 func (request *SdkClientReadAuthorizationModelRequest) Body(body ClientReadAuthorizationModelRequest) SdkClientReadAuthorizationModelRequestInterface { 881 request.body = &body 882 return request 883 } 884 885 func (request *SdkClientReadAuthorizationModelRequest) Execute() (*ClientReadAuthorizationModelResponse, error) { 886 return request.Client.ReadAuthorizationModelExecute(request) 887 } 888 889 func (request *SdkClientReadAuthorizationModelRequest) GetBody() *ClientReadAuthorizationModelRequest { 890 return request.body 891 } 892 893 func (request *SdkClientReadAuthorizationModelRequest) GetOptions() *ClientReadAuthorizationModelOptions { 894 return request.options 895 } 896 897 func (request *SdkClientReadAuthorizationModelRequest) GetContext() _context.Context { 898 return request.ctx 899 } 900 901 func (client *OpenFgaClient) ReadAuthorizationModelExecute(request SdkClientReadAuthorizationModelRequestInterface) (*ClientReadAuthorizationModelResponse, error) { 902 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 903 if err != nil { 904 return nil, err 905 } 906 if authorizationModelId == nil || *authorizationModelId == "" { 907 return nil, FgaRequiredParamError{param: "AuthorizationModelId"} 908 } 909 data, _, err := client.OpenFgaApi.ReadAuthorizationModel(request.GetContext(), *authorizationModelId).Execute() 910 911 if err != nil { 912 return nil, err 913 } 914 return &data, nil 915 } 916 917 func (client *OpenFgaClient) ReadAuthorizationModel(ctx _context.Context) SdkClientReadAuthorizationModelRequestInterface { 918 return &SdkClientReadAuthorizationModelRequest{ 919 Client: client, 920 ctx: ctx, 921 } 922 } 923 924 // / ReadLatestAuthorizationModel 925 type SdkClientReadLatestAuthorizationModelRequest struct { 926 ctx _context.Context 927 Client OpenFgaClient 928 929 options *ClientReadLatestAuthorizationModelOptions 930 } 931 932 type SdkClientReadLatestAuthorizationModelRequestInterface interface { 933 Options(options ClientReadLatestAuthorizationModelOptions) SdkClientReadLatestAuthorizationModelRequestInterface 934 Execute() (*ClientReadAuthorizationModelResponse, error) 935 936 GetContext() _context.Context 937 GetOptions() *ClientReadLatestAuthorizationModelOptions 938 } 939 940 type ClientReadLatestAuthorizationModelOptions struct { 941 } 942 943 func (client *OpenFgaClient) ReadLatestAuthorizationModel(ctx _context.Context) SdkClientReadLatestAuthorizationModelRequestInterface { 944 return &SdkClientReadLatestAuthorizationModelRequest{ 945 Client: *client, 946 ctx: ctx, 947 } 948 } 949 950 func (request *SdkClientReadLatestAuthorizationModelRequest) Options(options ClientReadLatestAuthorizationModelOptions) SdkClientReadLatestAuthorizationModelRequestInterface { 951 request.options = &options 952 return request 953 } 954 955 func (request *SdkClientReadLatestAuthorizationModelRequest) Execute() (*ClientReadAuthorizationModelResponse, error) { 956 return request.Client.ReadLatestAuthorizationModelExecute(request) 957 } 958 959 func (request *SdkClientReadLatestAuthorizationModelRequest) GetContext() _context.Context { 960 return request.ctx 961 } 962 963 func (request *SdkClientReadLatestAuthorizationModelRequest) GetOptions() *ClientReadLatestAuthorizationModelOptions { 964 return request.options 965 } 966 967 func (client *OpenFgaClient) ReadLatestAuthorizationModelExecute(request SdkClientReadLatestAuthorizationModelRequestInterface) (*ClientReadAuthorizationModelResponse, error) { 968 response, err := client.ReadAuthorizationModels(request.GetContext()).Options(ClientReadAuthorizationModelsOptions{ 969 PageSize: fgaSdk.PtrInt32(1), 970 }).Execute() 971 if err != nil { 972 return nil, err 973 } 974 975 var authorizationModel *fgaSdk.AuthorizationModel 976 977 if len(response.AuthorizationModels) > 0 { 978 authorizationModels := response.AuthorizationModels 979 authorizationModel = &(authorizationModels)[0] 980 } 981 982 return &fgaSdk.ReadAuthorizationModelResponse{ 983 AuthorizationModel: authorizationModel, 984 }, nil 985 } 986 987 /* Relationship Tuples */ 988 989 // / ReadChanges 990 type SdkClientReadChangesRequest struct { 991 ctx _context.Context 992 Client *OpenFgaClient 993 994 body *ClientReadChangesRequest 995 options *ClientReadChangesOptions 996 } 997 998 type SdkClientReadChangesRequestInterface interface { 999 Options(options ClientReadChangesOptions) SdkClientReadChangesRequestInterface 1000 Body(body ClientReadChangesRequest) SdkClientReadChangesRequestInterface 1001 Execute() (*ClientReadChangesResponse, error) 1002 1003 GetContext() _context.Context 1004 GetBody() *ClientReadChangesRequest 1005 GetOptions() *ClientReadChangesOptions 1006 } 1007 1008 type ClientReadChangesRequest struct { 1009 Type string `json:"type,omitempty"` 1010 } 1011 1012 type ClientReadChangesOptions struct { 1013 PageSize *int32 `json:"page_size,omitempty"` 1014 ContinuationToken *string `json:"continuation_token,omitempty"` 1015 } 1016 1017 type ClientReadChangesResponse = fgaSdk.ReadChangesResponse 1018 1019 func (client *OpenFgaClient) ReadChanges(ctx _context.Context) SdkClientReadChangesRequestInterface { 1020 return &SdkClientReadChangesRequest{ 1021 Client: client, 1022 ctx: ctx, 1023 } 1024 } 1025 1026 func (request *SdkClientReadChangesRequest) Options(options ClientReadChangesOptions) SdkClientReadChangesRequestInterface { 1027 request.options = &options 1028 return request 1029 } 1030 1031 func (request *SdkClientReadChangesRequest) Body(body ClientReadChangesRequest) SdkClientReadChangesRequestInterface { 1032 request.body = &body 1033 return request 1034 } 1035 1036 func (request *SdkClientReadChangesRequest) Execute() (*ClientReadChangesResponse, error) { 1037 return request.Client.ReadChangesExecute(request) 1038 } 1039 1040 func (request *SdkClientReadChangesRequest) GetContext() _context.Context { 1041 return request.ctx 1042 } 1043 1044 func (request *SdkClientReadChangesRequest) GetBody() *ClientReadChangesRequest { 1045 return request.body 1046 } 1047 1048 func (request *SdkClientReadChangesRequest) GetOptions() *ClientReadChangesOptions { 1049 return request.options 1050 } 1051 1052 func (client *OpenFgaClient) ReadChangesExecute(request SdkClientReadChangesRequestInterface) (*ClientReadChangesResponse, error) { 1053 req := client.OpenFgaApi.ReadChanges(request.GetContext()) 1054 pageSize := getPageSizeFromRequest((*ClientPaginationOptions)(request.GetOptions())) 1055 if pageSize != nil { 1056 req = req.PageSize(*pageSize) 1057 } 1058 continuationToken := getContinuationTokenFromRequest((*ClientPaginationOptions)(request.GetOptions())) 1059 if continuationToken != nil { 1060 req = req.ContinuationToken(*continuationToken) 1061 } 1062 requestBody := request.GetBody() 1063 if requestBody != nil { 1064 req = req.Type_(requestBody.Type) 1065 } 1066 1067 data, _, err := req.Execute() 1068 if err != nil { 1069 return nil, err 1070 } 1071 return &data, nil 1072 } 1073 1074 // / Read 1075 type SdkClientReadRequest struct { 1076 ctx _context.Context 1077 Client *OpenFgaClient 1078 1079 body *ClientReadRequest 1080 options *ClientReadOptions 1081 } 1082 1083 type SdkClientReadRequestInterface interface { 1084 Options(options ClientReadOptions) SdkClientReadRequestInterface 1085 Body(body ClientReadRequest) SdkClientReadRequestInterface 1086 Execute() (*ClientReadResponse, error) 1087 1088 GetContext() _context.Context 1089 GetBody() *ClientReadRequest 1090 GetOptions() *ClientReadOptions 1091 } 1092 1093 type ClientReadRequest struct { 1094 User *string `json:"user,omitempty"` 1095 Relation *string `json:"relation,omitempty"` 1096 Object *string `json:"object,omitempty"` 1097 } 1098 1099 type ClientReadOptions struct { 1100 PageSize *int32 `json:"page_size,omitempty"` 1101 ContinuationToken *string `json:"continuation_token,omitempty"` 1102 } 1103 1104 type ClientReadResponse = fgaSdk.ReadResponse 1105 1106 func (client *OpenFgaClient) Read(ctx _context.Context) SdkClientReadRequestInterface { 1107 return &SdkClientReadRequest{ 1108 Client: client, 1109 ctx: ctx, 1110 } 1111 } 1112 1113 func (request *SdkClientReadRequest) Options(options ClientReadOptions) SdkClientReadRequestInterface { 1114 request.options = &options 1115 return request 1116 } 1117 1118 func (request *SdkClientReadRequest) Body(body ClientReadRequest) SdkClientReadRequestInterface { 1119 request.body = &body 1120 return request 1121 } 1122 1123 func (request *SdkClientReadRequest) Execute() (*ClientReadResponse, error) { 1124 return request.Client.ReadExecute(request) 1125 } 1126 1127 func (request *SdkClientReadRequest) GetContext() _context.Context { 1128 return request.ctx 1129 } 1130 1131 func (request *SdkClientReadRequest) GetBody() *ClientReadRequest { 1132 return request.body 1133 } 1134 1135 func (request *SdkClientReadRequest) GetOptions() *ClientReadOptions { 1136 return request.options 1137 } 1138 1139 func (client *OpenFgaClient) ReadExecute(request SdkClientReadRequestInterface) (*ClientReadResponse, error) { 1140 body := fgaSdk.ReadRequest{ 1141 PageSize: getPageSizeFromRequest((*ClientPaginationOptions)(request.GetOptions())), 1142 ContinuationToken: getContinuationTokenFromRequest((*ClientPaginationOptions)(request.GetOptions())), 1143 } 1144 if request.GetBody() != nil && (request.GetBody().User != nil || request.GetBody().Relation != nil || request.GetBody().Object != nil) { 1145 body.TupleKey = &fgaSdk.ReadRequestTupleKey{ 1146 User: request.GetBody().User, 1147 Relation: request.GetBody().Relation, 1148 Object: request.GetBody().Object, 1149 } 1150 } 1151 data, _, err := client.OpenFgaApi.Read(request.GetContext()).Body(body).Execute() 1152 if err != nil { 1153 return nil, err 1154 } 1155 return &data, nil 1156 } 1157 1158 // / Write 1159 type SdkClientWriteRequest struct { 1160 ctx _context.Context 1161 Client *OpenFgaClient 1162 1163 body *ClientWriteRequest 1164 options *ClientWriteOptions 1165 } 1166 1167 type SdkClientWriteRequestInterface interface { 1168 Options(options ClientWriteOptions) SdkClientWriteRequestInterface 1169 Body(body ClientWriteRequest) SdkClientWriteRequestInterface 1170 Execute() (*ClientWriteResponse, error) 1171 GetAuthorizationModelIdOverride() *string 1172 1173 GetContext() _context.Context 1174 GetOptions() *ClientWriteOptions 1175 GetBody() *ClientWriteRequest 1176 } 1177 1178 type ClientWriteRequest struct { 1179 Writes []ClientTupleKey 1180 Deletes []ClientTupleKeyWithoutCondition 1181 } 1182 1183 type TransactionOptions struct { 1184 // If set to true will disable running in transaction mode (transaction mode means everything is sent in a single transaction to the server) 1185 Disable bool `json:"disable,omitempty"` 1186 // When transaction mode is disabled, the requests are chunked and sent separately and each chunk is a transaction (default = 1) 1187 MaxPerChunk int32 `json:"max_per_chunk,omitempty"` 1188 // Number of requests to issue in parallel 1189 MaxParallelRequests int32 `json:"max_parallel_requests,omitempty"` 1190 } 1191 1192 type ClientWriteOptions struct { 1193 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 1194 Transaction *TransactionOptions `json:"transaction_options,omitempty"` 1195 } 1196 1197 type ClientWriteStatus string 1198 1199 // List of ClientWriteStatus 1200 const ( 1201 SUCCESS ClientWriteStatus = "CLIENT_WRITE_STATUS_SUCCESS" 1202 FAILURE ClientWriteStatus = "CLIENT_WRITE_STATUS_FAILURE" 1203 ) 1204 1205 type ClientWriteRequestWriteResponse struct { 1206 TupleKey ClientTupleKey `json:"tuple_key,omitempty"` 1207 Status ClientWriteStatus `json:"status,omitempty"` 1208 HttpResponse *_nethttp.Response `json:"http_response,omitempty"` 1209 Error error `json:"error,omitempty"` 1210 } 1211 1212 func (o ClientWriteRequestWriteResponse) MarshalJSON() ([]byte, error) { 1213 toSerialize := map[string]interface{}{} 1214 toSerialize["tuple_key"] = o.TupleKey 1215 toSerialize["status"] = o.Status 1216 if o.HttpResponse != nil { 1217 toSerialize["http_response"] = o.HttpResponse 1218 } 1219 if o.Error != nil { 1220 toSerialize["error"] = o.Error 1221 } 1222 return json.Marshal(toSerialize) 1223 } 1224 1225 type ClientWriteRequestDeleteResponse struct { 1226 TupleKey ClientTupleKeyWithoutCondition `json:"tuple_key,omitempty"` 1227 Status ClientWriteStatus `json:"status,omitempty"` 1228 HttpResponse *_nethttp.Response `json:"http_response,omitempty"` 1229 Error error `json:"error,omitempty"` 1230 } 1231 1232 func (o ClientWriteRequestDeleteResponse) MarshalJSON() ([]byte, error) { 1233 toSerialize := map[string]interface{}{} 1234 toSerialize["tuple_key"] = o.TupleKey 1235 toSerialize["status"] = o.Status 1236 if o.HttpResponse != nil { 1237 toSerialize["http_response"] = o.HttpResponse 1238 } 1239 if o.Error != nil { 1240 toSerialize["error"] = o.Error 1241 } 1242 return json.Marshal(toSerialize) 1243 } 1244 1245 type ClientWriteResponse struct { 1246 Writes []ClientWriteRequestWriteResponse `json:"writes,omitempty"` 1247 Deletes []ClientWriteRequestDeleteResponse `json:"deletes,omitempty"` 1248 } 1249 1250 func (o ClientWriteResponse) MarshalJSON() ([]byte, error) { 1251 toSerialize := map[string]interface{}{} 1252 if o.Writes != nil { 1253 toSerialize["writes"] = o.Writes 1254 } 1255 if o.Deletes != nil { 1256 toSerialize["deletes"] = o.Deletes 1257 } 1258 return json.Marshal(toSerialize) 1259 } 1260 1261 func (client *OpenFgaClient) Write(ctx _context.Context) SdkClientWriteRequestInterface { 1262 return &SdkClientWriteRequest{ 1263 Client: client, 1264 ctx: ctx, 1265 } 1266 } 1267 1268 func (request *SdkClientWriteRequest) Options(options ClientWriteOptions) SdkClientWriteRequestInterface { 1269 request.options = &options 1270 return request 1271 } 1272 1273 func (request *SdkClientWriteRequest) GetAuthorizationModelIdOverride() *string { 1274 if request.options == nil { 1275 return nil 1276 } 1277 return request.options.AuthorizationModelId 1278 } 1279 1280 func (request *SdkClientWriteRequest) Body(body ClientWriteRequest) SdkClientWriteRequestInterface { 1281 request.body = &body 1282 return request 1283 } 1284 1285 func (request *SdkClientWriteRequest) Execute() (*ClientWriteResponse, error) { 1286 return request.Client.WriteExecute(request) 1287 } 1288 1289 func (request *SdkClientWriteRequest) GetContext() _context.Context { 1290 return request.ctx 1291 } 1292 1293 func (request *SdkClientWriteRequest) GetOptions() *ClientWriteOptions { 1294 return request.options 1295 } 1296 1297 func (request *SdkClientWriteRequest) GetBody() *ClientWriteRequest { 1298 return request.body 1299 } 1300 1301 func (client *OpenFgaClient) WriteExecute(request SdkClientWriteRequestInterface) (*ClientWriteResponse, error) { 1302 var maxPerChunk = int32(1) // 1 has to be the default otherwise the chunks will be sent in transactions 1303 if request.GetOptions() != nil && request.GetOptions().Transaction != nil { 1304 maxPerChunk = request.GetOptions().Transaction.MaxPerChunk 1305 } 1306 var maxParallelReqs = DEFAULT_MAX_METHOD_PARALLEL_REQS 1307 if request.GetOptions() != nil && request.GetOptions().Transaction != nil { 1308 maxParallelReqs = request.GetOptions().Transaction.MaxParallelRequests 1309 } 1310 1311 response := ClientWriteResponse{ 1312 Writes: []ClientWriteRequestWriteResponse{}, 1313 Deletes: []ClientWriteRequestDeleteResponse{}, 1314 } 1315 1316 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 1317 if err != nil { 1318 return nil, err 1319 } 1320 1321 // Unless explicitly disabled, transaction mode is enabled 1322 // In transaction mode, the client will send the request to the server as is 1323 if request.GetOptions() == nil || request.GetOptions().Transaction == nil || !request.GetOptions().Transaction.Disable { 1324 writeRequest := fgaSdk.WriteRequest{ 1325 AuthorizationModelId: authorizationModelId, 1326 } 1327 if request.GetBody().Writes != nil && len(request.GetBody().Writes) > 0 { 1328 writes := fgaSdk.WriteRequestWrites{} 1329 for index := 0; index < len(request.GetBody().Writes); index++ { 1330 writes.TupleKeys = append(writes.TupleKeys, (request.GetBody().Writes)[index]) 1331 } 1332 writeRequest.Writes = &writes 1333 } 1334 if request.GetBody().Deletes != nil && len(request.GetBody().Deletes) > 0 { 1335 deletes := fgaSdk.WriteRequestDeletes{} 1336 for index := 0; index < len(request.GetBody().Deletes); index++ { 1337 deletes.TupleKeys = append(deletes.TupleKeys, (request.GetBody().Deletes)[index]) 1338 } 1339 writeRequest.Deletes = &deletes 1340 } 1341 _, httpResponse, err := client.OpenFgaApi.Write(request.GetContext()).Body(writeRequest).Execute() 1342 1343 clientWriteStatus := SUCCESS 1344 if err != nil { 1345 clientWriteStatus = FAILURE 1346 } 1347 1348 if request.GetBody() != nil && request.GetBody().Writes != nil { 1349 writeRequestTupleKeys := request.GetBody().Writes 1350 for index := 0; index < len(writeRequestTupleKeys); index++ { 1351 response.Writes = append(response.Writes, ClientWriteRequestWriteResponse{ 1352 TupleKey: writeRequestTupleKeys[index], 1353 HttpResponse: httpResponse, 1354 Status: clientWriteStatus, 1355 Error: err, 1356 }) 1357 } 1358 } 1359 1360 if request.GetBody() != nil && request.GetBody().Deletes != nil { 1361 deleteRequestTupleKeys := request.GetBody().Deletes 1362 for index := 0; index < len(deleteRequestTupleKeys); index++ { 1363 response.Deletes = append(response.Deletes, ClientWriteRequestDeleteResponse{ 1364 TupleKey: deleteRequestTupleKeys[index], 1365 HttpResponse: httpResponse, 1366 Status: clientWriteStatus, 1367 Error: err, 1368 }) 1369 } 1370 } 1371 1372 return &response, err 1373 } 1374 1375 // If the transaction mode is disabled: 1376 // - the client will attempt to chunk the writes and deletes into multiple requests 1377 // - each request is a transaction 1378 // - the max items in each request are based on maxPerChunk (default=1) 1379 var writeChunkSize = int(maxPerChunk) 1380 var writeChunks [][]ClientTupleKey 1381 if request.GetBody() != nil { 1382 for i := 0; i < len(request.GetBody().Writes); i += writeChunkSize { 1383 end := int(math.Min(float64(i+writeChunkSize), float64(len(request.GetBody().Writes)))) 1384 1385 writeChunks = append(writeChunks, (request.GetBody().Writes)[i:end]) 1386 } 1387 } 1388 1389 writeGroup, ctx := errgroup.WithContext(request.GetContext()) 1390 err = client.checkValidApiConnection(ctx, authorizationModelId) 1391 if err != nil { 1392 return nil, err 1393 } 1394 1395 writeGroup.SetLimit(int(maxParallelReqs)) 1396 writeResponses := make([]ClientWriteResponse, len(writeChunks)) 1397 for index, writeBody := range writeChunks { 1398 index, writeBody := index, writeBody 1399 writeGroup.Go(func() error { 1400 singleResponse, _ := client.WriteExecute(&SdkClientWriteRequest{ 1401 ctx: ctx, 1402 Client: client, 1403 body: &ClientWriteRequest{ 1404 Writes: writeBody, 1405 }, 1406 options: &ClientWriteOptions{ 1407 AuthorizationModelId: authorizationModelId, 1408 }, 1409 }) 1410 1411 writeResponses[index] = *singleResponse 1412 1413 return nil 1414 }) 1415 } 1416 1417 _ = writeGroup.Wait() 1418 1419 var deleteChunkSize = int(maxPerChunk) 1420 var deleteChunks [][]ClientTupleKeyWithoutCondition 1421 if request.GetBody() != nil { 1422 for i := 0; i < len(request.GetBody().Deletes); i += deleteChunkSize { 1423 end := int(math.Min(float64(i+writeChunkSize), float64(len(request.GetBody().Deletes)))) 1424 1425 deleteChunks = append(deleteChunks, (request.GetBody().Deletes)[i:end]) 1426 } 1427 } 1428 1429 deleteGroup, ctx := errgroup.WithContext(request.GetContext()) 1430 deleteGroup.SetLimit(int(maxParallelReqs)) 1431 deleteResponses := make([]ClientWriteResponse, len(deleteChunks)) 1432 for index, deleteBody := range deleteChunks { 1433 index, deleteBody := index, deleteBody 1434 deleteGroup.Go(func() error { 1435 singleResponse, _ := client.WriteExecute(&SdkClientWriteRequest{ 1436 ctx: ctx, 1437 Client: client, 1438 body: &ClientWriteRequest{ 1439 Deletes: deleteBody, 1440 }, 1441 options: &ClientWriteOptions{ 1442 AuthorizationModelId: authorizationModelId, 1443 }, 1444 }) 1445 1446 deleteResponses[index] = *singleResponse 1447 1448 return nil 1449 }) 1450 } 1451 1452 _ = deleteGroup.Wait() 1453 1454 for _, writeResponse := range writeResponses { 1455 for _, writeSingleResponse := range writeResponse.Writes { 1456 response.Writes = append(response.Writes, writeSingleResponse) 1457 } 1458 } 1459 1460 for _, deleteResponse := range deleteResponses { 1461 for _, deleteSingleResponse := range deleteResponse.Deletes { 1462 response.Deletes = append(response.Deletes, deleteSingleResponse) 1463 } 1464 } 1465 1466 return &response, nil 1467 } 1468 1469 // / WriteTuples 1470 type SdkClientWriteTuplesRequest struct { 1471 ctx _context.Context 1472 Client *OpenFgaClient 1473 1474 body *ClientWriteTuplesBody 1475 options *ClientWriteOptions 1476 } 1477 1478 type SdkClientWriteTuplesRequestInterface interface { 1479 Options(options ClientWriteOptions) SdkClientWriteTuplesRequestInterface 1480 Body(body ClientWriteTuplesBody) SdkClientWriteTuplesRequestInterface 1481 Execute() (*ClientWriteResponse, error) 1482 1483 GetContext() _context.Context 1484 GetBody() *ClientWriteTuplesBody 1485 GetOptions() *ClientWriteOptions 1486 } 1487 1488 type ClientWriteTuplesBody = []ClientTupleKey 1489 1490 func (client *OpenFgaClient) WriteTuples(ctx _context.Context) SdkClientWriteTuplesRequestInterface { 1491 return &SdkClientWriteTuplesRequest{ 1492 Client: client, 1493 ctx: ctx, 1494 } 1495 } 1496 1497 func (request *SdkClientWriteTuplesRequest) Options(options ClientWriteOptions) SdkClientWriteTuplesRequestInterface { 1498 request.options = &options 1499 return request 1500 } 1501 1502 func (request *SdkClientWriteTuplesRequest) Body(body ClientWriteTuplesBody) SdkClientWriteTuplesRequestInterface { 1503 request.body = &body 1504 return request 1505 } 1506 1507 func (request *SdkClientWriteTuplesRequest) Execute() (*ClientWriteResponse, error) { 1508 return request.Client.WriteTuplesExecute(request) 1509 } 1510 1511 func (request *SdkClientWriteTuplesRequest) GetContext() _context.Context { 1512 return request.ctx 1513 } 1514 1515 func (request *SdkClientWriteTuplesRequest) GetBody() *ClientWriteTuplesBody { 1516 return request.body 1517 } 1518 1519 func (request *SdkClientWriteTuplesRequest) GetOptions() *ClientWriteOptions { 1520 return request.options 1521 } 1522 1523 func (client *OpenFgaClient) WriteTuplesExecute(request SdkClientWriteTuplesRequestInterface) (*ClientWriteResponse, error) { 1524 baseReq := client.Write(request.GetContext()).Body(ClientWriteRequest{ 1525 Writes: *request.GetBody(), 1526 }) 1527 if request.GetOptions() != nil { 1528 baseReq = baseReq.Options(*request.GetOptions()) 1529 } 1530 return baseReq.Execute() 1531 } 1532 1533 // / DeleteTuples 1534 type SdkClientDeleteTuplesRequest struct { 1535 ctx _context.Context 1536 Client *OpenFgaClient 1537 1538 body *ClientDeleteTuplesBody 1539 options *ClientWriteOptions 1540 } 1541 1542 type SdkClientDeleteTuplesRequestInterface interface { 1543 Options(options ClientWriteOptions) SdkClientDeleteTuplesRequestInterface 1544 Body(body ClientDeleteTuplesBody) SdkClientDeleteTuplesRequestInterface 1545 Execute() (*ClientWriteResponse, error) 1546 1547 GetContext() _context.Context 1548 GetBody() *ClientDeleteTuplesBody 1549 GetOptions() *ClientWriteOptions 1550 } 1551 1552 type ClientDeleteTuplesBody = []ClientTupleKeyWithoutCondition 1553 1554 func (client *OpenFgaClient) DeleteTuples(ctx _context.Context) SdkClientDeleteTuplesRequestInterface { 1555 return &SdkClientDeleteTuplesRequest{ 1556 Client: client, 1557 ctx: ctx, 1558 } 1559 } 1560 1561 func (request *SdkClientDeleteTuplesRequest) Options(options ClientWriteOptions) SdkClientDeleteTuplesRequestInterface { 1562 request.options = &options 1563 return request 1564 } 1565 1566 func (request *SdkClientDeleteTuplesRequest) Body(body ClientDeleteTuplesBody) SdkClientDeleteTuplesRequestInterface { 1567 request.body = &body 1568 return request 1569 } 1570 1571 func (request *SdkClientDeleteTuplesRequest) Execute() (*ClientWriteResponse, error) { 1572 return request.Client.DeleteTuplesExecute(request) 1573 } 1574 1575 func (request *SdkClientDeleteTuplesRequest) GetContext() _context.Context { 1576 return request.ctx 1577 } 1578 1579 func (request *SdkClientDeleteTuplesRequest) GetBody() *ClientDeleteTuplesBody { 1580 return request.body 1581 } 1582 1583 func (request *SdkClientDeleteTuplesRequest) GetOptions() *ClientWriteOptions { 1584 return request.options 1585 } 1586 1587 func (client *OpenFgaClient) DeleteTuplesExecute(request SdkClientDeleteTuplesRequestInterface) (*ClientWriteResponse, error) { 1588 baseReq := client.Write(request.GetContext()).Body(ClientWriteRequest{ 1589 Deletes: *request.GetBody(), 1590 }) 1591 if request.GetOptions() != nil { 1592 baseReq = baseReq.Options(*request.GetOptions()) 1593 } 1594 return baseReq.Execute() 1595 } 1596 1597 /* Relationship Queries */ 1598 1599 /// Check 1600 1601 type SdkClientCheckRequest struct { 1602 ctx _context.Context 1603 Client *OpenFgaClient 1604 1605 body *ClientCheckRequest 1606 options *ClientCheckOptions 1607 } 1608 1609 type SdkClientCheckRequestInterface interface { 1610 Options(options ClientCheckOptions) SdkClientCheckRequestInterface 1611 Body(body ClientCheckRequest) SdkClientCheckRequestInterface 1612 Execute() (*ClientCheckResponse, error) 1613 GetAuthorizationModelIdOverride() *string 1614 1615 GetContext() _context.Context 1616 GetBody() *ClientCheckRequest 1617 GetOptions() *ClientCheckOptions 1618 } 1619 1620 type ClientCheckRequest struct { 1621 User string `json:"user,omitempty"` 1622 Relation string `json:"relation,omitempty"` 1623 Object string `json:"object,omitempty"` 1624 Context *map[string]interface{} `json:"context,omitempty"` 1625 ContextualTuples []ClientContextualTupleKey `json:"contextual_tuples,omitempty"` 1626 } 1627 1628 type ClientCheckOptions struct { 1629 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 1630 } 1631 1632 type ClientCheckResponse struct { 1633 fgaSdk.CheckResponse 1634 HttpResponse *_nethttp.Response 1635 } 1636 1637 func (client *OpenFgaClient) Check(ctx _context.Context) SdkClientCheckRequestInterface { 1638 return &SdkClientCheckRequest{ 1639 Client: client, 1640 ctx: ctx, 1641 } 1642 } 1643 1644 func (request *SdkClientCheckRequest) Options(options ClientCheckOptions) SdkClientCheckRequestInterface { 1645 request.options = &options 1646 return request 1647 } 1648 1649 func (request *SdkClientCheckRequest) GetAuthorizationModelIdOverride() *string { 1650 if request.options == nil { 1651 return nil 1652 } 1653 return request.options.AuthorizationModelId 1654 } 1655 1656 func (request *SdkClientCheckRequest) Body(body ClientCheckRequest) SdkClientCheckRequestInterface { 1657 request.body = &body 1658 return request 1659 } 1660 1661 func (request *SdkClientCheckRequest) Execute() (*ClientCheckResponse, error) { 1662 return request.Client.CheckExecute(request) 1663 } 1664 1665 func (request *SdkClientCheckRequest) GetContext() _context.Context { 1666 return request.ctx 1667 } 1668 1669 func (request *SdkClientCheckRequest) GetBody() *ClientCheckRequest { 1670 return request.body 1671 } 1672 1673 func (request *SdkClientCheckRequest) GetOptions() *ClientCheckOptions { 1674 return request.options 1675 } 1676 1677 func (client *OpenFgaClient) CheckExecute(request SdkClientCheckRequestInterface) (*ClientCheckResponse, error) { 1678 var contextualTuples []ClientContextualTupleKey 1679 if request.GetBody().ContextualTuples != nil { 1680 for index := 0; index < len(request.GetBody().ContextualTuples); index++ { 1681 contextualTuples = append(contextualTuples, (request.GetBody().ContextualTuples)[index]) 1682 } 1683 } 1684 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 1685 if err != nil { 1686 return nil, err 1687 } 1688 requestBody := fgaSdk.CheckRequest{ 1689 TupleKey: fgaSdk.CheckRequestTupleKey{ 1690 User: request.GetBody().User, 1691 Relation: request.GetBody().Relation, 1692 Object: request.GetBody().Object, 1693 }, 1694 Context: request.GetBody().Context, 1695 ContextualTuples: fgaSdk.NewContextualTupleKeys(contextualTuples), 1696 AuthorizationModelId: authorizationModelId, 1697 } 1698 1699 data, httpResponse, err := client.OpenFgaApi.Check(request.GetContext()).Body(requestBody).Execute() 1700 return &ClientCheckResponse{CheckResponse: data, HttpResponse: httpResponse}, err 1701 } 1702 1703 /// BatchCheck 1704 1705 type SdkClientBatchCheckRequest struct { 1706 ctx _context.Context 1707 Client *OpenFgaClient 1708 1709 body *ClientBatchCheckBody 1710 options *ClientBatchCheckOptions 1711 } 1712 1713 type SdkClientBatchCheckRequestInterface interface { 1714 Options(options ClientBatchCheckOptions) SdkClientBatchCheckRequestInterface 1715 Body(body ClientBatchCheckBody) SdkClientBatchCheckRequestInterface 1716 Execute() (*ClientBatchCheckResponse, error) 1717 GetAuthorizationModelIdOverride() *string 1718 1719 GetContext() _context.Context 1720 GetBody() *ClientBatchCheckBody 1721 GetOptions() *ClientBatchCheckOptions 1722 } 1723 1724 type ClientBatchCheckBody = []ClientCheckRequest 1725 1726 type ClientBatchCheckOptions struct { 1727 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 1728 MaxParallelRequests *int32 `json:"max_parallel_requests,omitempty"` 1729 } 1730 1731 type ClientBatchCheckSingleResponse struct { 1732 ClientCheckResponse 1733 Request ClientCheckRequest 1734 Error error 1735 } 1736 1737 type ClientBatchCheckResponse = []ClientBatchCheckSingleResponse 1738 1739 func (client *OpenFgaClient) BatchCheck(ctx _context.Context) SdkClientBatchCheckRequestInterface { 1740 return &SdkClientBatchCheckRequest{ 1741 Client: client, 1742 ctx: ctx, 1743 } 1744 } 1745 1746 func (request *SdkClientBatchCheckRequest) Options(options ClientBatchCheckOptions) SdkClientBatchCheckRequestInterface { 1747 request.options = &options 1748 return request 1749 } 1750 1751 func (request *SdkClientBatchCheckRequest) GetAuthorizationModelIdOverride() *string { 1752 if request.options == nil { 1753 return nil 1754 } 1755 return request.options.AuthorizationModelId 1756 } 1757 1758 func (request *SdkClientBatchCheckRequest) Body(body ClientBatchCheckBody) SdkClientBatchCheckRequestInterface { 1759 request.body = &body 1760 return request 1761 } 1762 1763 func (request *SdkClientBatchCheckRequest) Execute() (*ClientBatchCheckResponse, error) { 1764 return request.Client.BatchCheckExecute(request) 1765 } 1766 1767 func (request *SdkClientBatchCheckRequest) GetContext() _context.Context { 1768 return request.ctx 1769 } 1770 1771 func (request *SdkClientBatchCheckRequest) GetBody() *ClientBatchCheckBody { 1772 return request.body 1773 } 1774 1775 func (request *SdkClientBatchCheckRequest) GetOptions() *ClientBatchCheckOptions { 1776 return request.options 1777 } 1778 1779 func (client *OpenFgaClient) BatchCheckExecute(request SdkClientBatchCheckRequestInterface) (*ClientBatchCheckResponse, error) { 1780 group, ctx := errgroup.WithContext(request.GetContext()) 1781 var maxParallelReqs int 1782 if request.GetOptions() == nil || request.GetOptions().MaxParallelRequests == nil { 1783 maxParallelReqs = int(DEFAULT_MAX_METHOD_PARALLEL_REQS) 1784 } else { 1785 maxParallelReqs = int(*request.GetOptions().MaxParallelRequests) 1786 } 1787 group.SetLimit(maxParallelReqs) 1788 var numOfChecks = len(*request.GetBody()) 1789 response := make(ClientBatchCheckResponse, numOfChecks) 1790 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 1791 if err != nil { 1792 return nil, err 1793 } 1794 1795 group.Go(func() error { 1796 // if the connection is probelmatic, we will return error to the overall 1797 // response rather than individual response 1798 return client.checkValidApiConnection(ctx, authorizationModelId) 1799 }) 1800 for index, checkBody := range *request.GetBody() { 1801 index, checkBody := index, checkBody 1802 group.Go(func() error { 1803 singleResponse, err := client.CheckExecute(&SdkClientCheckRequest{ 1804 ctx: ctx, 1805 Client: client, 1806 body: &checkBody, 1807 options: &ClientCheckOptions{ 1808 AuthorizationModelId: authorizationModelId, 1809 }, 1810 }) 1811 1812 response[index] = ClientBatchCheckSingleResponse{ 1813 Request: checkBody, 1814 ClientCheckResponse: *singleResponse, 1815 Error: err, 1816 } 1817 1818 return nil 1819 }) 1820 } 1821 1822 if err := group.Wait(); err != nil { 1823 return nil, err 1824 } 1825 1826 return &response, nil 1827 } 1828 1829 // / Expand 1830 type SdkClientExpandRequest struct { 1831 ctx _context.Context 1832 Client *OpenFgaClient 1833 1834 body *ClientExpandRequest 1835 options *ClientExpandOptions 1836 } 1837 1838 type SdkClientExpandRequestInterface interface { 1839 Options(options ClientExpandOptions) SdkClientExpandRequestInterface 1840 Body(body ClientExpandRequest) SdkClientExpandRequestInterface 1841 Execute() (*ClientExpandResponse, error) 1842 GetAuthorizationModelIdOverride() *string 1843 1844 GetContext() _context.Context 1845 GetBody() *ClientExpandRequest 1846 GetOptions() *ClientExpandOptions 1847 } 1848 1849 type ClientExpandRequest struct { 1850 Relation string `json:"relation,omitempty"` 1851 Object string `json:"object,omitempty"` 1852 } 1853 1854 type ClientExpandOptions struct { 1855 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 1856 } 1857 1858 type ClientExpandResponse = fgaSdk.ExpandResponse 1859 1860 func (client *OpenFgaClient) Expand(ctx _context.Context) SdkClientExpandRequestInterface { 1861 return &SdkClientExpandRequest{ 1862 Client: client, 1863 ctx: ctx, 1864 } 1865 } 1866 1867 func (request *SdkClientExpandRequest) Options(options ClientExpandOptions) SdkClientExpandRequestInterface { 1868 request.options = &options 1869 return request 1870 } 1871 1872 func (request *SdkClientExpandRequest) GetAuthorizationModelIdOverride() *string { 1873 if request.options == nil { 1874 return nil 1875 } 1876 return request.options.AuthorizationModelId 1877 } 1878 1879 func (request *SdkClientExpandRequest) Body(body ClientExpandRequest) SdkClientExpandRequestInterface { 1880 request.body = &body 1881 return request 1882 } 1883 1884 func (request *SdkClientExpandRequest) Execute() (*ClientExpandResponse, error) { 1885 return request.Client.ExpandExecute(request) 1886 } 1887 1888 func (request *SdkClientExpandRequest) GetContext() _context.Context { 1889 return request.ctx 1890 } 1891 1892 func (request *SdkClientExpandRequest) GetBody() *ClientExpandRequest { 1893 return request.body 1894 } 1895 1896 func (request *SdkClientExpandRequest) GetOptions() *ClientExpandOptions { 1897 return request.options 1898 } 1899 1900 func (client *OpenFgaClient) ExpandExecute(request SdkClientExpandRequestInterface) (*ClientExpandResponse, error) { 1901 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 1902 if err != nil { 1903 return nil, err 1904 } 1905 1906 data, _, err := client.OpenFgaApi.Expand(request.GetContext()).Body(fgaSdk.ExpandRequest{ 1907 TupleKey: fgaSdk.ExpandRequestTupleKey{ 1908 Relation: request.GetBody().Relation, 1909 Object: request.GetBody().Object, 1910 }, 1911 AuthorizationModelId: authorizationModelId, 1912 }).Execute() 1913 if err != nil { 1914 return nil, err 1915 } 1916 return &data, nil 1917 } 1918 1919 // / ListObjects 1920 type SdkClientListObjectsRequest struct { 1921 ctx _context.Context 1922 Client *OpenFgaClient 1923 1924 body *ClientListObjectsRequest 1925 options *ClientListObjectsOptions 1926 } 1927 1928 type SdkClientListObjectsRequestInterface interface { 1929 Options(options ClientListObjectsOptions) SdkClientListObjectsRequestInterface 1930 Body(body ClientListObjectsRequest) SdkClientListObjectsRequestInterface 1931 Execute() (*ClientListObjectsResponse, error) 1932 GetAuthorizationModelIdOverride() *string 1933 1934 GetContext() _context.Context 1935 GetBody() *ClientListObjectsRequest 1936 GetOptions() *ClientListObjectsOptions 1937 } 1938 1939 type ClientListObjectsRequest struct { 1940 User string `json:"user,omitempty"` 1941 Relation string `json:"relation,omitempty"` 1942 Type string `json:"type,omitempty"` 1943 Context *map[string]interface{} `json:"context,omitempty"` 1944 ContextualTuples []ClientContextualTupleKey `json:"contextual_tuples,omitempty"` 1945 } 1946 1947 type ClientListObjectsOptions struct { 1948 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 1949 } 1950 1951 type ClientListObjectsResponse = fgaSdk.ListObjectsResponse 1952 1953 func (client *OpenFgaClient) ListObjects(ctx _context.Context) SdkClientListObjectsRequestInterface { 1954 return &SdkClientListObjectsRequest{ 1955 Client: client, 1956 ctx: ctx, 1957 } 1958 } 1959 1960 func (request *SdkClientListObjectsRequest) Options(options ClientListObjectsOptions) SdkClientListObjectsRequestInterface { 1961 request.options = &options 1962 return request 1963 } 1964 1965 func (request *SdkClientListObjectsRequest) GetAuthorizationModelIdOverride() *string { 1966 if request.options == nil { 1967 return nil 1968 } 1969 return request.options.AuthorizationModelId 1970 } 1971 1972 func (request *SdkClientListObjectsRequest) Body(body ClientListObjectsRequest) SdkClientListObjectsRequestInterface { 1973 request.body = &body 1974 return request 1975 } 1976 1977 func (request *SdkClientListObjectsRequest) Execute() (*ClientListObjectsResponse, error) { 1978 return request.Client.ListObjectsExecute(request) 1979 } 1980 1981 func (request *SdkClientListObjectsRequest) GetContext() _context.Context { 1982 return request.ctx 1983 } 1984 1985 func (request *SdkClientListObjectsRequest) GetBody() *ClientListObjectsRequest { 1986 return request.body 1987 } 1988 1989 func (request *SdkClientListObjectsRequest) GetOptions() *ClientListObjectsOptions { 1990 return request.options 1991 } 1992 1993 func (client *OpenFgaClient) ListObjectsExecute(request SdkClientListObjectsRequestInterface) (*ClientListObjectsResponse, error) { 1994 var contextualTuples []ClientContextualTupleKey 1995 if request.GetBody().ContextualTuples != nil { 1996 for index := 0; index < len(request.GetBody().ContextualTuples); index++ { 1997 contextualTuples = append(contextualTuples, (request.GetBody().ContextualTuples)[index]) 1998 } 1999 } 2000 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 2001 if err != nil { 2002 return nil, err 2003 } 2004 data, _, err := client.OpenFgaApi.ListObjects(request.GetContext()).Body(fgaSdk.ListObjectsRequest{ 2005 User: request.GetBody().User, 2006 Relation: request.GetBody().Relation, 2007 Type: request.GetBody().Type, 2008 ContextualTuples: fgaSdk.NewContextualTupleKeys(contextualTuples), 2009 Context: request.GetBody().Context, 2010 AuthorizationModelId: authorizationModelId, 2011 }).Execute() 2012 if err != nil { 2013 return nil, err 2014 } 2015 return &data, nil 2016 } 2017 2018 /// ListRelations 2019 2020 type SdkClientListRelationsRequest struct { 2021 ctx _context.Context 2022 Client *OpenFgaClient 2023 2024 body *ClientListRelationsRequest 2025 options *ClientListRelationsOptions 2026 } 2027 2028 type SdkClientListRelationsRequestInterface interface { 2029 Options(options ClientListRelationsOptions) SdkClientListRelationsRequestInterface 2030 Body(body ClientListRelationsRequest) SdkClientListRelationsRequestInterface 2031 Execute() (*ClientListRelationsResponse, error) 2032 GetAuthorizationModelIdOverride() *string 2033 2034 GetContext() _context.Context 2035 GetBody() *ClientListRelationsRequest 2036 GetOptions() *ClientListRelationsOptions 2037 } 2038 2039 type ClientListRelationsRequest struct { 2040 User string `json:"user,omitempty"` 2041 Object string `json:"object,omitempty"` 2042 Relations []string `json:"relations,omitempty"` 2043 Context *map[string]interface{} `json:"context,omitempty"` 2044 ContextualTuples []ClientContextualTupleKey `json:"contextual_tuples,omitempty"` 2045 } 2046 2047 type ClientListRelationsOptions struct { 2048 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 2049 } 2050 2051 type ClientListRelationsResponse struct { 2052 Relations []string `json:"response,omitempty"` 2053 } 2054 2055 func (o ClientListRelationsResponse) MarshalJSON() ([]byte, error) { 2056 toSerialize := map[string]interface{}{} 2057 toSerialize["relations"] = o.Relations 2058 return json.Marshal(toSerialize) 2059 } 2060 2061 func (client *OpenFgaClient) ListRelations(ctx _context.Context) SdkClientListRelationsRequestInterface { 2062 return &SdkClientListRelationsRequest{ 2063 Client: client, 2064 ctx: ctx, 2065 } 2066 } 2067 2068 func (request *SdkClientListRelationsRequest) Options(options ClientListRelationsOptions) SdkClientListRelationsRequestInterface { 2069 request.options = &options 2070 return request 2071 } 2072 2073 func (request *SdkClientListRelationsRequest) GetAuthorizationModelIdOverride() *string { 2074 if request.options == nil { 2075 return nil 2076 } 2077 return request.options.AuthorizationModelId 2078 } 2079 2080 func (request *SdkClientListRelationsRequest) Body(body ClientListRelationsRequest) SdkClientListRelationsRequestInterface { 2081 request.body = &body 2082 return request 2083 } 2084 2085 func (request *SdkClientListRelationsRequest) Execute() (*ClientListRelationsResponse, error) { 2086 return request.Client.ListRelationsExecute(request) 2087 } 2088 2089 func (request *SdkClientListRelationsRequest) GetContext() _context.Context { 2090 return request.ctx 2091 } 2092 2093 func (request *SdkClientListRelationsRequest) GetBody() *ClientListRelationsRequest { 2094 return request.body 2095 } 2096 2097 func (request *SdkClientListRelationsRequest) GetOptions() *ClientListRelationsOptions { 2098 return request.options 2099 } 2100 2101 func (client *OpenFgaClient) ListRelationsExecute(request SdkClientListRelationsRequestInterface) (*ClientListRelationsResponse, error) { 2102 if len(request.GetBody().Relations) <= 0 { 2103 return nil, fmt.Errorf("ListRelations - expected len(Relations) > 0") 2104 } 2105 2106 batchRequestBody := ClientBatchCheckBody{} 2107 for index := 0; index < len(request.GetBody().Relations); index++ { 2108 batchRequestBody = append(batchRequestBody, ClientCheckRequest{ 2109 User: request.GetBody().User, 2110 Relation: request.GetBody().Relations[index], 2111 Object: request.GetBody().Object, 2112 Context: request.GetBody().Context, 2113 ContextualTuples: request.GetBody().ContextualTuples, 2114 }) 2115 } 2116 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 2117 if err != nil { 2118 return nil, err 2119 } 2120 batchResponse, err := client.BatchCheckExecute(&SdkClientBatchCheckRequest{ 2121 ctx: request.GetContext(), 2122 Client: client, 2123 body: &batchRequestBody, 2124 options: &ClientBatchCheckOptions{ 2125 AuthorizationModelId: authorizationModelId, 2126 }, 2127 }) 2128 2129 if err != nil { 2130 return nil, err 2131 } 2132 2133 var relations []string 2134 for index := 0; index < len(*batchResponse); index++ { 2135 if (*batchResponse)[index].GetAllowed() { 2136 relations = append(relations, (*batchResponse)[index].Request.Relation) 2137 } 2138 } 2139 2140 return &ClientListRelationsResponse{Relations: relations}, nil 2141 } 2142 2143 // / ReadAssertions 2144 type SdkClientReadAssertionsRequest struct { 2145 ctx _context.Context 2146 Client *OpenFgaClient 2147 2148 options *ClientReadAssertionsOptions 2149 } 2150 2151 type SdkClientReadAssertionsRequestInterface interface { 2152 Options(options ClientReadAssertionsOptions) SdkClientReadAssertionsRequestInterface 2153 Execute() (*ClientReadAssertionsResponse, error) 2154 GetAuthorizationModelIdOverride() *string 2155 2156 GetContext() _context.Context 2157 GetOptions() *ClientReadAssertionsOptions 2158 } 2159 2160 type ClientReadAssertionsOptions struct { 2161 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 2162 } 2163 2164 type ClientReadAssertionsResponse = fgaSdk.ReadAssertionsResponse 2165 2166 func (client *OpenFgaClient) ReadAssertions(ctx _context.Context) SdkClientReadAssertionsRequestInterface { 2167 return &SdkClientReadAssertionsRequest{ 2168 Client: client, 2169 ctx: ctx, 2170 } 2171 } 2172 2173 func (request *SdkClientReadAssertionsRequest) Options(options ClientReadAssertionsOptions) SdkClientReadAssertionsRequestInterface { 2174 request.options = &options 2175 return request 2176 } 2177 2178 func (request *SdkClientReadAssertionsRequest) GetAuthorizationModelIdOverride() *string { 2179 if request.options == nil { 2180 return nil 2181 } 2182 return request.options.AuthorizationModelId 2183 } 2184 2185 func (request *SdkClientReadAssertionsRequest) Execute() (*ClientReadAssertionsResponse, error) { 2186 return request.Client.ReadAssertionsExecute(request) 2187 } 2188 2189 func (request *SdkClientReadAssertionsRequest) GetContext() _context.Context { 2190 return request.ctx 2191 } 2192 2193 func (request *SdkClientReadAssertionsRequest) GetOptions() *ClientReadAssertionsOptions { 2194 return request.options 2195 } 2196 2197 func (client *OpenFgaClient) ReadAssertionsExecute(request SdkClientReadAssertionsRequestInterface) (*ClientReadAssertionsResponse, error) { 2198 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 2199 if err != nil { 2200 return nil, err 2201 } 2202 if authorizationModelId == nil || *authorizationModelId == "" { 2203 return nil, FgaRequiredParamError{param: "AuthorizationModelId"} 2204 } 2205 data, _, err := client.OpenFgaApi.ReadAssertions(request.GetContext(), *authorizationModelId).Execute() 2206 if err != nil { 2207 return nil, err 2208 } 2209 return &data, nil 2210 } 2211 2212 // / WriteAssertions 2213 type SdkClientWriteAssertionsRequest struct { 2214 ctx _context.Context 2215 Client *OpenFgaClient 2216 2217 body *ClientWriteAssertionsRequest 2218 options *ClientWriteAssertionsOptions 2219 } 2220 2221 type SdkClientWriteAssertionsRequestInterface interface { 2222 Options(options ClientWriteAssertionsOptions) SdkClientWriteAssertionsRequestInterface 2223 Body(body ClientWriteAssertionsRequest) SdkClientWriteAssertionsRequestInterface 2224 Execute() (*ClientWriteAssertionsResponse, error) 2225 GetAuthorizationModelIdOverride() *string 2226 2227 GetContext() _context.Context 2228 GetBody() *ClientWriteAssertionsRequest 2229 GetOptions() *ClientWriteAssertionsOptions 2230 } 2231 2232 type ClientAssertion struct { 2233 User string `json:"user,omitempty"` 2234 Relation string `json:"relation,omitempty"` 2235 Object string `json:"object,omitempty"` 2236 Expectation bool `json:"expectation,omitempty"` 2237 } 2238 2239 type ClientWriteAssertionsRequest = []ClientAssertion 2240 2241 func (clientAssertion ClientAssertion) ToAssertion() fgaSdk.Assertion { 2242 return fgaSdk.Assertion{ 2243 TupleKey: fgaSdk.AssertionTupleKey{ 2244 User: clientAssertion.User, 2245 Relation: clientAssertion.Relation, 2246 Object: clientAssertion.Object, 2247 }, 2248 Expectation: clientAssertion.Expectation, 2249 } 2250 } 2251 2252 type ClientWriteAssertionsOptions struct { 2253 AuthorizationModelId *string `json:"authorization_model_id,omitempty"` 2254 } 2255 2256 type ClientWriteAssertionsResponse struct { 2257 } 2258 2259 func (client *OpenFgaClient) WriteAssertions(ctx _context.Context) SdkClientWriteAssertionsRequestInterface { 2260 return &SdkClientWriteAssertionsRequest{ 2261 Client: client, 2262 ctx: ctx, 2263 } 2264 } 2265 2266 func (request *SdkClientWriteAssertionsRequest) Options(options ClientWriteAssertionsOptions) SdkClientWriteAssertionsRequestInterface { 2267 request.options = &options 2268 return request 2269 } 2270 2271 func (request *SdkClientWriteAssertionsRequest) GetAuthorizationModelIdOverride() *string { 2272 if request.options == nil { 2273 return nil 2274 } 2275 return request.options.AuthorizationModelId 2276 } 2277 2278 func (request *SdkClientWriteAssertionsRequest) Body(body ClientWriteAssertionsRequest) SdkClientWriteAssertionsRequestInterface { 2279 request.body = &body 2280 return request 2281 } 2282 2283 func (request *SdkClientWriteAssertionsRequest) Execute() (*ClientWriteAssertionsResponse, error) { 2284 return request.Client.WriteAssertionsExecute(request) 2285 } 2286 2287 func (request *SdkClientWriteAssertionsRequest) GetContext() _context.Context { 2288 return request.ctx 2289 } 2290 2291 func (request *SdkClientWriteAssertionsRequest) GetBody() *ClientWriteAssertionsRequest { 2292 return request.body 2293 } 2294 2295 func (request *SdkClientWriteAssertionsRequest) GetOptions() *ClientWriteAssertionsOptions { 2296 return request.options 2297 } 2298 2299 func (client *OpenFgaClient) WriteAssertionsExecute(request SdkClientWriteAssertionsRequestInterface) (*ClientWriteAssertionsResponse, error) { 2300 writeAssertionsRequest := fgaSdk.WriteAssertionsRequest{} 2301 authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride()) 2302 if err != nil { 2303 return nil, err 2304 } 2305 if authorizationModelId == nil || *authorizationModelId == "" { 2306 return nil, FgaRequiredParamError{param: "AuthorizationModelId"} 2307 } 2308 for index := 0; index < len(*request.GetBody()); index++ { 2309 clientAssertion := (*request.GetBody())[index] 2310 writeAssertionsRequest.Assertions = append(writeAssertionsRequest.Assertions, clientAssertion.ToAssertion()) 2311 } 2312 _, err = client.OpenFgaApi.WriteAssertions(request.GetContext(), *authorizationModelId).Body(writeAssertionsRequest).Execute() 2313 2314 if err != nil { 2315 return nil, err 2316 } 2317 return &ClientWriteAssertionsResponse{}, nil 2318 }