namespace DodoSSH.Contracts;
///
/// The kind of vault item a sync change refers to.
///
///
/// Values are persisted in the change log and are part of the wire contract. Append only;
/// never renumber. These mirror CryptoSpec.AadResourceType for the item types, but are
/// a separate enum because only syncable items appear here.
///
public enum SyncEntityType
{
/// Not a legal value.
Unspecified = 0,
/// An SSH host.
Host = 1,
/// A credential.
Credential = 2,
/// An SSH key pair.
SshKey = 3,
/// A host group.
HostGroup = 4,
/// A tag.
Tag = 5,
/// A host-to-tag association.
HostTag = 6,
/// A host-to-credential association.
HostCredential = 7,
/// A command snippet.
Snippet = 8,
/// A port forward.
PortForward = 9,
/// A known SSH host key.
KnownHostKey = 10,
/// One connection that was made, and how long it lasted.
///
/// The first member added here since the contract was frozen; every one before it was reserved in
/// advance. Logs are synced items rather than local files because they are audit records — an
/// administrator has to be able to read a shared vault's history once teams land, and a log kept only on
/// the machine that produced it can be neither read nor trusted by anybody else. See ADR 0001 for what
/// that costs in metadata.
///
ConnectionLogEntry = 11,
/// One create, edit or delete of a vault item.
///
ActivityLogEntry = 12,
///
/// An S3-compatible bucket, and the credentials that reach it.
///
///
/// Named for the protocol's shape rather than for Amazon, because what it addresses is any service
/// speaking S3 — MinIO, R2, Backblaze, Ceph — and a member called S3 would read as a claim about
/// the vendor. The interface says S3, which is what people call the protocol.
///
ObjectStore = 13,
// 14 was SpelunkKey, a Spelunk API key and its address, removed while still in beta when signing in to
// Spelunk replaced it. Not to be reused: an old client may still send it, and must be refused as unknown.
}