syntax = "proto3";

package chatto.api.v1;

import "buf/validate/validate.proto";
import "google/protobuf/timestamp.proto";

// Custom status shown on a user profile, separate from presence.
message CustomUserStatus {
  // Short emoji marker displayed with the status.
  string emoji = 1 [(buf.validate.field).string = {
    min_len: 1
    max_len: 16
  }];
  // User-written status text.
  string text = 2 [(buf.validate.field).string = {
    min_len: 1
    max_len: 100
  }];
  // Optional time after which clients should stop showing the status.
  google.protobuf.Timestamp expires_at = 3;
}

// Request to update or replace the current user's custom status.
message UpdateCustomStatusRequest {
  // Short emoji marker displayed with the status.
  string emoji = 1;
  // User-written status text.
  string text = 2;
  // Optional future time after which clients should stop showing the status.
  google.protobuf.Timestamp expires_at = 3;
}

// Result of updating the current user's custom status.
message UpdateCustomStatusResponse {
  // Stored custom status after validation and normalization.
  CustomUserStatus status = 1;
}

// Request to delete the current user's custom status.
message DeleteCustomStatusRequest {}

// Result of deleting the current user's custom status.
message DeleteCustomStatusResponse {
  // Current custom status after the operation. Usually absent after a clear.
  CustomUserStatus status = 1;
}
