librespot-protocol 0.7.1

The protobuf logic for communicating with Spotify servers
Documentation
// Extracted from: Spotify 1.2.52.442 (windows)

syntax = "proto3";

package spotify.remote_config.proto;

option optimize_for = CODE_SIZE;

message GranularConfiguration {
    message AssignedPropertyValue {
        Platform platform = 7;
        string client_id = 4;
        string component_id = 5;
        int64 groupId = 8;
        string name = 6;
        oneof structured_value {
            BoolValue bool_value = 1;
            IntValue int_value = 2;
            EnumValue enum_value = 3;
        }

        message BoolValue {
            bool value = 1;
        }

        message IntValue {
            int32 value = 1;
        }

        message EnumValue {
            string value = 1;
        }
    }

    repeated AssignedPropertyValue properties = 1;
    int64 rcs_fetch_time = 2;
    string configuration_assignment_id = 3;
    string etag = 10;
}

message PolicyGroupId {
    int64 policy_id = 1;
    int64 policy_group_id = 2;
}

message ClientPropertySet {
    message ComponentInfo {
        reserved "owner";
        reserved "tags";
        reserved 1;
        reserved 2;
        string name = 3;
    }

    message PublisherInfo {
        string published_for_client_version = 1;
        int64 published_at = 2;
    }

    string client_id = 1;
    string version = 2;
    repeated PropertyDefinition properties = 5;
    repeated ComponentInfo component_infos = 6;
    string property_set_key = 7;
    PublisherInfo publisherInfo = 8;
}

message PropertyDefinition {
    reserved 1;
    message BoolSpec {
        bool default = 1;
    }

    message IntSpec {
        int32 default = 1;
        int32 lower = 2;
        int32 upper = 3;
    }

    message EnumSpec {
        string default = 1;
        repeated string values = 2;
    }

    string description = 2;
    string component_id = 3;
    Platform platform = 8;
    oneof identifier {
        string id = 9;
        string name = 7;
    }
    oneof spec {
        BoolSpec bool_spec = 4;
        IntSpec int_spec = 5;
        EnumSpec enum_spec = 6;
    }
}

enum Platform {
    UNKNOWN_PLATFORM = 0;
    ANDROID_PLATFORM = 1;
    BACKEND_PLATFORM = 2;
    IOS_PLATFORM = 3;
    WEB_PLATFORM = 4;
}