/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto3";

package android.profiles;

// Next: 4
message TaskProfiles {
    repeated Attribute attributes = 1 [json_name = "Attributes"];
    repeated Profile profiles = 2 [json_name = "Profiles"];
    repeated AggregateProfiles aggregateprofiles = 3 [json_name = "AggregateProfiles"];
}

// Next: 4
message Attribute {
    string name = 1 [json_name = "Name"];
    string controller = 2 [json_name = "Controller"];
    string file = 3 [json_name = "File"];
}

// Next: 3
message Profile {
    string name = 1 [json_name = "Name"];
    repeated Action actions = 2 [json_name = "Actions"];
}

// Next: 3
message Action {
    string name = 1 [json_name = "Name"];
    map<string, string> params = 2 [json_name = "Params"];
}

// Next: 3
message AggregateProfiles {
    string name = 1 [json_name = "Name"];
    repeated string profiles = 2 [json_name = "Profiles"];
}
