## [Claim](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/claim.proto)
Claims have the encompassing schema:

    message Claim {
        enum Version {
            UNKNOWN_VERSION = 0;
            _0_0_1 = 1;
        }
        required Version version = 1;
        enum ClaimType {
            UNKNOWN_CLAIM_TYPE = 0;
            streamType = 1;
            certificateType = 2;
        }
        required ClaimType claimType = 2;
        optional Stream stream = 3;
        optional Certificate certificate = 4;
        optional Signature publisherSignature = 5;
    }



## [Stream](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/stream.proto)
Claims of streamType have a `stream`:

    message Stream {
        enum Version {
            UNKNOWN_VERSION = 0;
            _0_0_1 = 1;
        }
        required Version version = 1;
        required Metadata metadata = 2;
        required Source source = 3;
    }

## [Metadata](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/metadata.proto)
Streams have `metadata` describing their content:

    message Metadata {
        enum Version {
            UNKNOWN_VERSION = 0;
            _0_0_1 = 1;
            _0_0_2 = 2;
            _0_0_3 = 3;
            _0_1_0 = 4;
        }
        enum Language {
            UNKNOWN_LANGUAGE = 0;
            en = 1;
        }
        required Version version = 1;
        required Language language = 2;
        required string title = 3;
        required string description = 4;
        required string author = 5;
        required string license = 6;
        required bool nsfw = 7;
    
        optional Fee fee = 8;
        optional string thumbnail = 9;
        optional string preview = 10;
        optional string licenseUrl = 11;
    }

## [Fee](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/fee.proto)
Metadata may include a fee to access the decryption key:

    message Fee {
        enum Version {
            UNKNOWN_VERSION = 0;
            _0_0_1 = 1;
        }
        enum Currency {
            UNKNOWN_CURRENCY = 0;
            LBC = 1;
            BTC = 2;
            USD = 3;
        }
        required Version version = 1;
        required Currency currency = 2;
        required bytes address = 3;
        required float amount = 4;
    }

## [Source](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/source.proto)
Streams have a `source` to download:

    message Source {
        enum Version {
            UNKNOWN_VERSION = 0;
            _0_0_1 = 1;
        }
        required Version version = 1;
        enum SourceTypes {
            UNKNOWN_SOURCE_TYPE = 0;
            lbry_sd_hash = 1;
        }
        required SourceTypes sourceType = 2;
        required bytes source = 3;
        required string contentType = 4;
    }



## [Certificate](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/certificate.proto)
Claims of certificateType have a `certificate`:

    message Certificate {
        enum Version {
            UNKNOWN_VERSION = 0;
            _0_0_1 = 1;
        }
        required Version version = 1;
        required KeyType keyType = 2;
        required bytes publicKey = 4;
    }

## [Signature](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/signature.proto)
Claims may be signed using the private key to a Certificate public key:

    message Signature {
        enum Version {
            UNKNOWN_VERSION = 0;
            _0_0_1 = 1;
        }
        required Version version = 1;
        required KeyType signatureType = 2;
        required bytes signature = 3;
        required bytes certificateId = 4;
    }
