charmrepo.v3: Index | Files

package params

import ""

The params package holds types that are a part of the charm store's external contract - they will be marshalled (or unmarshalled) as JSON and delivered through the HTTP API.


Package Files

error.go helpers.go params.go stats.go


const (
    // ContentHashHeader specifies the header attribute
    // that will hold the content hash for archive GET responses.
    ContentHashHeader = "Content-Sha384"

    // EntityIdHeader specifies the header attribute that will hold the
    // id of the entity for archive GET responses.
    EntityIdHeader = "Entity-Id"
const (
    Everyone = "everyone"
    Admin    = "admin"

Special user/group names.

const (
    // BzrDigestKey is the extra-info key used to store the Bazaar digest
    BzrDigestKey = "bzr-digest"

    // LegacyDownloadStats is the extra-info key used to store the legacy
    // download counts, and to retrieve them when
    // charmstore.LegacyDownloadCountsEnabled is set to true.
    // TODO (frankban): remove this constant when removing the legacy counts
    // logic.
    LegacyDownloadStats = "legacy-download-stats"
const (
    IngestionType        LogType = "ingestion"
    LegacyStatisticsType LogType = "legacyStatistics"

    IngestionStart    = "ingestion started"
    IngestionComplete = "ingestion completed"

    LegacyStatisticsImportStart    = "legacy statistics import started"
    LegacyStatisticsImportComplete = "legacy statistics import completed"
const (
    StatsArchiveDownload            = "archive-download"
    StatsArchiveDownloadPromulgated = "archive-download-promulgated"
    StatsArchiveDelete              = "archive-delete"
    StatsArchiveFailedUpload        = "archive-failed-upload"
    StatsArchiveUpload              = "archive-upload"
    // The following kinds are in use in the legacy API.
    StatsCharmInfo    = "charm-info"
    StatsCharmMissing = "charm-missing"
    StatsCharmEvent   = "charm-event"

Define the kinds to be included in stats keys.


var OrderedChannels = []Channel{

OrderedChannels holds the list of valid channels in order of publishing status, most stable first.

var ValidChannels = func() map[Channel]bool {
    channels := make(map[Channel]bool, len(OrderedChannels))
    for _, ch := range OrderedChannels {
        channels[ch] = true
    return channels

ValidChannels holds the set of all allowed channels for an entity.

func API2Resource Uses

func API2Resource(apiInfo Resource) (resource.Resource, error)

API2Resource converts an API Resource struct into a charm resource.

func MaybeTermsAgreementError Uses

func MaybeTermsAgreementError(err error) error

MaybeTermsAgreementError returns err as a *TermAgreementRequiredError if it has a "terms agreement required" error code, otherwise it returns err unchanged.

func NewError Uses

func NewError(code ErrorCode, f string, a ...interface{}) error

NewError returns a new *Error with the given error code and message.

type AllPermsResponse Uses

type AllPermsResponse struct {
    Perms map[Channel]PermResponse

AllPermsResponse holds the resource of an id/allperms GET request.

type ArchiveSizeResponse Uses

type ArchiveSizeResponse struct {
    Size int64

ArchiveSizeResponse holds the result of an id/meta/archive-size GET request. See

type ArchiveUploadResponse Uses

type ArchiveUploadResponse struct {
    Id            *charm.URL
    PromulgatedId *charm.URL `json:",omitempty"`

ArchiveUploadResponse holds the result of a post or a put to /id/archive. See

type ArchiveUploadTimeResponse Uses

type ArchiveUploadTimeResponse struct {
    UploadTime time.Time

ArchiveUploadTimeResponse holds the result of an id/meta/archive-upload-time GET request. See

type BundleCount Uses

type BundleCount struct {
    Count int

BundleCount holds the result of an id/meta/bundle-unit-count or bundle-machine-count GET request. See and

type CanIngestResponse Uses

type CanIngestResponse struct {
    CanIngest bool

CanIngestResponse holds the result of an id/meta/can-ingest GET request. See

type CanWriteResponse Uses

type CanWriteResponse struct {
    CanWrite bool

CanWriteResponse holds the result of an id/meta/can-write GET request. See

type Channel Uses

type Channel string

Channel is the name of a channel in which an entity may be published.

const (
    // EdgeChannel is the channel used for charms or bundles under development.
    EdgeChannel Channel = "edge"

    // BetaChannel is the channel used for beta charms or bundles.
    BetaChannel Channel = "beta"

    // CandidateChannel is the channel used for charms or bundles release
    // candidates.
    CandidateChannel Channel = "candidate"

    // StableChannel is the channel used for stable charms or bundles.
    StableChannel Channel = "stable"

    // UnpublishedChannel is the default channel to which charms are uploaded.
    UnpublishedChannel Channel = "unpublished"

    // NoChannel represents where no channel has been specifically requested.
    NoChannel Channel = ""

    // DevelopmentChannel is only defined for backward compatibility.
    DevelopmentChannel Channel = "development"

type CharmRevision Uses

type CharmRevision struct {
    Revision int
    Sha256   string
    Err      error

CharmRevision holds the revision number of a charm and any error encountered in retrieving it.

type DebugStatus Uses

type DebugStatus debugstatus.CheckResult

DebugStatus holds the result of the status checks. This is defined for backward compatibility: new clients should use debugstatus.CheckResult directly.

type DockerInfoResponse Uses

type DockerInfoResponse struct {
    // ImageName holds the image name (including host) of the resource in the docker registry.
    ImageName string

    // Username holds the username to use in the docker auth information.
    // (see
    Username string

    // Password holds the password to use in the docker auth information.
    Password string

DockerInfoResponse holds the result of a get of /:id/resources/:name/docker-info

type DockerResourceUploadRequest Uses

type DockerResourceUploadRequest struct {
    // ImageName holds the image name when it's an external image not
    // contained within the charm store's registry. If this is empty, the
    // image should have been uploaded to the charm store's registry.
    ImageName string
    // Digest holds the digest of the image, in the form "sha256:hexbytes".
    Digest string

DockerResourceUploadRequest holds the body of a POST to /:id/resources/:name when the resource is a docker image.

type EntityResult Uses

type EntityResult struct {
    Id  *charm.URL
    // Meta holds at most one entry for each meta value
    // specified in the include flags, holding the
    // data that would be returned by reading /meta/meta?id=id.
    // Metadata not relevant to a particular result will not
    // be included.
    Meta map[string]interface{} `json:",omitempty"`

EntityResult holds a the resolved entity ID along with any requested metadata.

type Error Uses

type Error struct {
    Message string
    Code    ErrorCode
    Info    map[string]*Error `json:",omitempty"`

Error represents an error - it is returned for any response that fails. See

func (*Error) Cause Uses

func (e *Error) Cause() error

Cause implements errgo.Causer.Cause.

func (*Error) Error Uses

func (e *Error) Error() string

Error implements error.Error.

func (*Error) ErrorCode Uses

func (e *Error) ErrorCode() string

ErrorCode holds the class of the error in machine readable format.

func (*Error) ErrorInfo Uses

func (e *Error) ErrorInfo() map[string]*Error

ErrorInfo returns additional info on the error. TODO(rog) rename this so that it more accurately reflects its role.

type ErrorCode Uses

type ErrorCode string

ErrorCode holds the class of an error in machine-readable format. It is also an error in its own right.

const (
    // ErrOther is used as an error code when the
    // charmstore returns an empty error code.
    ErrOther            ErrorCode = "other charmstore error"
    ErrNotFound         ErrorCode = "not found"
    ErrMetadataNotFound ErrorCode = "metadata not found"
    ErrForbidden        ErrorCode = "forbidden"
    ErrBadRequest       ErrorCode = "bad request"
    // TODO change to ErrAlreadyExists
    ErrDuplicateUpload    ErrorCode = "duplicate upload"
    ErrMultipleErrors     ErrorCode = "multiple errors"
    ErrUnauthorized       ErrorCode = "unauthorized"
    ErrMethodNotAllowed   ErrorCode = "method not allowed"
    ErrServiceUnavailable ErrorCode = "service unavailable"
    ErrEntityIdNotAllowed ErrorCode = "charm or bundle id not allowed"
    ErrInvalidEntity      ErrorCode = "invalid charm or bundle"
    ErrReadOnly           ErrorCode = "charmstore is in read-only mode"

func (ErrorCode) Error Uses

func (code ErrorCode) Error() string

func (ErrorCode) ErrorCode Uses

func (code ErrorCode) ErrorCode() ErrorCode

type ExpandedId Uses

type ExpandedId struct {
    Id string

ExpandedId holds a charm or bundle fully qualified id. A slice of ExpandedId is used as response for id/expand-id GET requests.

type FinishUploadResponse Uses

type FinishUploadResponse struct {
    // Hash holds the SHA384 hash of the complete blob. (hex-encoded)
    Hash string

FinishUploadResponse holds the response to a put /upload/upload-id/part-number request.

type HashResponse Uses

type HashResponse struct {
    Sum string

HashResponse holds the result of id/meta/hash and id/meta/hash256 GET requests. See and

type IdNameResponse Uses

type IdNameResponse struct {
    Name string

IdNameResponse holds the result of an id/meta/id-name GET request. See

type IdResponse Uses

type IdResponse struct {
    Id       *charm.URL
    User     string `json:",omitempty"`
    Series   string `json:",omitempty"`
    Name     string
    Revision int

IdResponse holds the result of an id/meta/id GET request. See

type IdRevisionResponse Uses

type IdRevisionResponse struct {
    Revision int

IdRevisionResponse holds the result of an id/meta/id-revision GET request. See

type IdSeriesResponse Uses

type IdSeriesResponse struct {
    Series string

IdSeriesResponse holds the result of an id/meta/id-series GET request. See

type IdUserResponse Uses

type IdUserResponse struct {
    User string

IdUserResponse holds the result of an id/meta/id-user GET request. See

type ListResponse Uses

type ListResponse struct {
    Results []EntityResult

ListResponse holds the response from a list operation.

type Log Uses

type Log struct {
    // Data holds the log message as a JSON-encoded value.
    Data *json.RawMessage

    // Level holds the log level as a string.
    Level LogLevel

    // Type holds the log type as a string.
    Type LogType

    // URLs holds a slice of entity URLs associated with the log message.
    URLs []*charm.URL `json:",omitempty"`

Log holds the representation of a log message. This is used by clients to store log events in the charm store.

type LogLevel Uses

type LogLevel string

LogLevel defines log levels (e.g. "info" or "error") to be used in log requests and responses.

const (
    InfoLevel    LogLevel = "info"
    WarningLevel LogLevel = "warning"
    ErrorLevel   LogLevel = "error"

type LogResponse Uses

type LogResponse struct {
    // Data holds the log message as a JSON-encoded value.
    Data json.RawMessage

    // Level holds the log level as a string.
    Level LogLevel

    // Type holds the log type as a string.
    Type LogType

    // URLs holds a slice of entity URLs associated with the log message.
    URLs []*charm.URL `json:",omitempty"`

    // Time holds the time of the log.
    Time time.Time

LogResponse represents a single log message and is used in the responses to /log GET requests. See

type LogType Uses

type LogType string

LogType defines log types (e.g. "ingestion") to be used in log requests and responses.

type ManifestFile Uses

type ManifestFile struct {
    Name string
    Size int64

ManifestFile holds information about a charm or bundle file. A slice of ManifestFile is used as response for id/meta/manifest GET requests. See

type MetaAnyResponse Uses

type MetaAnyResponse EntityResult

MetaAnyResponse holds the result of a meta/any request. See

type NewUploadResponse Uses

type NewUploadResponse UploadInfoResponse

NewUploadResponse holds the response from a POST request to /upload. TODO remove this when the charmstore code no longer requires it.

type Part Uses

type Part struct {
    // Hash holds the SHA384 hash of the part.
    Hash string
    // Size holds the size of the part.
    Size int64
    // Offset holds the offset of the part from the start
    // of the file.
    Offset int64
    // Complete holds whether the part has been
    // successfully uploaded.
    Complete bool

Part represents one part of a multipart blob.

type Parts Uses

type Parts struct {
    Parts []Part

Parts holds a list of all the parts that are required by a multipart upload, as required by a PUT request to /upload/$upload-id.

type PermRequest Uses

type PermRequest struct {
    Read  []string
    Write []string

PermRequest holds the request of an id/meta/perm PUT request. See

type PermResponse Uses

type PermResponse struct {
    Read  []string
    Write []string

PermResponse holds the result of an id/meta/perm GET request. See

type PromulgateRequest Uses

type PromulgateRequest struct {
    Promulgated bool

PromulgateRequest holds the request of an id/promulgate PUT request. See

type PromulgatedResponse Uses

type PromulgatedResponse struct {
    Promulgated bool

PromulgatedResponse holds the result of an id/meta/promulgated GET request. See

type PublishRequest Uses

type PublishRequest struct {
    Channels []Channel
    // Resources defines the resource revisions to use for the charm.
    // Each resource in the charm's metadata.yaml (if any) must have its
    // name mapped to a revision. That revision must be one of the
    // existing revisions for that resource.
    Resources map[string]int `json:",omitempty"`

PublishRequest holds the request of an id/publish PUT request. See

type PublishResponse Uses

type PublishResponse struct {
    Id            *charm.URL
    PromulgatedId *charm.URL `json:",omitempty"`

PublishResponse holds the result of an id/publish PUT request. See

type Published Uses

type Published struct {
    Id          *charm.URL
    PublishTime time.Time

Published holds the result of a changes/published GET request. See

type PublishedInfo Uses

type PublishedInfo struct {
    // Channel holds the value of the channel that
    // the entity has been published to.
    // This will never be "unpublished" as entities
    // cannot be published to that channel.
    Channel Channel

    // Current holds whether the entity is the most
    // recently published member of the channel.
    Current bool

PublishedInfo holds information on a channel that an entity has been published to.

type PublishedResponse Uses

type PublishedResponse struct {
    // Channels holds an entry for each channel that the
    // entity has been published to.
    Info []PublishedInfo

PublishedResponse holds the result of an id/meta/published GET request.

type RelatedResponse Uses

type RelatedResponse struct {
    // Requires holds an entry for each interface provided by
    // the charm, containing all charms that require that interface.
    Requires map[string][]EntityResult `json:",omitempty"`

    // Provides holds an entry for each interface required by the
    // the charm, containing all charms that provide that interface.
    Provides map[string][]EntityResult `json:",omitempty"`

RelatedResponse holds the result of an id/meta/charm-related GET request. See

type Resource Uses

type Resource struct {
    // Name identifies the resource.
    Name string

    // Type is the name of the resource type.
    Type string

    // Path is where the resource will be stored.
    Path string

    // Description contains user-facing info about the resource.
    Description string `json:",omitempty"`

    // Revision is the revision, if applicable.
    Revision int

    // Fingerprint is the SHA-384 checksum for the resource blob.
    Fingerprint []byte

    // Size is the size of the resource, in bytes.
    Size int64

Resource describes a resource in the charm store.

func Resource2API Uses

func Resource2API(res resource.Resource) Resource

Resource2API converts a charm resource into an API Resource struct.

type ResourceUploadResponse Uses

type ResourceUploadResponse struct {
    Revision int

ResourceUploadResponse holds the result of a post or a put to /id/resources/name.

type RevisionInfoResponse Uses

type RevisionInfoResponse struct {
    Revisions []*charm.URL

RevisionInfoResponse holds the result of an id/meta/revision-info GET request. See

type SearchResponse Uses

type SearchResponse struct {
    SearchTime time.Duration
    Total      int
    Results    []EntityResult

SearchResponse holds the response from a search operation.

type SetAuthCookie Uses

type SetAuthCookie struct {
    // Macaroons holds a slice of macaroons.
    Macaroons macaroon.Slice

SetAuthCookie holds the parameters used to make a set-auth-cookie request to the charm store.

type Statistic Uses

type Statistic struct {
    Key   string `json:",omitempty"`
    Date  string `json:",omitempty"`
    Count int64

Statistic holds one element of a stats/counter response. See

type StatsCount Uses

type StatsCount struct {
    Total int64 // Total count over all time.
    Day   int64 // Count over the last day.
    Week  int64 // Count over the last week.
    Month int64 // Count over the last month.

StatsCount holds stats counts and is used as part of StatsResponse.

type StatsResponse Uses

type StatsResponse struct {
    // ArchiveDownloadCount is superceded by ArchiveDownload but maintained for
    // backward compatibility.
    ArchiveDownloadCount int64
    // ArchiveDownload holds the downloads count for a specific revision of the
    // entity.
    ArchiveDownload StatsCount
    // ArchiveDownloadAllRevisions holds the downloads count for all revisions
    // of the entity.
    ArchiveDownloadAllRevisions StatsCount

StatsResponse holds the result of an id/meta/stats GET request. See

type StatsUpdateEntry Uses

type StatsUpdateEntry struct {
    Timestamp      time.Time       // Time when the update did happen.
    Type           StatsUpdateType // One of the constant Download, Traffic or Deploy.
    CharmReference *charm.URL      // The charm to be updated.

StatsUpdateEntry holds an entry of the StatsUpdateRequest for a put to /stats/update. See

type StatsUpdateRequest Uses

type StatsUpdateRequest struct {
    Entries []StatsUpdateEntry

StatsUpdateRequest holds the parameters for a put to /stats/update. See

type StatsUpdateType Uses

type StatsUpdateType string

Constants for the StatsUpdateRequest

const (
    UpdateDownload StatsUpdateType = "download" // Accesses with non listed clients and web browsers.
    UpdateTraffic  StatsUpdateType = "traffic"  // Bots and unknown clients.
    UpdateDeploy   StatsUpdateType = "deploy"   // known clients like juju client.

type SupportedSeriesResponse Uses

type SupportedSeriesResponse struct {
    SupportedSeries []string

SupportedSeries holds the result of an id/meta/supported-series GET request. See See

type TagsResponse Uses

type TagsResponse struct {
    Tags []string

TagsResponse holds the result of an id/meta/tags GET request. See

type TermAgreementRequiredError Uses

type TermAgreementRequiredError struct {
    Terms []string

TermAgreementRequiredError signals that the user needs to agree to a set of terms and agreements in order to complete an operation.

func (*TermAgreementRequiredError) Error Uses

func (e *TermAgreementRequiredError) Error() string

Error implements the error interface.

type UploadInfoResponse Uses

type UploadInfoResponse struct {
    // UploadId holds the id of the upload.
    UploadId string

    // Parts holds all the known parts of the upload.
    // Parts that haven't been uploaded yet will have nil
    // elements.
    Parts Parts

    // Expires holds when the upload will expire.
    Expires time.Time

    // MinPartSize holds the minimum size of a part that may
    // be uploaded (not including the last part).
    MinPartSize int64

    // MaxPartSize holds the maximum size of a part that may
    // be uploaded.
    MaxPartSize int64

    // MaxParts holds the maximum number of parts.
    MaxParts int

UploadInfoResponse holds the response to a get /upload/upload-id request.

type WhoAmIResponse Uses

type WhoAmIResponse struct {
    User   string
    Groups []string

WhoAmIResponse holds the result of a whoami GET request. See

Package params imports 10 packages (graph) and is imported by 20 packages. Updated 2018-10-22. Refresh now. Tools for package owners.