func (c *RegistryClient) DeleteApiSpec(ctx context.Context, req *rpcpb.DeleteApiSpecRequest, opts ...gax.CallOption) error {
	return c.internalClient.DeleteApiSpec(ctx, req, opts...)
}
DeleteApiSpec deleteApiSpec removes a specified spec, all revisions, and all child
resources (e.g. artifacts).
package gapic
import (
	"context"
	"fmt"
	"math"
	"net/url"
	"time"
	rpcpb "github.com/apigee/registry/rpc"
	gax "github.com/googleapis/gax-go/v2"
	"google.golang.org/api/iterator"
	"google.golang.org/api/option"
	"google.golang.org/api/option/internaloption"
	gtransport "google.golang.org/api/transport/grpc"
	httpbodypb "google.golang.org/genproto/googleapis/api/httpbody"
	"google.golang.org/grpc"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/metadata"
	"google.golang.org/protobuf/proto"
)
var newRegistryClientHook clientHook
type RegistryCallOptions struct {
	ListApis []gax.CallOption
	GetApi []gax.CallOption
	CreateApi []gax.CallOption
	UpdateApi []gax.CallOption
	DeleteApi []gax.CallOption
	ListApiVersions []gax.CallOption
	GetApiVersion []gax.CallOption
	CreateApiVersion []gax.CallOption
	UpdateApiVersion []gax.CallOption
	DeleteApiVersion []gax.CallOption
	ListApiSpecs []gax.CallOption
	GetApiSpec []gax.CallOption
	GetApiSpecContents []gax.CallOption
	CreateApiSpec []gax.CallOption
	UpdateApiSpec []gax.CallOption
	DeleteApiSpec []gax.CallOption
	TagApiSpecRevision []gax.CallOption
	ListApiSpecRevisions []gax.CallOption
	RollbackApiSpec []gax.CallOption
	DeleteApiSpecRevision []gax.CallOption
	ListArtifacts []gax.CallOption
	GetArtifact []gax.CallOption
	GetArtifactContents []gax.CallOption
	CreateArtifact []gax.CallOption
	ReplaceArtifact []gax.CallOption
	DeleteArtifact []gax.CallOption
}
func defaultRegistryGRPCClientOptions() []option.ClientOption {
	return []option.ClientOption{
		internaloption.WithDefaultEndpoint("apigeeregistry.googleapis.com:443"),
		internaloption.WithDefaultMTLSEndpoint("apigeeregistry.mtls.googleapis.com:443"),
		internaloption.WithDefaultAudience("https://apigeeregistry.googleapis.com/"),
		internaloption.WithDefaultScopes(DefaultAuthScopes()...),
		internaloption.EnableJwtWithScope(),
		option.WithGRPCDialOption(grpc.WithDisableServiceConfig()),
		option.WithGRPCDialOption(grpc.WithDefaultCallOptions(
		grpc.MaxCallRecvMsgSize(math.MaxInt32))),
	}
}
func defaultRegistryCallOptions() *RegistryCallOptions {
	return &RegistryCallOptions{
		ListApis: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		GetApi: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		CreateApi: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		UpdateApi: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		DeleteApi: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		ListApiVersions: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		GetApiVersion: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		CreateApiVersion: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		UpdateApiVersion: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		DeleteApiVersion: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		ListApiSpecs: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		GetApiSpec: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		GetApiSpecContents: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		CreateApiSpec: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		UpdateApiSpec: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		DeleteApiSpec: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		TagApiSpecRevision: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		ListApiSpecRevisions: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		RollbackApiSpec: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		DeleteApiSpecRevision: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		ListArtifacts: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		GetArtifact: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		GetArtifactContents: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		CreateArtifact: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		ReplaceArtifact: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
		DeleteArtifact: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
				}, gax.Backoff{
					Initial:    200 * time.Millisecond,
					Max:        10000 * time.Millisecond,
					Multiplier: 1.30,
				})
			}),
		},
	}
}
type internalRegistryClient interface {
	Close() error
	setGoogleClientInfo(...string)
	Connection() *grpc.ClientConn
	ListApis(context.Context, *rpcpb.ListApisRequest, ...gax.CallOption) *ApiIterator
	GetApi(context.Context, *rpcpb.GetApiRequest, ...gax.CallOption) (*rpcpb.Api, error)
	CreateApi(context.Context, *rpcpb.CreateApiRequest, ...gax.CallOption) (*rpcpb.Api, error)
	UpdateApi(context.Context, *rpcpb.UpdateApiRequest, ...gax.CallOption) (*rpcpb.Api, error)
	DeleteApi(context.Context, *rpcpb.DeleteApiRequest, ...gax.CallOption) error
	ListApiVersions(context.Context, *rpcpb.ListApiVersionsRequest, ...gax.CallOption) *ApiVersionIterator
	GetApiVersion(context.Context, *rpcpb.GetApiVersionRequest, ...gax.CallOption) (*rpcpb.ApiVersion, error)
	CreateApiVersion(context.Context, *rpcpb.CreateApiVersionRequest, ...gax.CallOption) (*rpcpb.ApiVersion, error)
	UpdateApiVersion(context.Context, *rpcpb.UpdateApiVersionRequest, ...gax.CallOption) (*rpcpb.ApiVersion, error)
	DeleteApiVersion(context.Context, *rpcpb.DeleteApiVersionRequest, ...gax.CallOption) error
	ListApiSpecs(context.Context, *rpcpb.ListApiSpecsRequest, ...gax.CallOption) *ApiSpecIterator
	GetApiSpec(context.Context, *rpcpb.GetApiSpecRequest, ...gax.CallOption) (*rpcpb.ApiSpec, error)
	GetApiSpecContents(context.Context, *rpcpb.GetApiSpecContentsRequest, ...gax.CallOption) (*httpbodypb.HttpBody, error)
	CreateApiSpec(context.Context, *rpcpb.CreateApiSpecRequest, ...gax.CallOption) (*rpcpb.ApiSpec, error)
	UpdateApiSpec(context.Context, *rpcpb.UpdateApiSpecRequest, ...gax.CallOption) (*rpcpb.ApiSpec, error)
	DeleteApiSpec(context.Context, *rpcpb.DeleteApiSpecRequest, ...gax.CallOption) error
	TagApiSpecRevision(context.Context, *rpcpb.TagApiSpecRevisionRequest, ...gax.CallOption) (*rpcpb.ApiSpec, error)
	ListApiSpecRevisions(context.Context, *rpcpb.ListApiSpecRevisionsRequest, ...gax.CallOption) *ApiSpecIterator
	RollbackApiSpec(context.Context, *rpcpb.RollbackApiSpecRequest, ...gax.CallOption) (*rpcpb.ApiSpec, error)
	DeleteApiSpecRevision(context.Context, *rpcpb.DeleteApiSpecRevisionRequest, ...gax.CallOption) (*rpcpb.ApiSpec, error)
	ListArtifacts(context.Context, *rpcpb.ListArtifactsRequest, ...gax.CallOption) *ArtifactIterator
	GetArtifact(context.Context, *rpcpb.GetArtifactRequest, ...gax.CallOption) (*rpcpb.Artifact, error)
	GetArtifactContents(context.Context, *rpcpb.GetArtifactContentsRequest, ...gax.CallOption) (*httpbodypb.HttpBody, error)
	CreateArtifact(context.Context, *rpcpb.CreateArtifactRequest, ...gax.CallOption) (*rpcpb.Artifact, error)
	ReplaceArtifact(context.Context, *rpcpb.ReplaceArtifactRequest, ...gax.CallOption) (*rpcpb.Artifact, error)
	DeleteArtifact(context.Context, *rpcpb.DeleteArtifactRequest, ...gax.CallOption) error
}
type RegistryClient struct {
	internalClient internalRegistryClient
	CallOptions *RegistryCallOptions
}
func (c *RegistryClient) Close() error {
	return c.internalClient.Close()
}
func (c *RegistryClient) setGoogleClientInfo(keyval ...string) {
	c.internalClient.setGoogleClientInfo(keyval...)
}
func (c *RegistryClient) Connection() *grpc.ClientConn {
	return c.internalClient.Connection()
}
func (c *RegistryClient) ListApis(ctx context.Context, req *rpcpb.ListApisRequest, opts ...gax.CallOption) *ApiIterator {
	return c.internalClient.ListApis(ctx, req, opts...)
}
func (c *RegistryClient) GetApi(ctx context.Context, req *rpcpb.GetApiRequest, opts ...gax.CallOption) (*rpcpb.Api, error) {
	return c.internalClient.GetApi(ctx, req, opts...)
}
func (c *RegistryClient) CreateApi(ctx context.Context, req *rpcpb.CreateApiRequest, opts ...gax.CallOption) (*rpcpb.Api, error) {
	return c.internalClient.CreateApi(ctx, req, opts...)
}
func (c *RegistryClient) UpdateApi(ctx context.Context, req *rpcpb.UpdateApiRequest, opts ...gax.CallOption) (*rpcpb.Api, error) {
	return c.internalClient.UpdateApi(ctx, req, opts...)
}
func (c *RegistryClient) DeleteApi(ctx context.Context, req *rpcpb.DeleteApiRequest, opts ...gax.CallOption) error {
	return c.internalClient.DeleteApi(ctx, req, opts...)
}
func (c *RegistryClient) ListApiVersions(ctx context.Context, req *rpcpb.ListApiVersionsRequest, opts ...gax.CallOption) *ApiVersionIterator {
	return c.internalClient.ListApiVersions(ctx, req, opts...)
}
func (c *RegistryClient) GetApiVersion(ctx context.Context, req *rpcpb.GetApiVersionRequest, opts ...gax.CallOption) (*rpcpb.ApiVersion, error) {
	return c.internalClient.GetApiVersion(ctx, req, opts...)
}
func (c *RegistryClient) CreateApiVersion(ctx context.Context, req *rpcpb.CreateApiVersionRequest, opts ...gax.CallOption) (*rpcpb.ApiVersion, error) {
	return c.internalClient.CreateApiVersion(ctx, req, opts...)
}
func (c *RegistryClient) UpdateApiVersion(ctx context.Context, req *rpcpb.UpdateApiVersionRequest, opts ...gax.CallOption) (*rpcpb.ApiVersion, error) {
	return c.internalClient.UpdateApiVersion(ctx, req, opts...)
}
func (c *RegistryClient) DeleteApiVersion(ctx context.Context, req *rpcpb.DeleteApiVersionRequest, opts ...gax.CallOption) error {
	return c.internalClient.DeleteApiVersion(ctx, req, opts...)
}
func (c *RegistryClient) ListApiSpecs(ctx context.Context, req *rpcpb.ListApiSpecsRequest, opts ...gax.CallOption) *ApiSpecIterator {
	return c.internalClient.ListApiSpecs(ctx, req, opts...)
}
func (c *RegistryClient) GetApiSpec(ctx context.Context, req *rpcpb.GetApiSpecRequest, opts ...gax.CallOption) (*rpcpb.ApiSpec, error) {
	return c.internalClient.GetApiSpec(ctx, req, opts...)
}
func (c *RegistryClient) GetApiSpecContents(ctx context.Context, req *rpcpb.GetApiSpecContentsRequest, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) {
	return c.internalClient.GetApiSpecContents(ctx, req, opts...)
}
func (c *RegistryClient) CreateApiSpec(ctx context.Context, req *rpcpb.CreateApiSpecRequest, opts ...gax.CallOption) (*rpcpb.ApiSpec, error) {
	return c.internalClient.CreateApiSpec(ctx, req, opts...)
}
func (c *RegistryClient) UpdateApiSpec(ctx context.Context, req *rpcpb.UpdateApiSpecRequest, opts ...gax.CallOption) (*rpcpb.ApiSpec, error) {
	return c.internalClient.UpdateApiSpec(ctx, req, opts...)
}