// DO NOT DELETE. This is different from the protos in data-api-firehose https://github.snooguts.net/reddit/data-api-firehose/blob/main/protos/devvit/data/api/admin/v1alpha/ and is specific to dev portal

syntax = "proto3";

package devvit.dev_portal.data_api.admin.subscription;

import "devvit/data/api/v1alpha/admin.proto";
import "devvit/options/options.proto";
import "devvit/reddit/v2alpha/subredditv2.proto";

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

// region Subscription messages
message CreateDataSubscriptionRequest {
  devvit.options.DataTier tier = 1;
  repeated devvit.options.FirehoseEvent events = 2;
  repeated string subreddits = 3;
  repeated devvit.reddit.v2alpha.SubredditRating subreddit_ratings = 4;
  string customer = 5;
  string name = 6;
  optional string description = 7;
}
message CreateDataSubscriptionResponse {
  devvit.data.api.v1alpha.DataSubscription subscription = 1;
}

message GetDataSubscriptionByIdRequest {
  string subscription_id = 1;
}
message GetDataSubscriptionByIdResponse {
  devvit.data.api.v1alpha.DataSubscription subscription = 1;
}

message DataSubscriptionSubredditInfo {
  // t5_ subreddit ID
  // @example "t5_2qh1o"
  string id = 1;
  // Subreddit display name - not prefixed with r/
  // @example "aww"
  string name = 2;
  // Subreddit icon URL
  string icon = 3;
  // Whether the subreddit is NSFW
  bool is_nsfw = 4;
}

// Data subscription for UI consumption that includes hydrated subreddit info
message UIDataSubscription {
  // Subscription ID
  string id = 1;
  // Subscription name
  string name = 2;
  // Subscription description
  optional string description = 3;
  // Firehose events types the subscription is subscribed to
  repeated devvit.options.FirehoseEvent events = 4;
  // Subreddits the subscription is subscribed to
  repeated DataSubscriptionSubredditInfo subreddits = 5;
  // Subreddit ratings the subscription is subscribed to
  repeated devvit.reddit.v2alpha.SubredditRating subreddit_ratings = 6;
}

message GetDataSubscriptionsByOrganizationNameRequest {
  string organization_name = 1;
}
message GetDataSubscriptionsByOrganizationNameResponse {
  repeated UIDataSubscription subscriptions = 1;
}

message UpdateDataSubscriptionRequest {
  // Id of the subscription to update
  string subscription_id = 1;
  // New name of the subscription
  optional string name = 2;
  // New description of the subscription
  optional string description = 3;
  // New data tier of the subscription.
  optional devvit.options.DataTier tier = 4;
  // New events. Will overwrite the array of existing events.
  repeated devvit.options.FirehoseEvent events = 5;
  // New subreddits. Will overwrite the array of existing subreddits.
  repeated string subreddits = 6;
  // New subreddit ratings. Will overwrite the array of existing subreddit ratings.
  repeated devvit.reddit.v2alpha.SubredditRating subreddit_ratings = 7;
}
message UpdateDataSubscriptionResponse {
  devvit.data.api.v1alpha.DataSubscription subscription = 1;
}

message DeleteDataSubscriptionRequest {
  string subscription_id = 1;
}
message DeleteDataSubscriptionResponse {}
