Documentation
¶
Index ¶
- Constants
- Variables
- func CompareCapabilityVersions(left, right string) (int, error)
- func DetailSchemaSHA256(schema map[string]any) (string, error)
- func GenerateTypeScript(contract Contract) ([]byte, error)
- func SchemaSHA256(schema map[string]any) (string, error)
- func Validate(contract Contract) error
- func ValidateArtifactRef(ref string) error
- func ValidatePin(pin Pin) error
- func ValidateValue(schema map[string]any, value any) error
- type BuildRequest
- type Bundle
- type BusinessError
- type CancelPolicy
- type Compatibility
- type Confirmation
- type Contract
- type Manifest
- type ManifestEntry
- type Method
- type Notice
- type Pin
- type Quota
- type Registry
- type SignatureEnvelope
- type TrustedKey
- type VerifiedContract
- type VerifyRequest
Constants ¶
View Source
const ( MaxArtifactFileBytes int64 = 4 << 20 MaxArtifactBundleBytes int64 = 8 << 20 )
View Source
const ( MaxSchemaDepth = 32 MaxSchemaNodes = 4096 MaxSchemaProperties = 1024 MaxSchemaEnumValues = 1024 MaxSchemaBranches = 64 )
View Source
const SchemaVersion = "redevplugin.host_capability_contract.v1"
Variables ¶
View Source
var ( ErrInvalidContract = errors.New("host capability contract is invalid") ErrInvalidBundle = errors.New("host capability artifact bundle is invalid") ErrPinMismatch = errors.New("host capability artifact pin mismatch") ErrSignature = errors.New("host capability artifact signature is invalid") ErrCompatibility = errors.New("host capability artifact is incompatible") )
Functions ¶
func GenerateTypeScript ¶
func ValidateArtifactRef ¶
func ValidatePin ¶
Types ¶
type BuildRequest ¶
type BusinessError ¶
type CancelPolicy ¶
type Compatibility ¶
type Compatibility struct {
SchemaVersion string `json:"schema_version"`
ContractID string `json:"contract_id"`
ContractVersion string `json:"contract_version"`
CapabilityID string `json:"capability_id"`
CapabilityVersion string `json:"capability_version"`
MinReDevPluginVersion string `json:"min_redevplugin_version"`
}
type Confirmation ¶
type Contract ¶
type Contract struct {
SchemaVersion string `json:"schema_version"`
ContractID string `json:"contract_id"`
ContractVersion string `json:"contract_version"`
PublisherID string `json:"publisher_id"`
CapabilityID string `json:"capability_id"`
CapabilityVersion string `json:"capability_version"`
ClientName string `json:"client_name"`
Methods []Method `json:"methods"`
Errors []BusinessError `json:"errors,omitempty"`
}
type Manifest ¶
type Manifest struct {
SchemaVersion string `json:"schema_version"`
PublisherID string `json:"publisher_id"`
ContractID string `json:"contract_id"`
ContractVersion string `json:"contract_version"`
CapabilityID string `json:"capability_id"`
CapabilityVersion string `json:"capability_version"`
GeneratedAt string `json:"generated_at"`
SourceCommit string `json:"source_commit"`
SignatureAlgorithm string `json:"signature_algorithm"`
SignatureKeyID string `json:"signature_key_id"`
SignaturePolicyEpoch string `json:"signature_policy_epoch"`
SignatureRevocationEpoch string `json:"signature_revocation_epoch"`
Entries []ManifestEntry `json:"entries"`
}
type ManifestEntry ¶
type Method ¶
type Method struct {
Name string `json:"name"`
ClientMethod string `json:"client_method"`
Effect string `json:"effect"`
Execution string `json:"execution"`
PreflightOnly bool `json:"preflight_only,omitempty"`
RequiredPermissions []string `json:"required_permissions,omitempty"`
TargetFields []string `json:"target_fields"`
TargetSchema map[string]any `json:"target_schema"`
RequestTypeName string `json:"request_type_name"`
ResponseTypeName string `json:"response_type_name"`
RequestSchema map[string]any `json:"request_schema"`
ResponseSchema map[string]any `json:"response_schema"`
EventTypeName string `json:"event_type_name,omitempty"`
EventSchema map[string]any `json:"event_schema,omitempty"`
Confirmation *Confirmation `json:"confirmation,omitempty"`
CancelPolicy *CancelPolicy `json:"cancel_policy,omitempty"`
Quota Quota `json:"quota"`
}
type Pin ¶
type Pin struct {
PublisherID string `json:"publisher_id"`
ContractID string `json:"contract_id"`
ContractVersion string `json:"contract_version"`
ArtifactRef string `json:"artifact_ref"`
ArtifactSHA256 string `json:"artifact_sha256"`
ManifestRef string `json:"manifest_ref"`
ManifestSHA256 string `json:"manifest_sha256"`
SignatureRef string `json:"signature_ref"`
SignatureSHA256 string `json:"signature_sha256"`
SignatureKeyID string `json:"signature_key_id"`
SignaturePolicyEpoch string `json:"signature_policy_epoch"`
SignatureRevocationEpoch string `json:"signature_revocation_epoch"`
CompatibilityRef string `json:"compatibility_ref"`
CompatibilitySHA256 string `json:"compatibility_sha256"`
GeneratedClientRef string `json:"generated_client_ref"`
GeneratedClientSHA256 string `json:"generated_client_sha256"`
NoticesRef string `json:"notices_ref"`
NoticesSHA256 string `json:"notices_sha256"`
}
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry ¶
func NewRegistry() *Registry
func (*Registry) Add ¶
func (r *Registry) Add(contract VerifiedContract) error
func (*Registry) ResolveCapability ¶
func (r *Registry) ResolveCapability(capabilityID, minimumVersion string) (VerifiedContract, error)
type SignatureEnvelope ¶
type TrustedKey ¶
type VerifiedContract ¶
type VerifiedContract struct {
Contract Contract
Pin Pin
Manifest Manifest
Compatibility Compatibility
GeneratedClient []byte
Notices []Notice
// contains filtered or unexported fields
}
func Verify ¶
func Verify(req VerifyRequest) (VerifiedContract, error)
func (VerifiedContract) PublicKeySHA256 ¶
func (v VerifiedContract) PublicKeySHA256() string
type VerifyRequest ¶
type VerifyRequest struct {
Bundle Bundle
ExpectedPin Pin
TrustedKey TrustedKey
CurrentReDevPluginVersion string
}
Click to show internal directories.
Click to hide internal directories.