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  }