Help us shape the future of Go! Take the 2026 Go Developer Survey

ecrpublic

package
v1.8.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 20, 2026 License: MIT Imports: 24 Imported by: 0

README

Ecrpublic

Parity grade: A · SDK aws-sdk-go-v2/service/ecrpublic@v1.47.1 · last audited 2026-10-10 (5bb0d02ee)

Coverage

Metric Value
PARITY entries audited 23 (23 ok)
Feature families 6 (6 ok)
Known gaps none
Structural gaps (can't be emulated) 3
Deferred items 0
Resource leaks clean
Structural gaps

These do not block an A grade — no implementation could produce real data here because the underlying data source cannot exist in an emulator.

  • No Docker Registry v2 data plane: a docker push/pull addresses the repositoryUri host (public.ecr.aws//), which needs public DNS and TLS the emulator cannot own, and /v2/ on the emulator port is already claimed by services/ecr, whose embedded distribution registry is itself not coupled to its control-plane state. The layer/image control-plane ops are real (bytes buffered and SHA256-verified, manifests validated, tags tracked) but nothing serves blobs over /v2.
  • GetAuthorizationToken returns a stable AWS:password credential: with no registry to authenticate against there is nothing for a docker login to be checked by (same convention as services/ecr).
  • verified / marketplaceCertified badges are always false: they are set by the AWS Marketplace vendor-verification workflow, a human process no emulator can drive.

More

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrRepositoryNotFound       = awserr.New("RepositoryNotFoundException", awserr.ErrNotFound)
	ErrRepositoryAlreadyExists  = awserr.New("RepositoryAlreadyExistsException", awserr.ErrAlreadyExists)
	ErrRepositoryNotEmpty       = awserr.New("RepositoryNotEmptyException", awserr.ErrConflict)
	ErrRepositoryPolicyNotFound = awserr.New("RepositoryPolicyNotFoundException", awserr.ErrNotFound)
	ErrRegistryNotFound         = awserr.New("RegistryNotFoundException", awserr.ErrNotFound)
	ErrInvalidParameter         = awserr.New("InvalidParameterException", awserr.ErrInvalidParameter)
	ErrTooManyTags              = awserr.New("TooManyTagsException", awserr.ErrInvalidParameter)
	ErrInvalidTagParameter      = awserr.New("InvalidTagParameterException", awserr.ErrInvalidParameter)

	ErrUploadNotFound     = awserr.New("UploadNotFoundException", awserr.ErrNotFound)
	ErrEmptyUpload        = awserr.New("EmptyUploadException", awserr.ErrInvalidParameter)
	ErrLayerPartTooSmall  = awserr.New("LayerPartTooSmallException", awserr.ErrInvalidParameter)
	ErrInvalidLayerPart   = awserr.New("InvalidLayerPartException", awserr.ErrInvalidParameter)
	ErrLayerAlreadyExists = awserr.New("LayerAlreadyExistsException", awserr.ErrAlreadyExists)
	ErrLayersNotFound     = awserr.New("LayersNotFoundException", awserr.ErrInvalidParameter)
	ErrInvalidLayer       = awserr.New("InvalidLayerException", awserr.ErrInvalidParameter)

	ErrImageNotFound           = awserr.New("ImageNotFoundException", awserr.ErrNotFound)
	ErrImageAlreadyExists      = awserr.New("ImageAlreadyExistsException", awserr.ErrAlreadyExists)
	ErrImageDigestDoesNotMatch = awserr.New("ImageDigestDoesNotMatchException", awserr.ErrInvalidParameter)
	ErrImageTagAlreadyExists   = awserr.New("ImageTagAlreadyExistsException", awserr.ErrConflict)
	ErrReferencedImagesMissing = awserr.New("ReferencedImagesNotFoundException", awserr.ErrNotFound)
)

Sentinel errors, wrapped so callers can match with errors.Is while the message carries the real AWS exception name for classifyError.

View Source
var ErrNoSnapshot = errors.New("backend does not support restore")

ErrNoSnapshot is returned when a backend does not support snapshot/restore.

Functions

This section is empty.

Types

type AuthorizationDataWire

type AuthorizationDataWire struct {
	AuthorizationToken string  `json:"authorizationToken,omitempty"`
	ExpiresAt          float64 `json:"expiresAt,omitempty"`
}

AuthorizationDataWire mirrors types.AuthorizationData.

type Backend

type Backend interface {
	AccountID() string

	CreateRepository(name string, catalogData *CatalogData, tags map[string]string) (*Repository, error)
	DescribeRepositories(registryID string, names []string) ([]*Repository, error)
	DeleteRepository(registryID, name string, force bool) (*Repository, error)

	GetRepositoryCatalogData(registryID, name string) (*CatalogData, error)
	PutRepositoryCatalogData(registryID, name string, catalogData *CatalogData) (*CatalogData, error)

	GetRepositoryPolicy(registryID, name string) (string, error)
	SetRepositoryPolicy(registryID, name, policyText string) (string, error)
	DeleteRepositoryPolicy(registryID, name string) (string, error)

	TagResource(resourceARN string, tags map[string]string) error
	UntagResource(resourceARN string, tagKeys []string) error
	ListTagsForResource(resourceARN string) (map[string]string, error)

	DescribeRegistries() ([]RegistryInfo, error)
	GetRegistryCatalogData() (RegistryCatalogData, error)
	PutRegistryCatalogData(displayName string) (RegistryCatalogData, error)
	GetAuthorizationToken(ctx context.Context) (string, int64, error)

	DescribeImages(registryID, repositoryName string, imageIDs []ImageIdentifier) ([]ImageDetail, error)
	DescribeImageTags(registryID, repositoryName string) ([]ImageTagDetail, error)
	PutImage(registryID, repositoryName string, req PutImageRequest) (*Image, error)
	BatchDeleteImage(
		registryID, repositoryName string, imageIDs []ImageIdentifier,
	) ([]ImageIdentifier, []ImageFailure, error)

	BatchCheckLayerAvailability(
		registryID, repositoryName string, layerDigests []string,
	) ([]LayerInfo, []LayerFailure, error)
	InitiateLayerUpload(registryID, repositoryName string) (uploadID string, partSize int64, err error)
	UploadLayerPart(
		registryID, repositoryName, uploadID string, firstByte, lastByte int64, blob []byte,
	) (lastByteReceived int64, err error)
	CompleteLayerUpload(
		registryID, repositoryName, uploadID string, layerDigests []string,
	) (digest string, err error)

	Reset()
}

Backend is the interface for the Amazon ECR Public backend.

type CatalogData

type CatalogData struct {
	AboutText            string
	Description          string
	UsageText            string
	LogoImageBlob        []byte
	Architectures        []string
	OperatingSystems     []string
	MarketplaceCertified bool
}

CatalogData is the publicly-visible Gallery metadata for a repository.

type CatalogDataInputWire

type CatalogDataInputWire struct {
	AboutText        *string  `json:"aboutText,omitempty"`
	Description      *string  `json:"description,omitempty"`
	UsageText        *string  `json:"usageText,omitempty"`
	LogoImageBlob    []byte   `json:"logoImageBlob,omitempty"`
	Architectures    []string `json:"architectures,omitempty"`
	OperatingSystems []string `json:"operatingSystems,omitempty"`
}

CatalogDataInputWire mirrors types.RepositoryCatalogDataInput.

type CatalogDataWire

type CatalogDataWire struct {
	AboutText            string   `json:"aboutText,omitempty"`
	Description          string   `json:"description,omitempty"`
	LogoURL              string   `json:"logoUrl,omitempty"`
	UsageText            string   `json:"usageText,omitempty"`
	Architectures        []string `json:"architectures,omitempty"`
	OperatingSystems     []string `json:"operatingSystems,omitempty"`
	MarketplaceCertified bool     `json:"marketplaceCertified,omitempty"`
}

CatalogDataWire mirrors types.RepositoryCatalogData.

type Handler

type Handler struct {
	Backend Backend

	AccountID     string
	DefaultRegion string
	// contains filtered or unexported fields
}

Handler is the HTTP handler for the Amazon ECR Public control-plane API.

func NewHandler

func NewHandler(backend Backend) *Handler

NewHandler creates a new Amazon ECR Public handler.

func (*Handler) ChaosOperations

func (h *Handler) ChaosOperations() []string

ChaosOperations returns all operations that can be fault-injected.

func (*Handler) ChaosRegions

func (h *Handler) ChaosRegions() []string

ChaosRegions returns all regions this handler handles. Amazon ECR Public is us-east-1-only, matching the real service.

func (*Handler) ChaosServiceName

func (h *Handler) ChaosServiceName() string

ChaosServiceName returns the lowercase AWS service name for fault rule matching.

func (*Handler) ExtractOperation

func (h *Handler) ExtractOperation(c *echo.Context) string

ExtractOperation extracts the action name from the X-Amz-Target header.

func (*Handler) ExtractResource

func (h *Handler) ExtractResource(c *echo.Context) string

ExtractResource extracts the repository name from the request body, when present.

func (*Handler) GetSupportedOperations

func (h *Handler) GetSupportedOperations() []string

GetSupportedOperations returns the list of supported operations, matching aws-sdk-go-v2/service/ecrpublic@v1.47.1's client method set exactly.

func (*Handler) Handler

func (h *Handler) Handler() echo.HandlerFunc

Handler returns the Echo handler function for Amazon ECR Public requests.

func (*Handler) MatchPriority

func (h *Handler) MatchPriority() int

MatchPriority returns the routing priority for header-exact matching.

func (*Handler) Name

func (h *Handler) Name() string

Name returns the service name.

func (*Handler) Reset

func (h *Handler) Reset()

Reset clears backend state.

func (*Handler) Restore

func (h *Handler) Restore(ctx context.Context, data []byte) error

Restore implements persistence by delegating to the backend if it supports it.

func (*Handler) RouteMatcher

func (h *Handler) RouteMatcher() service.Matcher

RouteMatcher matches requests carrying the SpencerFrontendService X-Amz-Target prefix.

func (*Handler) Snapshot

func (h *Handler) Snapshot(ctx context.Context) []byte

Snapshot implements persistence by delegating to the backend if it supports it.

type Image

type Image struct {
	ImagePushedAt          time.Time
	RepositoryName         string
	ImageDigest            string
	ImageManifest          string
	ImageManifestMediaType string
	ArtifactMediaType      string
	RegistryID             string
	ImageSizeInBytes       int64
}

Image is the domain model for a pushed image manifest, keyed by (repository, digest) via imageTableKey.

type ImageDetail

type ImageDetail struct {
	ImagePushedAt          time.Time
	ArtifactMediaType      string
	ImageDigest            string
	ImageManifestMediaType string
	RegistryID             string
	RepositoryName         string
	ImageTags              []string
	ImageSizeInBytes       int64
}

ImageDetail is a computed, request-time view of an Image annotated with its current tags; it is not itself persisted state.

type ImageDetailWire

type ImageDetailWire struct {
	ArtifactMediaType      string   `json:"artifactMediaType,omitempty"`
	ImageDigest            string   `json:"imageDigest,omitempty"`
	ImageManifestMediaType string   `json:"imageManifestMediaType,omitempty"`
	RegistryID             string   `json:"registryId,omitempty"`
	RepositoryName         string   `json:"repositoryName,omitempty"`
	ImageTags              []string `json:"imageTags,omitempty"`
	ImagePushedAt          float64  `json:"imagePushedAt,omitempty"`
	ImageSizeInBytes       int64    `json:"imageSizeInBytes,omitempty"`
}

ImageDetailWire mirrors types.ImageDetail.

type ImageFailure

type ImageFailure struct {
	ImageID       ImageIdentifier
	FailureCode   string
	FailureReason string
}

ImageFailure describes an image that BatchDeleteImage could not process.

type ImageFailureWire

type ImageFailureWire struct {
	FailureCode   string              `json:"failureCode,omitempty"`
	FailureReason string              `json:"failureReason,omitempty"`
	ImageID       ImageIdentifierWire `json:"imageId"`
}

ImageFailureWire mirrors types.ImageFailure.

type ImageIdentifier

type ImageIdentifier struct {
	ImageDigest string
	ImageTag    string
}

ImageIdentifier identifies an image by digest, tag, or both.

type ImageIdentifierWire

type ImageIdentifierWire struct {
	ImageDigest string `json:"imageDigest,omitempty"`
	ImageTag    string `json:"imageTag,omitempty"`
}

ImageIdentifierWire mirrors types.ImageIdentifier.

type ImageTagDetail

type ImageTagDetail struct {
	CreatedAt              time.Time
	ImagePushedAt          time.Time
	ImageTag               string
	ArtifactMediaType      string
	ImageDigest            string
	ImageManifestMediaType string
	ImageSizeInBytes       int64
}

ImageTagDetail is a computed, request-time view of a single tag binding.

type ImageTagDetailWire

type ImageTagDetailWire struct {
	ImageDetail *ReferencedImageDetailWire `json:"imageDetail,omitempty"`
	ImageTag    string                     `json:"imageTag,omitempty"`
	CreatedAt   float64                    `json:"createdAt,omitempty"`
}

ImageTagDetailWire mirrors types.ImageTagDetail.

type ImageWire

type ImageWire struct {
	ImageID                ImageIdentifierWire `json:"imageId"`
	ImageManifest          string              `json:"imageManifest,omitempty"`
	ImageManifestMediaType string              `json:"imageManifestMediaType,omitempty"`
	RegistryID             string              `json:"registryId,omitempty"`
	RepositoryName         string              `json:"repositoryName,omitempty"`
}

ImageWire mirrors types.Image.

type InMemoryBackend

type InMemoryBackend struct {
	// contains filtered or unexported fields
}

InMemoryBackend is the in-memory implementation of Backend. Amazon ECR Public is a single-region (us-east-1), single-registry-per-account service: there is no per-region partitioning of repositories, matching the real API.

func NewInMemoryBackend

func NewInMemoryBackend(accountID, region string) *InMemoryBackend

NewInMemoryBackend creates a new Amazon ECR Public backend for accountID.

func (*InMemoryBackend) AccountID

func (b *InMemoryBackend) AccountID() string

AccountID returns the AWS account ID this backend is configured for.

func (*InMemoryBackend) BatchCheckLayerAvailability

func (b *InMemoryBackend) BatchCheckLayerAvailability(
	registryID, repositoryName string, layerDigests []string,
) ([]LayerInfo, []LayerFailure, error)

BatchCheckLayerAvailability reports which of the given layer digests have already been uploaded (via a completed InitiateLayerUpload session) to repositoryName.

func (*InMemoryBackend) BatchDeleteImage

func (b *InMemoryBackend) BatchDeleteImage(
	registryID, repositoryName string, imageIDs []ImageIdentifier,
) ([]ImageIdentifier, []ImageFailure, error)

BatchDeleteImage deletes images by digest (removing every tag bound to it) or by tag (removing only that binding; the image survives if another tag still references it).

func (*InMemoryBackend) CompleteLayerUpload

func (b *InMemoryBackend) CompleteLayerUpload(
	registryID, repositoryName, uploadID string, layerDigests []string,
) (string, error)

CompleteLayerUpload finalizes an upload session, computing (and, if the caller supplied one, verifying) the layer's SHA256 digest.

func (*InMemoryBackend) CreateRepository

func (b *InMemoryBackend) CreateRepository(
	name string, catalogData *CatalogData, tags map[string]string,
) (*Repository, error)

CreateRepository creates a new public repository under the caller's account.

func (*InMemoryBackend) DeleteRepository

func (b *InMemoryBackend) DeleteRepository(registryID, name string, force bool) (*Repository, error)

DeleteRepository deletes a repository. Non-empty repositories are rejected unless force is set, matching AWS.

func (*InMemoryBackend) DeleteRepositoryPolicy

func (b *InMemoryBackend) DeleteRepositoryPolicy(registryID, name string) (string, error)

DeleteRepositoryPolicy deletes the repository's resource policy, returning the deleted policy text.

func (*InMemoryBackend) DescribeImageTags

func (b *InMemoryBackend) DescribeImageTags(registryID, repositoryName string) ([]ImageTagDetail, error)

DescribeImageTags returns one ImageTagDetail per tag currently bound in the repository.

func (*InMemoryBackend) DescribeImages

func (b *InMemoryBackend) DescribeImages(
	registryID, repositoryName string, imageIDs []ImageIdentifier,
) ([]ImageDetail, error)

DescribeImages returns image details for a repository, optionally filtered by digest or tag.

func (*InMemoryBackend) DescribeRegistries

func (b *InMemoryBackend) DescribeRegistries() ([]RegistryInfo, error)

DescribeRegistries returns the public registries visible to the caller. This is a single-tenant emulator: it always returns exactly the caller's own registry, never other accounts' registries (there is no cross-account Gallery directory modeled here -- see PARITY.md).

func (*InMemoryBackend) DescribeRepositories

func (b *InMemoryBackend) DescribeRepositories(registryID string, names []string) ([]*Repository, error)

DescribeRepositories returns repositories in the given registry, optionally filtered by name. An unknown name in a non-empty filter is a hard error, matching AWS.

func (*InMemoryBackend) GetAuthorizationToken

func (b *InMemoryBackend) GetAuthorizationToken(_ context.Context) (string, int64, error)

GetAuthorizationToken returns a base64(user:password) authorization token and its expiry. The emulator does not model per-principal credentials -- every caller gets the same stable token, honestly reflecting that this is not a real authentication backend (see PARITY.md).

func (*InMemoryBackend) GetRegistryCatalogData

func (b *InMemoryBackend) GetRegistryCatalogData() (RegistryCatalogData, error)

GetRegistryCatalogData returns the account-wide Gallery display metadata.

func (*InMemoryBackend) GetRepositoryCatalogData

func (b *InMemoryBackend) GetRepositoryCatalogData(registryID, name string) (*CatalogData, error)

GetRepositoryCatalogData returns the Gallery-visible catalog metadata for a repository.

func (*InMemoryBackend) GetRepositoryPolicy

func (b *InMemoryBackend) GetRepositoryPolicy(registryID, name string) (string, error)

GetRepositoryPolicy returns the repository's resource policy text.

func (*InMemoryBackend) InitiateLayerUpload

func (b *InMemoryBackend) InitiateLayerUpload(registryID, repositoryName string) (string, int64, error)

InitiateLayerUpload starts a new layer upload session for repositoryName.

func (*InMemoryBackend) ListTagsForResource

func (b *InMemoryBackend) ListTagsForResource(resourceARN string) (map[string]string, error)

ListTagsForResource returns all tags on a repository.

func (*InMemoryBackend) PutImage

func (b *InMemoryBackend) PutImage(registryID, repositoryName string, req PutImageRequest) (*Image, error)

PutImage creates or replaces an image manifest, verifying that every layer (and config blob) it references was already uploaded via BatchCheckLayerAvailability/CompleteLayerUpload.

func (*InMemoryBackend) PutRegistryCatalogData

func (b *InMemoryBackend) PutRegistryCatalogData(displayName string) (RegistryCatalogData, error)

PutRegistryCatalogData replaces the account-wide Gallery display metadata.

func (*InMemoryBackend) PutRepositoryCatalogData

func (b *InMemoryBackend) PutRepositoryCatalogData(
	registryID, name string, catalogData *CatalogData,
) (*CatalogData, error)

PutRepositoryCatalogData replaces the Gallery-visible catalog metadata for a repository.

func (*InMemoryBackend) Reset

func (b *InMemoryBackend) Reset()

Reset clears all backend state.

func (*InMemoryBackend) Restore

func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error

Restore deserializes backend state from a JSON snapshot.

func (*InMemoryBackend) SetRepositoryPolicy

func (b *InMemoryBackend) SetRepositoryPolicy(registryID, name, policyText string) (string, error)

SetRepositoryPolicy sets or replaces the repository's resource policy text.

func (*InMemoryBackend) Snapshot

func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte

Snapshot serializes backend state to JSON.

func (*InMemoryBackend) TagResource

func (b *InMemoryBackend) TagResource(resourceARN string, tags map[string]string) error

TagResource adds or replaces tags on a repository.

func (*InMemoryBackend) UntagResource

func (b *InMemoryBackend) UntagResource(resourceARN string, tagKeys []string) error

UntagResource removes tags from a repository by key.

func (*InMemoryBackend) UploadLayerPart

func (b *InMemoryBackend) UploadLayerPart(
	registryID, repositoryName, uploadID string, firstByte, lastByte int64, blob []byte,
) (int64, error)

UploadLayerPart appends a chunk of layer bytes to a live upload session. AWS requires each part's first byte to be consecutive to the bytes already received; a gap or overlap is rejected with InvalidLayerPartException.

type LayerFailure

type LayerFailure struct {
	LayerDigest   string
	FailureCode   string
	FailureReason string
}

LayerFailure describes a layer digest BatchCheckLayerAvailability could not find.

type LayerFailureWire

type LayerFailureWire struct {
	FailureCode   string `json:"failureCode,omitempty"`
	FailureReason string `json:"failureReason,omitempty"`
	LayerDigest   string `json:"layerDigest,omitempty"`
}

LayerFailureWire mirrors types.LayerFailure.

type LayerInfo

type LayerInfo struct {
	LayerDigest       string
	LayerAvailability string
	MediaType         string
	LayerSize         int64
}

LayerInfo describes an available image layer.

type LayerWire

type LayerWire struct {
	LayerAvailability string `json:"layerAvailability,omitempty"`
	LayerDigest       string `json:"layerDigest,omitempty"`
	MediaType         string `json:"mediaType,omitempty"`
	LayerSize         int64  `json:"layerSize,omitempty"`
}

LayerWire mirrors types.Layer.

type Provider

type Provider struct{}

Provider implements service.Provider for Amazon ECR Public.

func (*Provider) Init

Init initializes the Amazon ECR Public service backend and handler. Public repositories are a us-east-1-only service in real AWS, so the backend is always constructed for that region regardless of the configured default.

func (*Provider) Name

func (p *Provider) Name() string

Name returns the provider name.

type PutImageRequest

type PutImageRequest struct {
	ImageDigest            string
	ImageManifest          string
	ImageManifestMediaType string
	ImageTag               string
}

PutImageRequest carries the fields PutImage needs from the wire request.

type ReferencedImageDetailWire

type ReferencedImageDetailWire struct {
	ArtifactMediaType      string  `json:"artifactMediaType,omitempty"`
	ImageDigest            string  `json:"imageDigest,omitempty"`
	ImageManifestMediaType string  `json:"imageManifestMediaType,omitempty"`
	ImagePushedAt          float64 `json:"imagePushedAt,omitempty"`
	ImageSizeInBytes       int64   `json:"imageSizeInBytes,omitempty"`
}

ReferencedImageDetailWire mirrors types.ReferencedImageDetail.

type RegistryAliasInfo

type RegistryAliasInfo struct {
	Name                 string
	Status               string
	DefaultRegistryAlias bool
	PrimaryRegistryAlias bool
}

RegistryAliasInfo describes one alias of a public registry.

type RegistryAliasWire

type RegistryAliasWire struct {
	Name                 string `json:"name"`
	Status               string `json:"status"`
	DefaultRegistryAlias bool   `json:"defaultRegistryAlias"`
	PrimaryRegistryAlias bool   `json:"primaryRegistryAlias"`
}

RegistryAliasWire mirrors types.RegistryAlias.

type RegistryCatalogData

type RegistryCatalogData struct {
	DisplayName string
}

RegistryCatalogData is the account-wide Gallery display metadata.

type RegistryCatalogDataWire

type RegistryCatalogDataWire struct {
	DisplayName string `json:"displayName,omitempty"`
}

RegistryCatalogDataWire mirrors types.RegistryCatalogData.

type RegistryInfo

type RegistryInfo struct {
	RegistryArn string
	RegistryID  string
	RegistryURI string
	Aliases     []RegistryAliasInfo
	Verified    bool
}

RegistryInfo describes a public registry, computed from backend state.

type RegistryWire

type RegistryWire struct {
	RegistryArn string              `json:"registryArn"`
	RegistryID  string              `json:"registryId"`
	RegistryURI string              `json:"registryUri"`
	Aliases     []RegistryAliasWire `json:"aliases"`
	Verified    bool                `json:"verified"`
}

RegistryWire mirrors types.Registry.

type Repository

type Repository struct {
	CreatedAt      time.Time
	Tags           map[string]string
	RepositoryName string
	RepositoryArn  string
	RegistryID     string
	RepositoryURI  string
	PolicyText     string
	CatalogData    CatalogData
	HasPolicy      bool
}

Repository is the domain model for a public ECR repository.

type RepositoryWire

type RepositoryWire struct {
	RegistryID     string  `json:"registryId,omitempty"`
	RepositoryArn  string  `json:"repositoryArn,omitempty"`
	RepositoryName string  `json:"repositoryName,omitempty"`
	RepositoryURI  string  `json:"repositoryUri,omitempty"`
	CreatedAt      float64 `json:"createdAt,omitempty"`
}

RepositoryWire mirrors types.Repository.

type Snapshottable

type Snapshottable interface {
	Snapshot(ctx context.Context) []byte
	Restore(context.Context, []byte) error
}

Snapshottable is an optional interface a Backend may implement to support snapshot/restore for persistence or test isolation.

type TagWire

type TagWire struct {
	Key   string `json:"Key"`
	Value string `json:"Value"`
}

TagWire mirrors types.Tag.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL