// Copyright (c) 2022 Boston Dynamics, Inc.  All rights reserved.
//
// Downloading, reproducing, distributing or otherwise using the SDK Software
// is subject to the terms and conditions of the Boston Dynamics Software
// Development Kit License (20191101-BDSDK-SL).

syntax = "proto3";

package bosdyn.api.spot;

option java_outer_classname = "ChoreographyServiceProto";

import "bosdyn/api/spot/choreography_sequence.proto";

service ChoreographyService {
    // List the available dance moves and their parameter information.
    rpc ListAllMoves(ListAllMovesRequest) returns (ListAllMovesResponse) {}

    // List the available choreography sequences currently on the robot.
    rpc ListAllSequences(ListAllSequencesRequest) returns (ListAllSequencesResponse) {}

    // Upload a dance to the robot.
    rpc UploadChoreography(UploadChoreographyRequest) returns (UploadChoreographyResponse) {}

    // Upload an animation to the robot.
    rpc UploadAnimatedMove(UploadAnimatedMoveRequest) returns (UploadAnimatedMoveResponse) {}

    // Execute the uploaded dance.
    rpc ExecuteChoreography(ExecuteChoreographyRequest) returns (ExecuteChoreographyResponse) {}

    // Manually start (or continue) recording the robot state.
    rpc StartRecordingState(StartRecordingStateRequest) returns (StartRecordingStateResponse) {}

    // Manually stop recording the robot state.
    rpc StopRecordingState(StopRecordingStateRequest) returns (StopRecordingStateResponse) {}

    // Download log of the latest recorded robot state information.
    rpc DownloadRobotStateLog(DownloadRobotStateLogRequest) returns (stream DownloadRobotStateLogResponse) {}

}
