Add SDK parity and Go CLI release readiness
This commit is contained in:
271
types.go
Normal file
271
types.go
Normal file
@@ -0,0 +1,271 @@
|
||||
package attesto
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type M map[string]any
|
||||
|
||||
type RequestOptions struct {
|
||||
IdempotencyKey string
|
||||
}
|
||||
|
||||
type StreamCreateInput struct {
|
||||
UseCase string `json:"useCase"`
|
||||
PolicyID string `json:"policyId"`
|
||||
Metadata M `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type Stream struct {
|
||||
StreamID string `json:"streamId"`
|
||||
SystemID string `json:"systemId"`
|
||||
UseCase string `json:"useCase"`
|
||||
PolicyID string `json:"policyId"`
|
||||
Status string `json:"status"`
|
||||
LastSeqNo int64 `json:"lastSeqNo"`
|
||||
LastEventHash string `json:"lastEventHash,omitempty"`
|
||||
LastStreamHeadHash string `json:"lastStreamHeadHash,omitempty"`
|
||||
Created bool `json:"created"`
|
||||
}
|
||||
|
||||
type TenantStream struct {
|
||||
StreamID string `json:"streamId"`
|
||||
SystemID string `json:"systemId"`
|
||||
SystemName string `json:"systemName,omitempty"`
|
||||
UseCase string `json:"useCase"`
|
||||
PolicyID string `json:"policyId"`
|
||||
Status string `json:"status"`
|
||||
LastSeqNo int64 `json:"lastSeqNo"`
|
||||
LastEventHash string `json:"lastEventHash,omitempty"`
|
||||
LastStreamHeadHash string `json:"lastStreamHeadHash,omitempty"`
|
||||
OpenedAt string `json:"openedAt"`
|
||||
UpdatedAt string `json:"updatedAt"`
|
||||
}
|
||||
|
||||
type StreamHead struct {
|
||||
StreamID string `json:"streamId"`
|
||||
SystemID string `json:"systemId"`
|
||||
Status string `json:"status"`
|
||||
LastSeqNo int64 `json:"lastSeqNo"`
|
||||
LastEventHash string `json:"lastEventHash,omitempty"`
|
||||
LastStreamHeadHash string `json:"lastStreamHeadHash,omitempty"`
|
||||
}
|
||||
|
||||
type EventInput struct {
|
||||
EventType string `json:"eventType,omitempty"`
|
||||
OccurredAt string `json:"occurredAt,omitempty"`
|
||||
SourceKind string `json:"sourceKind,omitempty"`
|
||||
SourceRef string `json:"sourceRef"`
|
||||
Payload M `json:"payload,omitempty"`
|
||||
Metadata M `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type ReceiptSignature struct {
|
||||
Alg string `json:"alg"`
|
||||
KID string `json:"kid"`
|
||||
KeyEpoch string `json:"keyEpoch,omitempty"`
|
||||
SignatureHex string `json:"signatureHex,omitempty"`
|
||||
}
|
||||
|
||||
type SignedReceipt struct {
|
||||
Payload M `json:"payload"`
|
||||
ReceiptHash string `json:"receiptHash"`
|
||||
Signature ReceiptSignature `json:"signature"`
|
||||
}
|
||||
|
||||
func (s *ReceiptSignature) UnmarshalJSON(raw []byte) error {
|
||||
var data map[string]any
|
||||
if err := json.Unmarshal(raw, &data); err != nil {
|
||||
return err
|
||||
}
|
||||
s.Alg, _ = data["alg"].(string)
|
||||
s.KID, _ = data["kid"].(string)
|
||||
if value, ok := data["keyEpoch"].(string); ok {
|
||||
s.KeyEpoch = value
|
||||
} else if value, ok := data["key_epoch"].(string); ok {
|
||||
s.KeyEpoch = value
|
||||
}
|
||||
if value, ok := data["signatureHex"].(string); ok {
|
||||
s.SignatureHex = value
|
||||
} else if value, ok := data["signature_hex"].(string); ok {
|
||||
s.SignatureHex = value
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *SignedReceipt) UnmarshalJSON(raw []byte) error {
|
||||
var data map[string]json.RawMessage
|
||||
if err := json.Unmarshal(raw, &data); err != nil {
|
||||
return err
|
||||
}
|
||||
if payload, ok := data["payload"]; ok {
|
||||
if err := json.Unmarshal(payload, &r.Payload); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if receiptHash, ok := data["receiptHash"]; ok {
|
||||
if err := json.Unmarshal(receiptHash, &r.ReceiptHash); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if receiptHash, ok := data["receipt_hash"]; ok {
|
||||
if err := json.Unmarshal(receiptHash, &r.ReceiptHash); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if signature, ok := data["signature"]; ok {
|
||||
if err := json.Unmarshal(signature, &r.Signature); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type EventReceipt struct {
|
||||
StreamID string `json:"streamId"`
|
||||
StreamEventID string `json:"streamEventId"`
|
||||
SeqNo int64 `json:"seqNo"`
|
||||
EventHash string `json:"eventHash"`
|
||||
PrevEventHash string `json:"prevEventHash,omitempty"`
|
||||
StreamHeadHash string `json:"streamHeadHash"`
|
||||
Receipt SignedReceipt `json:"receipt"`
|
||||
LocalVaultAck M `json:"localVaultAck,omitempty"`
|
||||
}
|
||||
|
||||
type EventBatchResponse struct {
|
||||
Accepted int `json:"accepted"`
|
||||
Receipts []EventReceipt `json:"receipts"`
|
||||
}
|
||||
|
||||
type VerifyKind string
|
||||
|
||||
const (
|
||||
VerifyReceipt VerifyKind = "receipt"
|
||||
VerifyStream VerifyKind = "stream"
|
||||
VerifyWindow VerifyKind = "window"
|
||||
VerifyCheckpoint VerifyKind = "checkpoint"
|
||||
VerifyConsistency VerifyKind = "consistency"
|
||||
VerifyAnchor VerifyKind = "anchor"
|
||||
VerifyIVC VerifyKind = "ivc"
|
||||
VerifyBundle VerifyKind = "bundle"
|
||||
)
|
||||
|
||||
type ReceiptVerifyInput struct {
|
||||
Receipt any `json:"receipt"`
|
||||
PublicKeyHex string `json:"publicKeyHex"`
|
||||
StreamEventID string `json:"streamEventId,omitempty"`
|
||||
}
|
||||
|
||||
type OfflineVerifyInput struct {
|
||||
Kind VerifyKind `json:"kind"`
|
||||
Object M `json:"object"`
|
||||
PublicKeyHex string `json:"publicKeyHex,omitempty"`
|
||||
}
|
||||
|
||||
type VerificationCheck struct {
|
||||
Name string `json:"name"`
|
||||
Result string `json:"result"`
|
||||
Details M `json:"details,omitempty"`
|
||||
}
|
||||
|
||||
type VerifyReport struct {
|
||||
Kind VerifyKind `json:"kind,omitempty"`
|
||||
OK bool `json:"ok"`
|
||||
ReceiptHash string `json:"receiptHash,omitempty"`
|
||||
EventHash string `json:"eventHash,omitempty"`
|
||||
Problems []string `json:"problems"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
ProtocolVersion string `json:"protocolVersion,omitempty"`
|
||||
VerifiedAt string `json:"verifiedAt,omitempty"`
|
||||
Subject M `json:"subject,omitempty"`
|
||||
Result string `json:"result,omitempty"`
|
||||
Checks []VerificationCheck `json:"checks,omitempty"`
|
||||
Evidence []M `json:"evidence,omitempty"`
|
||||
}
|
||||
|
||||
type WitnessPolicy struct {
|
||||
PolicyID string `json:"policyId"`
|
||||
TenantID string `json:"tenantId"`
|
||||
Mode string `json:"mode"`
|
||||
Status string `json:"status"`
|
||||
Enforced bool `json:"enforced"`
|
||||
ManagedOnly bool `json:"managedOnly"`
|
||||
QuorumThreshold int `json:"quorumThreshold"`
|
||||
WitnessKeys []string `json:"witnessKeys"`
|
||||
Payload M `json:"payload"`
|
||||
PolicyHash string `json:"policyHash"`
|
||||
}
|
||||
|
||||
type VerifierBundle struct {
|
||||
BundleID string `json:"bundleId"`
|
||||
BundleHash string `json:"bundleHash"`
|
||||
Payload M `json:"payload"`
|
||||
}
|
||||
|
||||
type ConnectorCreateInput struct {
|
||||
StreamID string `json:"streamId"`
|
||||
Label string `json:"label"`
|
||||
Metadata M `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type S3ConnectorCreateInput struct {
|
||||
StreamID string `json:"streamId"`
|
||||
Label string `json:"label"`
|
||||
Bucket string `json:"bucket"`
|
||||
AccessKeyID string `json:"accessKeyId"`
|
||||
SecretAccessKey string `json:"secretAccessKey"`
|
||||
Region string `json:"region,omitempty"`
|
||||
EndpointURL string `json:"endpointUrl,omitempty"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
AddressingStyle string `json:"addressingStyle,omitempty"`
|
||||
Metadata M `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type RepositoryConnectorCreateInput struct {
|
||||
StreamID string `json:"streamId"`
|
||||
Label string `json:"label"`
|
||||
Provider string `json:"provider"`
|
||||
RepositoryURL string `json:"repositoryUrl,omitempty"`
|
||||
Metadata M `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type Connector struct {
|
||||
ConnectorID string `json:"connectorId"`
|
||||
StreamID string `json:"streamId"`
|
||||
SystemID string `json:"systemId"`
|
||||
ConnectorType string `json:"connectorType"`
|
||||
Label string `json:"label"`
|
||||
Status string `json:"status"`
|
||||
EndpointPath string `json:"endpointPath,omitempty"`
|
||||
CommitEndpointPath string `json:"commitEndpointPath,omitempty"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
RepositoryURL string `json:"repositoryUrl,omitempty"`
|
||||
Bucket string `json:"bucket,omitempty"`
|
||||
Region string `json:"region,omitempty"`
|
||||
EndpointURL string `json:"endpointUrl,omitempty"`
|
||||
AddressingStyle string `json:"addressingStyle,omitempty"`
|
||||
AccessKeyIDMasked string `json:"accessKeyIdMasked,omitempty"`
|
||||
LastEventAt string `json:"lastEventAt,omitempty"`
|
||||
CreatedAt string `json:"createdAt,omitempty"`
|
||||
UpdatedAt string `json:"updatedAt,omitempty"`
|
||||
Secret string `json:"secret,omitempty"`
|
||||
}
|
||||
|
||||
type LocalVaultInstallationCreateInput struct {
|
||||
StreamID string `json:"streamId"`
|
||||
Label string `json:"label"`
|
||||
KeyID string `json:"keyId"`
|
||||
PublicKeyHex string `json:"publicKeyHex"`
|
||||
Metadata M `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type LocalVaultInstallation struct {
|
||||
InstallationID string `json:"installationId"`
|
||||
StreamID string `json:"streamId"`
|
||||
SystemID string `json:"systemId"`
|
||||
Label string `json:"label"`
|
||||
Status string `json:"status"`
|
||||
KeyID string `json:"keyId"`
|
||||
PublicKeyHex string `json:"publicKeyHex"`
|
||||
EndpointPath string `json:"endpointPath"`
|
||||
LastEventAt string `json:"lastEventAt,omitempty"`
|
||||
CreatedAt string `json:"createdAt"`
|
||||
UpdatedAt string `json:"updatedAt"`
|
||||
}
|
||||
Reference in New Issue
Block a user