Registering a Robot#

        sequenceDiagram
    Actor RO as Robot Owner
    participant DR as Data Repository

    RO->>+DR: POST /robot/ : (base_url, description, name, owner)
    DR-->>DR: Register Robot
    DR->>RO: Provisioned Robot : (id, client_secret, parameters)
    Note over RO: Robot Owner configures robot with <br>provided id and client_secret

    RO->>+DR: PUT /robot/ : (id, new_base_url, new_description, new_name, new_owner)
    DR-->>DR: Update Robot
    DR->>RO: Robot(id, new_base_url, new_description, new_name, new_owner)
    Note over RO: client_secret not returned on update


    RO->>DR: Cycle Robot Secret (id)
    DR-->>DR: Cycle Robot Secret
    DR->>RO: Provisioned Robot (robot_id, base_url, new_client_secret, description, name, owner)
    Note over RO: Robot Owner updates robot with <br>new client_secret
    

For Robot Owners#

The robot owner calls the POST /robot/ endpoint with a RobotIn object, providing details of the robot.

Once confirmed by the repository, the robot owner will receive a ProvisionedRobot object containing the robot id, a client_secret, and the details provided in the original request.

Robot registration can also be performed with the destiny repository cli, see Robot Registration.

The robot owner can cycle the robot client_secret by calling POST /robot/<robot_id>/secret/.

Once confirmed by the repository the robot owner with receive a ProvisionedRobot object containing the robot id, a new client_secret, and the robot details.

The client_secret is provided in response body only during registration, or when cycled with the POST /robot/<robot_id>/secret/ endpoint.

The robot owner can update the robot details by calling PUT /robot/ with a Robot, providing the robot id and robot details.

Once confirmed by the repository, the robot owner will receive a Robot object containing the robot id and robot details.

The robot owner can check the robot details by calling the GET /robot/<robot_id> endpoint, and will receive a Robot object containing the robot id and robot details.

For Robots#

Robots must be configured witht the robot_id and client_secret provided by destiny repository, and use these with the Client in Client to authenticate against the destiny repository.