Documentation
¶
Index ¶
- Constants
- Variables
- func CalculateDigest(data []byte) (ocidigest.Digest, error)
- func ConvertCIDToDigest(cidString string) (ocidigest.Digest, error)
- func ConvertDigestToCID(digest ocidigest.Digest) (string, error)
- func IsValidCID(cidString string) bool
- func SetDisableAPIValidation(disable bool)
- func SetSchemaURL(url string)
- func SetStrictValidation(strict bool)
- type DecodedRecord
- type Record
- func (r *Record) Decode() (DecodedRecord, error)
- func (*Record) Descriptor() ([]byte, []int)deprecated
- func (r *Record) GetCid() string
- func (x *Record) GetData() *structpb.Struct
- func (r *Record) GetSchemaVersion() string
- func (r *Record) Marshal() ([]byte, error)
- func (*Record) ProtoMessage()
- func (x *Record) ProtoReflect() protoreflect.Message
- func (x *Record) Reset()
- func (x *Record) String() string
- func (r *Record) Validate(ctx context.Context) (bool, []string, error)
- type RecordMeta
- func (*RecordMeta) Descriptor() ([]byte, []int)deprecated
- func (x *RecordMeta) GetAnnotations() map[string]string
- func (x *RecordMeta) GetCid() string
- func (x *RecordMeta) GetCreatedAt() string
- func (x *RecordMeta) GetSchemaVersion() string
- func (*RecordMeta) ProtoMessage()
- func (x *RecordMeta) ProtoReflect() protoreflect.Message
- func (x *RecordMeta) Reset()
- func (x *RecordMeta) String() string
- type RecordRef
- type RecordReferrer
- func (*RecordReferrer) Descriptor() ([]byte, []int)deprecated
- func (x *RecordReferrer) GetAnnotations() map[string]string
- func (x *RecordReferrer) GetCreatedAt() string
- func (x *RecordReferrer) GetData() *structpb.Struct
- func (x *RecordReferrer) GetRecordRef() *RecordRef
- func (x *RecordReferrer) GetType() string
- func (*RecordReferrer) ProtoMessage()
- func (x *RecordReferrer) ProtoReflect() protoreflect.Message
- func (x *RecordReferrer) Reset()
- func (x *RecordReferrer) String() string
- type ReferrerObject
Constants ¶
const ( // DefaultSchemaURL is the default OASF schema URL for API-based validation. DefaultSchemaURL = "https://schema.oasf.outshift.com" // DefaultValidationTimeout is the default timeout for API-based validation HTTP calls. // This ensures validation doesn't block indefinitely if the OASF server is slow or unreachable. DefaultValidationTimeout = 30 * time.Second )
const ( // PublicKeyReferrerType is the type for PublicKey referrers. PublicKeyReferrerType = "agntcy.dir.sign.v1.PublicKey" // SignatureReferrerType is the type for Signature referrers. SignatureReferrerType = "agntcy.dir.sign.v1.Signature" )
Referrer type constants for the high-level Dir Store API.
Variables ¶
var File_agntcy_dir_core_v1_record_proto protoreflect.FileDescriptor
Functions ¶
func CalculateDigest ¶
CalculateDigest calculates a SHA2-256 digest from raw bytes. This is used as a fallback when oras.PushBytes is not available.
func ConvertCIDToDigest ¶
ConvertCIDToDigest converts a CID string to an OCI digest. This is the reverse of ConvertDigestToCID.
func ConvertDigestToCID ¶
ConvertDigestToCID converts an OCI digest to a CID string. Uses the same CID parameters as the original Record.GetCid(): CIDv1, codec 1, SHA2-256.
func SetDisableAPIValidation ¶ added in v0.5.5
func SetDisableAPIValidation(disable bool)
SetDisableAPIValidation configures whether to disable API-based validation. When true, embedded schemas will be used instead of the API validator. This function is thread-safe and can be called concurrently with validation operations.
func SetSchemaURL ¶ added in v0.5.5
func SetSchemaURL(url string)
SetSchemaURL configures the schema URL to use for API-based validation. This function is thread-safe and can be called concurrently with validation operations.
func SetStrictValidation ¶ added in v0.5.5
func SetStrictValidation(strict bool)
SetStrictValidation configures whether to use strict validation mode. When true, uses strict validation (fails on unknown attributes, deprecated fields, etc.). When false, uses lax validation (more permissive, only fails on critical errors). This function is thread-safe and can be called concurrently with validation operations.
Types ¶
type DecodedRecord ¶
type DecodedRecord interface {
// GetRecord returns the underlying record data, which can be of supported type.
GetRecord() any
// HasV1Alpha0 checks if the record is of type V1Alpha0.
HasV1Alpha0() bool
GetV1Alpha0() *typesv1alpha0.Record
// HasV1Alpha1 checks if the record is of type V1Alpha1.
HasV1Alpha1() bool
GetV1Alpha1() *typesv1alpha1.Record
// HasV1Alpha2 checks if the record is of type V1Alpha2.
HasV1Alpha2() bool
GetV1Alpha2() *typesv1alpha2.Record
}
DecodedRecord is an interface representing a decoded OASF record. It provides methods to access the underlying record data.
type Record ¶
type Record struct {
Data *structpb.Struct `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
// contains filtered or unexported fields
}
Record is a generic object that encapsulates data of different Record types.
Supported schemas:
v0.3.1: https://schema.oasf.outshift.com/0.3.1/objects/agent v0.7.0: https://schema.oasf.outshift.com/0.7.0/objects/record
func New ¶
func New[T typesv1alpha0.Record | typesv1alpha1.Record | typesv1alpha2.Record](record *T) *Record
New creates a Record for a supported OASF typed record.
func UnmarshalRecord ¶
UnmarshalRecord unmarshals canonical Record JSON bytes to a Record.
func (*Record) Decode ¶
func (r *Record) Decode() (DecodedRecord, error)
Decode decodes the Record's data into a concrete type using the OASF SDK.
func (*Record) Descriptor
deprecated
func (*Record) GetCid ¶
GetCid calculates and returns the CID for this record. The CID is calculated from the record's content using CIDv1, codec 1, SHA2-256. Uses canonical JSON marshaling to ensure consistent, cross-language compatible results. Returns empty string if calculation fails.
func (*Record) GetSchemaVersion ¶
func (*Record) Marshal ¶
Marshal marshals the Record using canonical JSON serialization. This ensures deterministic, cross-language compatible byte representation. The output represents the pure Record data and is used for both CID calculation and storage.
func (*Record) ProtoMessage ¶
func (*Record) ProtoMessage()
func (*Record) ProtoReflect ¶
func (x *Record) ProtoReflect() protoreflect.Message
type RecordMeta ¶
type RecordMeta struct {
// CID of the record.
Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"`
// Annotations attached to the record.
Annotations map[string]string `` /* 149-byte string literal not displayed */
// Schema version of the record.
SchemaVersion string `protobuf:"bytes,3,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"`
// Creation timestamp of the record in the RFC3339 format.
// Specs: https://www.rfc-editor.org/rfc/rfc3339.html
CreatedAt string `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
// contains filtered or unexported fields
}
Defines metadata about a record.
func (*RecordMeta) Descriptor
deprecated
func (*RecordMeta) Descriptor() ([]byte, []int)
Deprecated: Use RecordMeta.ProtoReflect.Descriptor instead.
func (*RecordMeta) GetAnnotations ¶
func (x *RecordMeta) GetAnnotations() map[string]string
func (*RecordMeta) GetCid ¶
func (x *RecordMeta) GetCid() string
func (*RecordMeta) GetCreatedAt ¶
func (x *RecordMeta) GetCreatedAt() string
func (*RecordMeta) GetSchemaVersion ¶
func (x *RecordMeta) GetSchemaVersion() string
func (*RecordMeta) ProtoMessage ¶
func (*RecordMeta) ProtoMessage()
func (*RecordMeta) ProtoReflect ¶
func (x *RecordMeta) ProtoReflect() protoreflect.Message
func (*RecordMeta) Reset ¶
func (x *RecordMeta) Reset()
func (*RecordMeta) String ¶
func (x *RecordMeta) String() string
type RecordRef ¶
type RecordRef struct {
// Globally-unique content identifier (CID) of the record.
// Specs: https://github.com/multiformats/cid
Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"`
// contains filtered or unexported fields
}
Defines a reference or a globally unique content identifier of a record.
func (*RecordRef) Descriptor
deprecated
func (*RecordRef) ProtoMessage ¶
func (*RecordRef) ProtoMessage()
func (*RecordRef) ProtoReflect ¶
func (x *RecordRef) ProtoReflect() protoreflect.Message
type RecordReferrer ¶
type RecordReferrer struct {
// The type of the referrer.
// For example, "agntcy.dir.sign.v1.Signature" for signatures.
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
// Record reference to which this referrer is associated.
RecordRef *RecordRef `protobuf:"bytes,2,opt,name=record_ref,json=recordRef,proto3" json:"record_ref,omitempty"`
// Annotations attached to the referrer object.
Annotations map[string]string `` /* 149-byte string literal not displayed */
// Creation timestamp of the record in the RFC3339 format.
// Specs: https://www.rfc-editor.org/rfc/rfc3339.html
CreatedAt string `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
// The actual data of the referrer.
Data *structpb.Struct `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"`
// contains filtered or unexported fields
}
RecordReferrer represents a referrer object or an association to a record. The actual structure of the referrer object can vary depending on the type of referrer (e.g., signature, public key, etc.).
RecordReferrer types in the `agntcy.dir.` namespace are reserved for Directory-specific schemas and will be validated across Dir services.
func (*RecordReferrer) Descriptor
deprecated
func (*RecordReferrer) Descriptor() ([]byte, []int)
Deprecated: Use RecordReferrer.ProtoReflect.Descriptor instead.
func (*RecordReferrer) GetAnnotations ¶
func (x *RecordReferrer) GetAnnotations() map[string]string
func (*RecordReferrer) GetCreatedAt ¶
func (x *RecordReferrer) GetCreatedAt() string
func (*RecordReferrer) GetData ¶
func (x *RecordReferrer) GetData() *structpb.Struct
func (*RecordReferrer) GetRecordRef ¶
func (x *RecordReferrer) GetRecordRef() *RecordRef
func (*RecordReferrer) GetType ¶
func (x *RecordReferrer) GetType() string
func (*RecordReferrer) ProtoMessage ¶
func (*RecordReferrer) ProtoMessage()
func (*RecordReferrer) ProtoReflect ¶
func (x *RecordReferrer) ProtoReflect() protoreflect.Message
func (*RecordReferrer) Reset ¶
func (x *RecordReferrer) Reset()
func (*RecordReferrer) String ¶
func (x *RecordReferrer) String() string
type ReferrerObject ¶
type ReferrerObject interface {
// UnmarshalReferrer loads the object from a RecordReferrer.
UnmarshalReferrer(*RecordReferrer) error
// MarshalReferrer exports the object into a RecordReferrer.
MarshalReferrer() (*RecordReferrer, error)
// ReferrerType returns the type of the referrer.
// Examples:
// - Signature: "agntcy.dir.sign.v1.Signature"
// - PublicKey: "agntcy.dir.sign.v1.PublicKey"
ReferrerType() string
}
ReferrerObject defines an interface for referrer objects that can be marshaled and unmarshaled to/from RecordReferrer format.