diff --git a/client_generated.go b/client_generated.go index fa8d819..628c361 100644 --- a/client_generated.go +++ b/client_generated.go @@ -31,6 +31,7 @@ import ( mysql "github.com/aiven/go-client-codegen/handler/mysql" opensearch "github.com/aiven/go-client-codegen/handler/opensearch" organization "github.com/aiven/go-client-codegen/handler/organization" + organizationgovernance "github.com/aiven/go-client-codegen/handler/organizationgovernance" organizationprojects "github.com/aiven/go-client-codegen/handler/organizationprojects" organizationuser "github.com/aiven/go-client-codegen/handler/organizationuser" organizationvpc "github.com/aiven/go-client-codegen/handler/organizationvpc" @@ -78,6 +79,7 @@ func newClient(doer doer) Client { KafkaTopicHandler: kafkatopic.NewHandler(doer), MySQLHandler: mysql.NewHandler(doer), OpenSearchHandler: opensearch.NewHandler(doer), + OrganizationGovernanceHandler: organizationgovernance.NewHandler(doer), OrganizationHandler: organization.NewHandler(doer), OrganizationProjectsHandler: organizationprojects.NewHandler(doer), OrganizationUserHandler: organizationuser.NewHandler(doer), @@ -122,6 +124,7 @@ type client struct { mysql.MySQLHandler opensearch.OpenSearchHandler organization.OrganizationHandler + organizationgovernance.OrganizationGovernanceHandler organizationprojects.OrganizationProjectsHandler organizationuser.OrganizationUserHandler organizationvpc.OrganizationVpcHandler @@ -163,6 +166,7 @@ type Client interface { mysql.Handler opensearch.Handler organization.Handler + organizationgovernance.Handler organizationprojects.Handler organizationuser.Handler organizationvpc.Handler diff --git a/config.yaml b/config.yaml index cf73a36..2185e94 100644 --- a/config.yaml +++ b/config.yaml @@ -211,6 +211,10 @@ Organization: - PermissionsUpdate - UserOrganizationCreate - UserOrganizationsList +OrganizationGovernance: + - OrganizationGovernanceAccessCreate + - OrganizationGovernanceAccessDelete + - OrganizationGovernanceAccessGet OrganizationProjects: - OrganizationProjectsCreate - OrganizationProjectsDelete diff --git a/handler/organizationgovernance/organizationgovernance.go b/handler/organizationgovernance/organizationgovernance.go new file mode 100644 index 0000000..a89bf82 --- /dev/null +++ b/handler/organizationgovernance/organizationgovernance.go @@ -0,0 +1,208 @@ +// Code generated by Aiven. DO NOT EDIT. + +package organizationgovernance + +import ( + "context" + "encoding/json" + "fmt" + "net/url" + "time" +) + +type Handler interface { + // OrganizationGovernanceAccessCreate [EXPERIMENTAL] Create organization access + // POST /v1/organization/{organization_id}/governance/access + // https://api.aiven.io/doc/#tag/Organizations/operation/OrganizationGovernanceAccessCreate + OrganizationGovernanceAccessCreate(ctx context.Context, organizationId string, in *OrganizationGovernanceAccessCreateIn) (*OrganizationGovernanceAccessCreateOut, error) + + // OrganizationGovernanceAccessDelete [EXPERIMENTAL] Delete organization access + // DELETE /v1/organization/{organization_id}/governance/access/{access_id} + // https://api.aiven.io/doc/#tag/Organizations/operation/OrganizationGovernanceAccessDelete + OrganizationGovernanceAccessDelete(ctx context.Context, organizationId string, accessId string) (string, error) + + // OrganizationGovernanceAccessGet [EXPERIMENTAL] Get organization access details + // GET /v1/organization/{organization_id}/governance/access/{access_id} + // https://api.aiven.io/doc/#tag/Organizations/operation/OrganizationGovernanceAccessGet + OrganizationGovernanceAccessGet(ctx context.Context, organizationId string, accessId string) (*OrganizationGovernanceAccessGetOut, error) +} + +// doer http client +type doer interface { + Do(ctx context.Context, operationID, method, path string, in any, query ...[2]string) ([]byte, error) +} + +func NewHandler(doer doer) OrganizationGovernanceHandler { + return OrganizationGovernanceHandler{doer} +} + +type OrganizationGovernanceHandler struct { + doer doer +} + +func (h *OrganizationGovernanceHandler) OrganizationGovernanceAccessCreate(ctx context.Context, organizationId string, in *OrganizationGovernanceAccessCreateIn) (*OrganizationGovernanceAccessCreateOut, error) { + path := fmt.Sprintf("/v1/organization/%s/governance/access", url.PathEscape(organizationId)) + b, err := h.doer.Do(ctx, "OrganizationGovernanceAccessCreate", "POST", path, in) + if err != nil { + return nil, err + } + out := new(organizationGovernanceAccessCreateOut) + err = json.Unmarshal(b, out) + if err != nil { + return nil, err + } + return &out.Access, nil +} +func (h *OrganizationGovernanceHandler) OrganizationGovernanceAccessDelete(ctx context.Context, organizationId string, accessId string) (string, error) { + path := fmt.Sprintf("/v1/organization/%s/governance/access/%s", url.PathEscape(organizationId), url.PathEscape(accessId)) + b, err := h.doer.Do(ctx, "OrganizationGovernanceAccessDelete", "DELETE", path, nil) + if err != nil { + return "", err + } + out := new(organizationGovernanceAccessDeleteOut) + err = json.Unmarshal(b, out) + if err != nil { + return "", err + } + return out.AccessId, nil +} +func (h *OrganizationGovernanceHandler) OrganizationGovernanceAccessGet(ctx context.Context, organizationId string, accessId string) (*OrganizationGovernanceAccessGetOut, error) { + path := fmt.Sprintf("/v1/organization/%s/governance/access/%s", url.PathEscape(organizationId), url.PathEscape(accessId)) + b, err := h.doer.Do(ctx, "OrganizationGovernanceAccessGet", "GET", path, nil) + if err != nil { + return nil, err + } + out := new(organizationGovernanceAccessGetOut) + err = json.Unmarshal(b, out) + if err != nil { + return nil, err + } + return &out.Access, nil +} + +// AccessDataIn access type specific data +type AccessDataIn struct { + Acls []AclIn `json:"acls"` + ProjectName string `json:"project_name"` // Project name + ServiceName string `json:"service_name"` // Service name + Username string `json:"username"` // The service username assigned to the access +} + +// AccessDataOut access type specific data +type AccessDataOut struct { + Acls []AclOut `json:"acls"` + ProjectName string `json:"project_name"` // Project name + ServiceName string `json:"service_name"` // Service name + Username string `json:"username"` // The service username assigned to the access +} +type AccessType string + +const ( + AccessTypeKafka AccessType = "KAFKA" +) + +func AccessTypeChoices() []string { + return []string{"KAFKA"} +} + +type AclIn struct { + Host string `json:"host"` // Acl host + Operation OperationType `json:"operation"` // An enumeration. + PermissionType PermissionType `json:"permission_type"` // An enumeration. + ResourceName string `json:"resource_name"` // Acl resource name + ResourceType ResourceType `json:"resource_type"` // An enumeration. +} +type AclOut struct { + Host string `json:"host"` // Acl host + Id string `json:"id"` // Acl ID + Operation OperationType `json:"operation"` // An enumeration. + PatternType PatternType `json:"pattern_type"` // An enumeration. + PermissionType PermissionType `json:"permission_type"` // An enumeration. + Principal string `json:"principal"` // Acl principal + ResourceName string `json:"resource_name"` // Acl resource name + ResourceType ResourceType `json:"resource_type"` // An enumeration. +} +type OperationType string + +const ( + OperationTypeRead OperationType = "Read" + OperationTypeWrite OperationType = "Write" +) + +func OperationTypeChoices() []string { + return []string{"Read", "Write"} +} + +// OrganizationGovernanceAccessCreateIn OrganizationGovernanceAccessCreateRequestBody +type OrganizationGovernanceAccessCreateIn struct { + AccessData AccessDataIn `json:"access_data"` // access type specific data + AccessName string `json:"access_name"` // Label to describe the access + AccessType AccessType `json:"access_type"` // An enumeration. + OwnerUserGroupId *string `json:"owner_user_group_id,omitempty"` // The ID of the group that will own the access +} + +// OrganizationGovernanceAccessCreateOut OrganizationGovernanceAccess +type OrganizationGovernanceAccessCreateOut struct { + AccessData AccessDataOut `json:"access_data"` // access type specific data + AccessId string `json:"access_id"` // The ID of the access + AccessName string `json:"access_name"` // Label to describe the access + AccessType AccessType `json:"access_type"` // An enumeration. + CreateTime time.Time `json:"create_time"` // Timestamp of when access was created + CreatedBy string `json:"created_by"` // The user that created the access + OwnerUserGroupId *string `json:"owner_user_group_id,omitempty"` // The ID of the group that will own the access +} + +// OrganizationGovernanceAccessGetOut OrganizationGovernanceAccess +type OrganizationGovernanceAccessGetOut struct { + AccessData AccessDataOut `json:"access_data"` // access type specific data + AccessId string `json:"access_id"` // The ID of the access + AccessName string `json:"access_name"` // Label to describe the access + AccessType AccessType `json:"access_type"` // An enumeration. + CreateTime time.Time `json:"create_time"` // Timestamp of when access was created + CreatedBy string `json:"created_by"` // The user that created the access + OwnerUserGroupId *string `json:"owner_user_group_id,omitempty"` // The ID of the group that will own the access +} +type PatternType string + +const ( + PatternTypeLiteral PatternType = "LITERAL" +) + +func PatternTypeChoices() []string { + return []string{"LITERAL"} +} + +type PermissionType string + +const ( + PermissionTypeAllow PermissionType = "ALLOW" +) + +func PermissionTypeChoices() []string { + return []string{"ALLOW"} +} + +type ResourceType string + +const ( + ResourceTypeTopic ResourceType = "Topic" +) + +func ResourceTypeChoices() []string { + return []string{"Topic"} +} + +// organizationGovernanceAccessCreateOut OrganizationGovernanceAccessCreateResponse +type organizationGovernanceAccessCreateOut struct { + Access OrganizationGovernanceAccessCreateOut `json:"access"` // OrganizationGovernanceAccess +} + +// organizationGovernanceAccessDeleteOut OrganizationGovernanceAccessDeleteResponse +type organizationGovernanceAccessDeleteOut struct { + AccessId string `json:"access_id"` // The ID of the access +} + +// organizationGovernanceAccessGetOut OrganizationGovernanceAccessGetResponse +type organizationGovernanceAccessGetOut struct { + Access OrganizationGovernanceAccessGetOut `json:"access"` // OrganizationGovernanceAccess +}