syntax = "proto3";

package devvit.dev_portal.app_settings;

import "devvit/plugin/settings/v1alpha/settings.proto";
import "devvit/ui/form_builder/v1alpha/form.proto";

option go_package = "github.snooguts.net/reddit/reddit-devplatform-monorepo/go-common/generated/protos/types/devvit/devportal/appsettings";

message GetAppSettingsRequest {
  string app_id = 1;
}

message GetAppSettingsResponse {
  devvit.plugin.settings.v1alpha.SettingsValues settings = 1;
}

message UpdateAppSettingsRequest {
  string app_id = 1;
  devvit.plugin.settings.v1alpha.SettingsValues settings = 2;
}

message UpdateAppSettingsResponse {
  bool success = 1;
  map<string, string> errors = 2;
}

message GetAppSettingsFormRequest {
  string app_id = 1;
}

message GetAppSettingsFormResponse {
  // App settings Forms mapped by actor_name
  map<string, devvit.ui.form_builder.v1alpha.Form> form = 1;
}

message ValidateAppSettingsFormRequest {
  string app_id = 1;
  devvit.plugin.settings.v1alpha.SettingsValues settings = 2;
}

message ValidateAppSettingsFormResponse {
  // If false, prevent submission and display errors on the form
  bool success = 1;

  // Map of field_id:error pairs to display on the form
  map<string, string> errors = 2;
}
