@devvit/protos 0.11.6 → 0.11.7-next-2025-01-28-641048aff.0
Sign up to get free protection for your applications and to get access to all the features.
- package/meta.min.json +7820 -0
- package/package.json +4 -4
- package/protos.min.js +2 -0
- package/protos.min.js.map +7 -0
- package/schema/.snootobuf/deps/buf/validate/expression.proto +92 -0
- package/schema/.snootobuf/deps/buf/validate/priv/private.proto +41 -0
- package/schema/.snootobuf/deps/buf/validate/validate.proto +4130 -0
- package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/audit.proto +72 -0
- package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/auth.proto +49 -0
- package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/organization.proto +54 -0
- package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/service.proto +46 -0
- package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/subscription.proto +72 -0
- package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/ui.proto +20 -0
- package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/user.proto +45 -0
- package/schema/.snootobuf/deps/devvit/data/api/v1alpha/admin.proto +54 -0
- package/schema/.snootobuf/deps/devvit/data/api/v1alpha/delivery.proto +773 -0
- package/schema/.snootobuf/deps/devvit/data/api/v1alpha/filter.proto +66 -0
- package/schema/.snootobuf/deps/devvit/data/api/v1alpha/firehose.proto +100 -0
- package/schema/.snootobuf/deps/devvit/data/api/v1alpha/intake.proto +19 -0
- package/schema/.snootobuf/deps/devvit/events/v1alpha/events.proto +446 -0
- package/schema/.snootobuf/deps/devvit/gateway/v1alpha/payments.proto +24 -0
- package/schema/.snootobuf/deps/devvit/options/options.proto +98 -0
- package/schema/.snootobuf/deps/devvit/reddit/v2alpha/commentv2.proto +29 -0
- package/schema/.snootobuf/deps/devvit/reddit/v2alpha/flair.proto +25 -0
- package/schema/.snootobuf/deps/devvit/reddit/v2alpha/modaction.proto +53 -0
- package/schema/.snootobuf/deps/devvit/reddit/v2alpha/modmail.proto +56 -0
- package/schema/.snootobuf/deps/devvit/reddit/v2alpha/postv2.proto +107 -0
- package/schema/.snootobuf/deps/devvit/reddit/v2alpha/subredditv2.proto +41 -0
- package/schema/.snootobuf/deps/devvit/reddit/v2alpha/userv2.proto +23 -0
- package/schema/.snootobuf/deps/devvit/triggers/v1alpha/triggers.proto +162 -0
- package/schema/.snootobuf/deps/enum/account_gender_category.proto +14 -0
- package/schema/.snootobuf/deps/enum/approval_status.proto +15 -0
- package/schema/.snootobuf/deps/enum/automated_reporting_level.proto +12 -0
- package/schema/.snootobuf/deps/enum/ban_evasion_threshold.proto +13 -0
- package/schema/.snootobuf/deps/enum/ban_info_action.proto +12 -0
- package/schema/.snootobuf/deps/enum/block_relation_type.proto +11 -0
- package/schema/.snootobuf/deps/enum/comment_sort.proto +18 -0
- package/schema/.snootobuf/deps/enum/comment_type.proto +11 -0
- package/schema/.snootobuf/deps/enum/crowd_control_level.proto +12 -0
- package/schema/.snootobuf/deps/enum/discussion_type.proto +10 -0
- package/schema/.snootobuf/deps/enum/distinguish_type.proto +14 -0
- package/schema/.snootobuf/deps/enum/flair_position.proto +11 -0
- package/schema/.snootobuf/deps/enum/hateful_content_threshold.proto +12 -0
- package/schema/.snootobuf/deps/enum/link_content_type.proto +11 -0
- package/schema/.snootobuf/deps/enum/link_type.proto +11 -0
- package/schema/.snootobuf/deps/enum/link_visibility.proto +11 -0
- package/schema/.snootobuf/deps/enum/prediction_leaderboard_entry_type.proto +11 -0
- package/schema/.snootobuf/deps/enum/promo_layout.proto +11 -0
- package/schema/.snootobuf/deps/enum/removed_by_type.proto +18 -0
- package/schema/.snootobuf/deps/enum/spam_level.proto +11 -0
- package/schema/.snootobuf/deps/enum/subreddit_type.proto +16 -0
- package/schema/.snootobuf/deps/enum/verdict.proto +14 -0
- package/schema/.snootobuf/deps/enum/vote.proto +12 -0
- package/schema/.snootobuf/deps/enum/whitelist_status.proto +17 -0
- package/schema/.snootobuf/deps/enum/wiki_edit_mode.proto +12 -0
- package/schema/.snootobuf/deps/evaluator/evaluator.proto +203 -0
- package/schema/.snootobuf/deps/google/api/annotations.proto +31 -0
- package/schema/.snootobuf/deps/google/api/apikeys/v2/apikeys.proto +288 -0
- package/schema/.snootobuf/deps/google/api/apikeys/v2/resources.proto +175 -0
- package/schema/.snootobuf/deps/google/api/auth.proto +237 -0
- package/schema/.snootobuf/deps/google/api/backend.proto +185 -0
- package/schema/.snootobuf/deps/google/api/billing.proto +77 -0
- package/schema/.snootobuf/deps/google/api/client.proto +431 -0
- package/schema/.snootobuf/deps/google/api/cloudquotas/v1/cloudquotas.proto +322 -0
- package/schema/.snootobuf/deps/google/api/cloudquotas/v1/resources.proto +315 -0
- package/schema/.snootobuf/deps/google/api/config_change.proto +84 -0
- package/schema/.snootobuf/deps/google/api/consumer.proto +82 -0
- package/schema/.snootobuf/deps/google/api/context.proto +92 -0
- package/schema/.snootobuf/deps/google/api/control.proto +41 -0
- package/schema/.snootobuf/deps/google/api/distribution.proto +213 -0
- package/schema/.snootobuf/deps/google/api/documentation.proto +168 -0
- package/schema/.snootobuf/deps/google/api/endpoint.proto +69 -0
- package/schema/.snootobuf/deps/google/api/error_reason.proto +589 -0
- package/schema/.snootobuf/deps/google/api/expr/conformance/v1alpha1/conformance_service.proto +183 -0
- package/schema/.snootobuf/deps/google/api/expr/v1alpha1/checked.proto +343 -0
- package/schema/.snootobuf/deps/google/api/expr/v1alpha1/eval.proto +118 -0
- package/schema/.snootobuf/deps/google/api/expr/v1alpha1/explain.proto +53 -0
- package/schema/.snootobuf/deps/google/api/expr/v1alpha1/syntax.proto +438 -0
- package/schema/.snootobuf/deps/google/api/expr/v1alpha1/value.proto +115 -0
- package/schema/.snootobuf/deps/google/api/expr/v1beta1/decl.proto +84 -0
- package/schema/.snootobuf/deps/google/api/expr/v1beta1/eval.proto +125 -0
- package/schema/.snootobuf/deps/google/api/expr/v1beta1/expr.proto +265 -0
- package/schema/.snootobuf/deps/google/api/expr/v1beta1/source.proto +62 -0
- package/schema/.snootobuf/deps/google/api/expr/v1beta1/value.proto +114 -0
- package/schema/.snootobuf/deps/google/api/field_behavior.proto +104 -0
- package/schema/.snootobuf/deps/google/api/field_info.proto +106 -0
- package/schema/.snootobuf/deps/google/api/http.proto +371 -0
- package/schema/.snootobuf/deps/google/api/httpbody.proto +81 -0
- package/schema/.snootobuf/deps/google/api/label.proto +48 -0
- package/schema/.snootobuf/deps/google/api/launch_stage.proto +72 -0
- package/schema/.snootobuf/deps/google/api/log.proto +54 -0
- package/schema/.snootobuf/deps/google/api/logging.proto +81 -0
- package/schema/.snootobuf/deps/google/api/metric.proto +268 -0
- package/schema/.snootobuf/deps/google/api/monitored_resource.proto +130 -0
- package/schema/.snootobuf/deps/google/api/monitoring.proto +107 -0
- package/schema/.snootobuf/deps/google/api/policy.proto +85 -0
- package/schema/.snootobuf/deps/google/api/quota.proto +184 -0
- package/schema/.snootobuf/deps/google/api/resource.proto +243 -0
- package/schema/.snootobuf/deps/google/api/routing.proto +461 -0
- package/schema/.snootobuf/deps/google/api/service.proto +191 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v1/check_error.proto +124 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v1/distribution.proto +166 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v1/http_request.proto +93 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v1/log_entry.proto +126 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v1/metric_value.proto +81 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v1/operation.proto +123 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v1/quota_controller.proto +245 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v1/service_controller.proto +260 -0
- package/schema/.snootobuf/deps/google/api/servicecontrol/v2/service_controller.proto +196 -0
- package/schema/.snootobuf/deps/google/api/servicemanagement/v1/resources.proto +295 -0
- package/schema/.snootobuf/deps/google/api/servicemanagement/v1/servicemanager.proto +508 -0
- package/schema/.snootobuf/deps/google/api/serviceusage/v1/resources.proto +130 -0
- package/schema/.snootobuf/deps/google/api/serviceusage/v1/serviceusage.proto +305 -0
- package/schema/.snootobuf/deps/google/api/serviceusage/v1beta1/resources.proto +458 -0
- package/schema/.snootobuf/deps/google/api/serviceusage/v1beta1/serviceusage.proto +793 -0
- package/schema/.snootobuf/deps/google/api/source_info.proto +31 -0
- package/schema/.snootobuf/deps/google/api/system_parameter.proto +96 -0
- package/schema/.snootobuf/deps/google/api/usage.proto +96 -0
- package/schema/.snootobuf/deps/google/api/visibility.proto +113 -0
- package/schema/.snootobuf/deps/google/cloud/extended_operations.proto +150 -0
- package/schema/.snootobuf/deps/google/iam/admin/v1/iam.proto +1087 -0
- package/schema/.snootobuf/deps/google/iam/v1/iam_policy.proto +145 -0
- package/schema/.snootobuf/deps/google/iam/v1/logging/audit_data.proto +34 -0
- package/schema/.snootobuf/deps/google/iam/v1/options.proto +41 -0
- package/schema/.snootobuf/deps/google/iam/v1/policy.proto +240 -0
- package/schema/.snootobuf/deps/google/logging/type/http_request.proto +92 -0
- package/schema/.snootobuf/deps/google/logging/type/log_severity.proto +72 -0
- package/schema/.snootobuf/deps/google/longrunning/operations.proto +247 -0
- package/schema/.snootobuf/deps/google/protobuf/any.proto +158 -0
- package/schema/.snootobuf/deps/google/protobuf/api.proto +208 -0
- package/schema/.snootobuf/deps/google/protobuf/compiler/plugin.proto +183 -0
- package/schema/.snootobuf/deps/google/protobuf/descriptor.proto +921 -0
- package/schema/.snootobuf/deps/google/protobuf/duration.proto +116 -0
- package/schema/.snootobuf/deps/google/protobuf/empty.proto +51 -0
- package/schema/.snootobuf/deps/google/protobuf/field_mask.proto +245 -0
- package/schema/.snootobuf/deps/google/protobuf/source_context.proto +48 -0
- package/schema/.snootobuf/deps/google/protobuf/struct.proto +95 -0
- package/schema/.snootobuf/deps/google/protobuf/timestamp.proto +147 -0
- package/schema/.snootobuf/deps/google/protobuf/type.proto +187 -0
- package/schema/.snootobuf/deps/google/protobuf/wrappers.proto +123 -0
- package/schema/.snootobuf/deps/google/rpc/code.proto +186 -0
- package/schema/.snootobuf/deps/google/rpc/context/attribute_context.proto +287 -0
- package/schema/.snootobuf/deps/google/rpc/error_details.proto +246 -0
- package/schema/.snootobuf/deps/google/rpc/status.proto +47 -0
- package/schema/.snootobuf/deps/google/type/calendar_period.proto +57 -0
- package/schema/.snootobuf/deps/google/type/color.proto +170 -0
- package/schema/.snootobuf/deps/google/type/date.proto +50 -0
- package/schema/.snootobuf/deps/google/type/datetime.proto +97 -0
- package/schema/.snootobuf/deps/google/type/dayofweek.proto +51 -0
- package/schema/.snootobuf/deps/google/type/expr.proto +51 -0
- package/schema/.snootobuf/deps/google/type/fraction.proto +34 -0
- package/schema/.snootobuf/deps/google/type/latlng.proto +37 -0
- package/schema/.snootobuf/deps/google/type/money.proto +43 -0
- package/schema/.snootobuf/deps/google/type/month.proto +66 -0
- package/schema/.snootobuf/deps/google/type/postal_address.proto +135 -0
- package/schema/.snootobuf/deps/google/type/quaternion.proto +95 -0
- package/schema/.snootobuf/deps/google/type/timeofday.proto +44 -0
- package/schema/.snootobuf/deps/openapi/helper.proto +20 -0
- package/schema/.snootobuf/deps/products-api/protos/reddit/xpaymentsplatform/payproducts/v1/currencies.proto +189 -0
- package/schema/.snootobuf/deps/products-api/protos/reddit/xpaymentsplatform/payproducts/v1/payproducts.proto +118 -0
- package/schema/.snootobuf/deps/reddit/api/metadata/v1/metadata.proto +55 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/account/v1/account.proto +579 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/account/v1/account_relations.proto +43 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/api/metadata/v1/metadata.proto +82 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/blocking/v1/user_blocking_service.proto +221 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comment_tree.proto +78 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comment_tree_service.proto +189 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comment_tree_structure.proto +29 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comments.proto +417 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comments_service.proto +72 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/auth.proto +25 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/features.proto +52 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/lang.proto +16 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/legal.proto +20 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/media.proto +149 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/moderation.proto +197 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/safety.proto +116 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/time.proto +25 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/domains/v1/domains_metadata_service.proto +101 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/grpc_thrift/v1/grpc_thrift_options.proto +34 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/links/v1/links.proto +798 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/links/v1/links_service.proto +186 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/messages/v1/messages.proto +110 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/sensitive/v1/wrappers.proto +51 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/subreddit/v1/subreddit.proto +1202 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/subreddit/v1/subreddit_member_relations.proto +85 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/subreddit/v1/subreddit_moderator_service.proto +363 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/subreddit/v1/subreddit_service.proto +301 -0
- package/schema/.snootobuf/deps/reddit/coreplatform/thing/v0/thing.proto +2869 -0
- package/schema/.snootobuf/deps/reddit/devvit/custom_post/v1/custom_post.proto +15 -0
- package/schema/.snootobuf/deps/reddit/devvit/custom_post/v1/service.proto +11 -0
- package/schema/.snootobuf/deps/reddit/devvit/subreddit/v1/context_action.proto +48 -0
- package/schema/.snootobuf/deps/reddit/devvit/subreddit/v1/manifest.proto +70 -0
- package/schema/.snootobuf/deps/reddit/devvit/subreddit/v1/service.proto +11 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/acknowledge_order_delivery.proto +17 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/checkout.proto +89 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/common.proto +322 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/delete_products.proto +17 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/events.proto +14 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_batch_products.proto +15 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_gold_balances.proto +48 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_order.proto +31 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_orders.proto +26 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_orders_by_user.proto +15 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_payout_info_batch.proto +52 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_products.proto +23 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_user_profiles.proto +28 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/refund_order.proto +17 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/service.proto +49 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/service_data_compliance.proto +20 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/upsert_products.proto +17 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paygatewaypsps/v1/paygatewaypsps.proto +158 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payorders/v1/payments_data_compliance.proto +18 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payorders/v1/payorders.proto +195 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paypayments/v1/admin.proto +44 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paypayments/v1/ledger.proto +200 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paypayments/v1/payments_data_compliance.proto +18 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paypayments/v1/paypayments.proto +210 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payproducts/v1/currencies.proto +189 -0
- package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payproducts/v1/payproducts.proto +135 -0
- package/schema/.snootobuf/deps/snooron_sources/text_classification/text_classification.proto +29 -0
- package/schema/.snootobuf/deps/snooron_sources/v2_event/v2_event.proto +3292 -0
- package/schema/.snootobuf/deps/validate/validate.proto +862 -0
- package/schema/devvit/plugin/buildpack/buildpack_common.proto +6 -1
- package/schema/snootobuf.devenv.lock +210 -102
- package/schema/snootobuf.lock +210 -102
- package/schema/snootobuf.redditapi.lock +210 -102
- package/schema/snootobuf.ts.lock +210 -102
- package/types/devvit/dev_portal/dev_portal.d.ts +2 -0
- package/types/devvit/dev_portal/dev_portal.d.ts.map +1 -1
- package/types/devvit/plugin/builder/builder.d.ts +4 -0
- package/types/devvit/plugin/builder/builder.d.ts.map +1 -1
- package/types/devvit/plugin/buildpack/buildpack.d.ts +8 -0
- package/types/devvit/plugin/buildpack/buildpack.d.ts.map +1 -1
- package/types/devvit/plugin/buildpack/buildpack_common.d.ts +3 -0
- package/types/devvit/plugin/buildpack/buildpack_common.d.ts.map +1 -1
- package/types/devvit/plugin/buildpack/buildpack_common.js +37 -1
- package/types/devvit/plugin/linker/linker.d.ts +2 -0
- package/types/devvit/plugin/linker/linker.d.ts.map +1 -1
- package/types/devvit/plugin/linker/resolver.d.ts +2 -0
- package/types/devvit/plugin/linker/resolver.d.ts.map +1 -1
@@ -0,0 +1,773 @@
|
|
1
|
+
syntax = "proto3";
|
2
|
+
|
3
|
+
package devvit.data.api.v1alpha;
|
4
|
+
|
5
|
+
import "buf/validate/validate.proto";
|
6
|
+
import "devvit/events/v1alpha/events.proto";
|
7
|
+
import "devvit/options/options.proto";
|
8
|
+
import "devvit/reddit/v2alpha/postv2.proto";
|
9
|
+
import "devvit/reddit/v2alpha/subredditv2.proto";
|
10
|
+
import "google/api/field_behavior.proto";
|
11
|
+
import "google/protobuf/timestamp.proto";
|
12
|
+
import "google/protobuf/wrappers.proto";
|
13
|
+
import "openapi/helper.proto";
|
14
|
+
|
15
|
+
option go_package = "github.snooguts.net/reddit/devplatform-api/go/grpc/devvit/data/api/v1alpha";
|
16
|
+
|
17
|
+
// Enum for vote thing types.
|
18
|
+
enum VoteType {
|
19
|
+
UNKNOWN = 0;
|
20
|
+
POST = 1;
|
21
|
+
COMMENT = 2;
|
22
|
+
}
|
23
|
+
|
24
|
+
enum ModActionType {
|
25
|
+
UNKNOWN_MOD_ACTION = 0;
|
26
|
+
EDIT_POST_FLAIR = 3;
|
27
|
+
EDIT_USER_FLAIR = 4;
|
28
|
+
LOCK_POST = 5;
|
29
|
+
LOCK_COMMENT = 6;
|
30
|
+
SPAM_POST = 7;
|
31
|
+
SPAM_COMMENT = 8;
|
32
|
+
DISTINGUISH_POST = 9;
|
33
|
+
DISTINGUISH_COMMENT = 10;
|
34
|
+
STICKY_POST = 11;
|
35
|
+
STICKY_COMMENT = 12;
|
36
|
+
reserved 1, 2;
|
37
|
+
reserved "APPROVE_POST", "APPROVE_COMMENT";
|
38
|
+
}
|
39
|
+
|
40
|
+
// Post create event
|
41
|
+
message PostCreateFirehose {
|
42
|
+
// Provides information about the post, including the post id, author, and time it was created.
|
43
|
+
PostFirehose post = 1 [(buf.validate.field).required = true];
|
44
|
+
// Identifies the user who created the post and includes user’s url.
|
45
|
+
UserFirehose author = 2 [(buf.validate.field).required = true];
|
46
|
+
// Lists the subreddit associated with the post by name and subreddit id.
|
47
|
+
SubredditFirehose subreddit = 10 [(buf.validate.field).required = true];
|
48
|
+
}
|
49
|
+
|
50
|
+
// Comment create event
|
51
|
+
message CommentCreateFirehose {
|
52
|
+
// Provides information about the comment, including the comment id, content, and time it was created.
|
53
|
+
CommentFirehose comment = 1 [(buf.validate.field).required = true];
|
54
|
+
// Identifies the user who created the comment and includes user’s url.
|
55
|
+
UserFirehose author = 2 [(buf.validate.field).required = true];
|
56
|
+
// Provides information about the post associated with the comment, including the post id, author, and time it was created.
|
57
|
+
PostFirehose post = 3 [(buf.validate.field).required = true];
|
58
|
+
// Lists the subreddit associated with the post by name and subreddit id.
|
59
|
+
SubredditFirehose subreddit = 10 [(buf.validate.field).required = true];
|
60
|
+
}
|
61
|
+
|
62
|
+
// Delete post/comment/account event. Event Type will be one of POST_DELETE, COMMENT_DELETE, or ACCOUNT_DELETE.
|
63
|
+
message DeletionFirehose {
|
64
|
+
// Lists the id of the post or comment object that was deleted.
|
65
|
+
string id = 1 [
|
66
|
+
(buf.validate.field).required = true,
|
67
|
+
(buf.validate.field).string.pattern = "(t1_|t3_|t2_).*",
|
68
|
+
(openapi.field_example) = "t1_kiidxv1"
|
69
|
+
];
|
70
|
+
// Shows the timestamp indicating when the object was deleted.
|
71
|
+
google.protobuf.Timestamp deleted_at = 2 [
|
72
|
+
(buf.validate.field).required = true,
|
73
|
+
(openapi.field_example) = "2024-01-19T00:07:46.873Z"
|
74
|
+
];
|
75
|
+
// Timestamp of the time when the object was created at
|
76
|
+
google.protobuf.Timestamp created_at = 3 [(openapi.field_example) = "2024-01-18T23:28:23.170Z"];
|
77
|
+
// Shows the post id associated with the deleted comment (for commentDelete only).
|
78
|
+
string post_id = 4 [(openapi.field_example) = "t3_19a2zv6"];
|
79
|
+
// Permalink to deleted object
|
80
|
+
string permalink = 5 [(openapi.field_example) = "/r/Cricket/comments/19a2zv6/comment/kiidxv1"];
|
81
|
+
// Who initiated the deletion.
|
82
|
+
devvit.events.v1alpha.EventSource source = 6 [(openapi.field_example) = "USER"];
|
83
|
+
// Username of the account which is deleted (for account deletes only)
|
84
|
+
string name = 7 [(openapi.field_example) = "sassyshalimar"];
|
85
|
+
// Reason for the deletion. Currently, this is only populated for admin deletions. Reasons:
|
86
|
+
// * EXPLICIT_CONTENT indicates content or account is sexually explicit.
|
87
|
+
// * LEGAL indicates content or account may violate law, rule, or regulation.
|
88
|
+
// * OTHER indicates content or account may violate Reddit policy.
|
89
|
+
// * SPAM indicates content or account identified by Reddit as spam.
|
90
|
+
// * UNKNOWN indicates content or account was removed for unknown reason.
|
91
|
+
// * UNSPECIFIED_DELETION_REASON will not be sent, as it is the default value.
|
92
|
+
devvit.events.v1alpha.DeletionReason reason = 8 [(openapi.field_example) = "LEGAL"];
|
93
|
+
}
|
94
|
+
|
95
|
+
// Post edit event
|
96
|
+
message PostEditFirehose {
|
97
|
+
// Provides information about the post, including the post id, author, and time it was created.
|
98
|
+
PostFirehose post = 1 [(buf.validate.field).required = true];
|
99
|
+
// Identifies the user who edited the post and includes user’s url.
|
100
|
+
UserFirehose author = 2 [(buf.validate.field).required = true];
|
101
|
+
// Lists the subreddit associated with the post by name and subreddit id.
|
102
|
+
SubredditFirehose subreddit = 10 [(buf.validate.field).required = true];
|
103
|
+
|
104
|
+
// removed fields
|
105
|
+
reserved 3;
|
106
|
+
reserved "previous_body";
|
107
|
+
}
|
108
|
+
|
109
|
+
// Comment edit event
|
110
|
+
message CommentEditFirehose {
|
111
|
+
// Provides information about the comment, including the comment id, author, and time it was created.
|
112
|
+
CommentFirehose comment = 1 [(buf.validate.field).required = true];
|
113
|
+
// Identifies the user who edited the post and includes user’s url.
|
114
|
+
UserFirehose author = 2 [(buf.validate.field).required = true];
|
115
|
+
// Contains the original content before the post was edited.
|
116
|
+
PostFirehose post = 3 [(buf.validate.field).required = true];
|
117
|
+
// Lists the subreddit associated with the comment by name and subreddit id.
|
118
|
+
SubredditFirehose subreddit = 10 [(buf.validate.field).required = true];
|
119
|
+
|
120
|
+
// removed fields
|
121
|
+
reserved 4;
|
122
|
+
reserved "previous_body";
|
123
|
+
}
|
124
|
+
|
125
|
+
// Post approve event
|
126
|
+
message PostApproveFirehose {
|
127
|
+
// Provides information about the post, including the post id, author, and time it was created.
|
128
|
+
PostFirehose post = 1 [(buf.validate.field).required = true];
|
129
|
+
// Identifies the user who authored the post and includes user’s url.
|
130
|
+
UserFirehose author = 2 [(buf.validate.field).required = true];
|
131
|
+
// Shows the timestamp indicating when the object was approved.
|
132
|
+
google.protobuf.Timestamp approved_at = 4 [
|
133
|
+
(devvit.options.trigger_evt_path) = "approved_at",
|
134
|
+
(buf.validate.field).required = true
|
135
|
+
];
|
136
|
+
// Who initiated the approval.
|
137
|
+
devvit.events.v1alpha.EventSource source = 5 [
|
138
|
+
(devvit.options.trigger_evt_path) = "source",
|
139
|
+
(openapi.field_example) = "ADMIN",
|
140
|
+
(buf.validate.field).required = true
|
141
|
+
];
|
142
|
+
// Lists the subreddit associated with the post by name and subreddit id.
|
143
|
+
SubredditFirehose subreddit = 10 [(buf.validate.field).required = true];
|
144
|
+
}
|
145
|
+
|
146
|
+
// Comment approve event
|
147
|
+
message CommentApproveFirehose {
|
148
|
+
// Provides information about the comment, including the comment id, author, and time it was created.
|
149
|
+
CommentFirehose comment = 1 [(buf.validate.field).required = true];
|
150
|
+
// Provides information about the post, including the post id, author, and time it was created.
|
151
|
+
PostFirehose post = 2 [(buf.validate.field).required = true];
|
152
|
+
// Identifies the user who authored the comment and includes user’s url.
|
153
|
+
UserFirehose author = 3 [(buf.validate.field).required = true];
|
154
|
+
// Shows the timestamp indicating when the object was approved.
|
155
|
+
google.protobuf.Timestamp approved_at = 4 [
|
156
|
+
(devvit.options.trigger_evt_path) = "approved_at",
|
157
|
+
(buf.validate.field).required = true
|
158
|
+
];
|
159
|
+
// Who initiated the approval.
|
160
|
+
devvit.events.v1alpha.EventSource source = 5 [
|
161
|
+
(buf.validate.field).required = true,
|
162
|
+
(devvit.options.trigger_evt_path) = "source",
|
163
|
+
(openapi.field_example) = "ADMIN"
|
164
|
+
];
|
165
|
+
// Lists the subreddit associated with the comment by name and subreddit id.
|
166
|
+
SubredditFirehose subreddit = 10 [(buf.validate.field).required = true];
|
167
|
+
}
|
168
|
+
|
169
|
+
// Vote event
|
170
|
+
message VoteFirehose {
|
171
|
+
// Lists the id of the comment or post receiving the vote event.
|
172
|
+
string id = 1 [
|
173
|
+
(buf.validate.field).required = true,
|
174
|
+
(buf.validate.field).string.pattern = "(t1_|t3_).*",
|
175
|
+
(openapi.field_example) = "t3_193x7ph"
|
176
|
+
];
|
177
|
+
// Specifies the object (comment or post).
|
178
|
+
VoteType type = 5 [
|
179
|
+
(buf.validate.field).required = true,
|
180
|
+
(openapi.field_example) = "POST"
|
181
|
+
];
|
182
|
+
// Populated when COMMENT, postid associated with the comment
|
183
|
+
string post_id = 6 [(openapi.field_example) = "t3_193x7ph"];
|
184
|
+
// Populated when COMMENT, timestamp of when post was created
|
185
|
+
google.protobuf.Timestamp post_created_at = 7;
|
186
|
+
// Provides the timestamp when the most recent votes were calculated.
|
187
|
+
google.protobuf.Timestamp updated_at = 4 [(buf.validate.field).required = true];
|
188
|
+
// Permalink to the object
|
189
|
+
string permalink = 8 [
|
190
|
+
(buf.validate.field).required = true,
|
191
|
+
(buf.validate.field).string.prefix = "/r/",
|
192
|
+
(openapi.field_example) = "/r/MARIOPARTY/comments/193x7ph"
|
193
|
+
];
|
194
|
+
// Upvote ratio i.e u / (u + d) where u = upvotes and d = downvotes
|
195
|
+
google.protobuf.FloatValue upvote_ratio = 9 [
|
196
|
+
(buf.validate.field).required = true,
|
197
|
+
(openapi.field_example) = "0.94871795"
|
198
|
+
];
|
199
|
+
// Score is the number of upvotes minus the number of downvotes on a post/comment. The score is 0 when there are no votes or an equal number of upvotes and downvotes. A negative score indicates more downvotes than upvotes, while a positive score reflects more upvotes than downvotes.
|
200
|
+
google.protobuf.Int32Value score = 10 [
|
201
|
+
(buf.validate.field).required = true,
|
202
|
+
(openapi.field_example) = "35"
|
203
|
+
]; // Int32Value allows us to send '0' value
|
204
|
+
// Populated when COMMENT, timestamp of when comment was created
|
205
|
+
google.protobuf.Timestamp comment_created_at = 11;
|
206
|
+
|
207
|
+
// removed fields
|
208
|
+
reserved 2, 3;
|
209
|
+
reserved "upvotes", "downvotes";
|
210
|
+
}
|
211
|
+
|
212
|
+
// Mod action event (beta)
|
213
|
+
message ModActionFirehose {
|
214
|
+
// Provides the id of the mod action type (like removing content or banning a user)
|
215
|
+
string id = 1 [
|
216
|
+
(buf.validate.field).required = true,
|
217
|
+
(openapi.field_example) = "t3_abc"
|
218
|
+
];
|
219
|
+
// Describes the mod action (like editing settings or creating a rule). You will never receive an action of type UNKNOWN_MOD_ACTION.
|
220
|
+
ModActionType action = 2 [
|
221
|
+
(buf.validate.field).required = true,
|
222
|
+
(openapi.field_example) = "LOCK_POST"
|
223
|
+
];
|
224
|
+
// Provides the timestamp when the action occurred.
|
225
|
+
google.protobuf.Timestamp actioned_at = 3 [(buf.validate.field).required = true];
|
226
|
+
// Lists the subreddit associated with the action.
|
227
|
+
SubredditFirehose subreddit = 10 [(buf.validate.field).required = true];
|
228
|
+
|
229
|
+
// The permalink for the post or comment that received the mod action.
|
230
|
+
optional string permalink = 4 [(buf.validate.field).required = false];
|
231
|
+
|
232
|
+
// The timestamp indicating when the mod action occurred on the post or comment.
|
233
|
+
optional google.protobuf.Timestamp created_at = 5 [(buf.validate.field).required = false];
|
234
|
+
}
|
235
|
+
|
236
|
+
// Info about Post
|
237
|
+
message PostFirehose {
|
238
|
+
// Unique post id
|
239
|
+
string id = 1 [
|
240
|
+
(devvit.options.trigger_evt_path) = "post.id",
|
241
|
+
(devvit.options.im_path) = "post.id",
|
242
|
+
(buf.validate.field).required = true,
|
243
|
+
(buf.validate.field).string.prefix = "t3_",
|
244
|
+
(openapi.field_example) = "t3_1798o2e"
|
245
|
+
];
|
246
|
+
// Title of the post
|
247
|
+
string title = 2 [
|
248
|
+
(devvit.options.trigger_evt_path) = "post.title",
|
249
|
+
(devvit.options.im_path) = "post.title",
|
250
|
+
(buf.validate.field).required = true,
|
251
|
+
(openapi.field_example) = "Reddit Conversion Lift and Lift Study Framework"
|
252
|
+
];
|
253
|
+
// Post body
|
254
|
+
string body = 3 [
|
255
|
+
(devvit.options.trigger_evt_path) = "post.selftext",
|
256
|
+
(devvit.options.im_path) = "post.body",
|
257
|
+
(openapi.field_example) = "Written by Yimin Wu and Ellis Miranda. At the end of May 2023, Reddit launched Reddit Conversion Lift (RCL) product to General Availability. Reddit Conversion Lift (RCL) is the Reddit first-party measurement solution that enables marketers to evaluate the incremental impact of Reddit ads on driving conversions (conversion is an action that our advertisers define as valuable to their business, such as an online purchase or a subscription of their service, etc). It measures the number of conversions that were caused by exposure to ads on Reddit."
|
258
|
+
];
|
259
|
+
// URL the post points to. It can be an external URL in case of link posts, a URL to an image in case of image posts, or a permalink to the Reddit post.
|
260
|
+
string url = 4 [
|
261
|
+
(devvit.options.trigger_evt_path) = "post.url",
|
262
|
+
(devvit.options.im_path) = "post.url",
|
263
|
+
(openapi.field_example) = "/r/RedditEng/comments/1798o2e/reddit_conversion_lift_and_lift_study_framework/"
|
264
|
+
];
|
265
|
+
// Timestamp for when post was created
|
266
|
+
google.protobuf.Timestamp created_at = 5 [
|
267
|
+
(devvit.options.trigger_evt_path) = "post.created_at",
|
268
|
+
(devvit.options.im_path) = "post.created_at",
|
269
|
+
(buf.validate.field).required = true
|
270
|
+
];
|
271
|
+
// Flair
|
272
|
+
optional PostFlairFirehose flair = 6;
|
273
|
+
// Language
|
274
|
+
string language_code = 9 [
|
275
|
+
(devvit.options.trigger_evt_path) = "post.language_code",
|
276
|
+
(devvit.options.im_path) = "post.language_code",
|
277
|
+
(openapi.field_example) = "en"
|
278
|
+
];
|
279
|
+
// When the post was last updated
|
280
|
+
google.protobuf.Timestamp updated_at = 10 [
|
281
|
+
(devvit.options.trigger_evt_path) = "post.updated_at",
|
282
|
+
(devvit.options.im_path) = "post.last_modified_at"
|
283
|
+
];
|
284
|
+
// Gildings
|
285
|
+
int32 gildings = 11 [
|
286
|
+
(devvit.options.trigger_evt_path) = "post.gildings",
|
287
|
+
(devvit.options.im_path) = "post.gildings"
|
288
|
+
];
|
289
|
+
// Post score based on the number of upvotes minus the number of downvotes.
|
290
|
+
int32 score = 12 [
|
291
|
+
(devvit.options.trigger_evt_path) = "post.score",
|
292
|
+
(devvit.options.im_path) = "post.score",
|
293
|
+
(openapi.field_example) = "18"
|
294
|
+
];
|
295
|
+
// Number of comments on the post
|
296
|
+
int32 num_comments = 13 [
|
297
|
+
(devvit.options.trigger_evt_path) = "post.num_comments",
|
298
|
+
(devvit.options.im_path) = "post.num_comments",
|
299
|
+
(openapi.field_example) = "5"
|
300
|
+
];
|
301
|
+
// Thumbnail associated with the post
|
302
|
+
string thumbnail = 14 [
|
303
|
+
(devvit.options.trigger_evt_path) = "post.thumbnail",
|
304
|
+
(devvit.options.im_path) = "post.thumbnail",
|
305
|
+
(openapi.field_example) = "https://b.thumbs.redditmedia.com/xRj014iby3672Hn0dEUfr953QCEY6h_uDQpwYkwcUlQ.jpg"
|
306
|
+
];
|
307
|
+
// Crosspost_parent_id
|
308
|
+
string crosspost_parent_id = 15 [
|
309
|
+
(devvit.options.trigger_evt_path) = "post.crosspost_parent_id",
|
310
|
+
(devvit.options.im_path) = "post.crosspost_parent_id",
|
311
|
+
(openapi.field_example) = "t3_186up3s"
|
312
|
+
];
|
313
|
+
// Media object associated with post
|
314
|
+
optional PostMediaObjectFirehose media = 16;
|
315
|
+
// Permalink of the post. Only the path of the URL is sent and needs to be prepended with `https://www.reddit.com`, to direct to the post on Reddit
|
316
|
+
string permalink = 17 [
|
317
|
+
(devvit.options.trigger_evt_path) = "post.permalink",
|
318
|
+
(devvit.options.im_path) = "post.permalink",
|
319
|
+
(buf.validate.field).required = true,
|
320
|
+
(buf.validate.field).string.prefix = "/r/",
|
321
|
+
(openapi.field_example) = "/r/RedditEng/comments/1798o2e/"
|
322
|
+
];
|
323
|
+
//This post has been flagged as not safe for work. This will only be present if true
|
324
|
+
bool nsfw = 18 [
|
325
|
+
(devvit.options.trigger_evt_path) = "post.nsfw",
|
326
|
+
(devvit.options.im_path) = "post.nsfw",
|
327
|
+
(openapi.field_example) = "true"
|
328
|
+
];
|
329
|
+
// A text post that does not contain an external link or media. This will only be present if true.
|
330
|
+
bool self = 19 [
|
331
|
+
(devvit.options.trigger_evt_path) = "post.is_self",
|
332
|
+
(devvit.options.im_path) = "post.self"
|
333
|
+
];
|
334
|
+
// Whether the post has been locked, preventing new comments. This will only be present if true
|
335
|
+
bool locked = 20 [
|
336
|
+
(devvit.options.trigger_evt_path) = "post.is_locked",
|
337
|
+
(devvit.options.im_path) = "post.locked",
|
338
|
+
(openapi.field_example) = "true"
|
339
|
+
];
|
340
|
+
// Whether this post has been stickied to the top of the subreddit’s feed. This will only be present if true
|
341
|
+
bool sticky = 21 [
|
342
|
+
(devvit.options.trigger_evt_path) = "post.is_sticky",
|
343
|
+
(devvit.options.im_path) = "post.sticky",
|
344
|
+
(openapi.field_example) = "true"
|
345
|
+
];
|
346
|
+
// Is a video post. This will only be present if true
|
347
|
+
bool video = 22 [
|
348
|
+
(devvit.options.trigger_evt_path) = "post.is_video",
|
349
|
+
(devvit.options.im_path) = "post.video",
|
350
|
+
(openapi.field_example) = "true"
|
351
|
+
];
|
352
|
+
// Whether this post includes a spoiler. This will only be present if true
|
353
|
+
bool spoiler = 23 [
|
354
|
+
(devvit.options.trigger_evt_path) = "post.is_spoiler",
|
355
|
+
(devvit.options.im_path) = "post.spoiler",
|
356
|
+
(openapi.field_example) = "true"
|
357
|
+
];
|
358
|
+
// Whether this post has been marked as spam. This will only be present if true
|
359
|
+
bool spam = 24 [
|
360
|
+
(devvit.options.trigger_evt_path) = "post.spam",
|
361
|
+
(devvit.options.im_path) = "post.spam",
|
362
|
+
(openapi.field_example) = "true"
|
363
|
+
];
|
364
|
+
// If present, denotes how a post has been distinguished by a moderator, admin or user. NULL_VALUE will never be sent in the response. If a post is not distinguished, then this field will be missing.
|
365
|
+
devvit.reddit.v2alpha.DistinguishType distinguished = 25 [
|
366
|
+
(devvit.options.trigger_evt_path) = "post.distinguished",
|
367
|
+
(devvit.options.im_path) = "post.distinguish_type",
|
368
|
+
(openapi.field_example) = "ADMIN"
|
369
|
+
];
|
370
|
+
// Identifies the type of post. It can be one of the following values image, video, link, poll, multi_media, crosspost, gallery, text or media.
|
371
|
+
string type = 26 [
|
372
|
+
(devvit.options.trigger_evt_path) = "post.type",
|
373
|
+
(devvit.options.im_path) = "post.type",
|
374
|
+
(openapi.field_example) = "image"
|
375
|
+
];
|
376
|
+
// User id of post author. If the post author account was deleted, this field will be `t2_0`.
|
377
|
+
string author_id = 27 [
|
378
|
+
(devvit.options.trigger_evt_path) = "post.author_id",
|
379
|
+
(devvit.options.im_path) = "post.author_id",
|
380
|
+
(openapi.field_example) = "t2_bcutkf4n"
|
381
|
+
];
|
382
|
+
// URLs to images in the gallery. This field is only present when `post.type='gallery'`.
|
383
|
+
repeated string gallery_images = 28 [
|
384
|
+
(devvit.options.trigger_evt_path) = "post.gallery_images",
|
385
|
+
(openapi.field_example) = "['http://i.redd.it/btosxb4kw47d1.jpg', 'http://i.redd.it/btosxb4kw47d1.jpg']"
|
386
|
+
];
|
387
|
+
|
388
|
+
// Whether this post has been approved. This will only be present if true
|
389
|
+
bool approved = 29 [
|
390
|
+
(devvit.options.trigger_evt_path) = "post.is_approved",
|
391
|
+
(openapi.field_example) = "true"
|
392
|
+
];
|
393
|
+
// removed fields
|
394
|
+
reserved 7, 8;
|
395
|
+
reserved "trending_score", "toxicity_score";
|
396
|
+
}
|
397
|
+
|
398
|
+
// PostFlairFirehose struct
|
399
|
+
message PostFlairFirehose {
|
400
|
+
// Text associated with post flair
|
401
|
+
string text = 1 [
|
402
|
+
(devvit.options.trigger_evt_path) = "post.link_flair.text",
|
403
|
+
(devvit.options.im_path) = "post.flair.text",
|
404
|
+
(openapi.field_example) = "Learning"
|
405
|
+
];
|
406
|
+
}
|
407
|
+
|
408
|
+
// PostMediaObjectFirehose struct
|
409
|
+
message PostMediaObjectFirehose {
|
410
|
+
// Post media type
|
411
|
+
string type = 1 [
|
412
|
+
(devvit.options.trigger_evt_path) = "post.media.type",
|
413
|
+
(devvit.options.im_path) = "post.media.type",
|
414
|
+
(openapi.field_example) = "youtube.com"
|
415
|
+
];
|
416
|
+
// Media object
|
417
|
+
optional MediaObjectOembedFirehose oembed = 2;
|
418
|
+
// Media object video
|
419
|
+
optional MediaObjectRedditVideoFirehose reddit_video = 3;
|
420
|
+
}
|
421
|
+
|
422
|
+
// Media object
|
423
|
+
message MediaObjectOembedFirehose {
|
424
|
+
// Media object type
|
425
|
+
string type = 1 [
|
426
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.type",
|
427
|
+
(devvit.options.im_path) = "post.media.oembed.type",
|
428
|
+
(openapi.field_example) = "video"
|
429
|
+
];
|
430
|
+
// Object version
|
431
|
+
string version = 2 [
|
432
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.version",
|
433
|
+
(devvit.options.im_path) = "post.media.oembed.version",
|
434
|
+
(openapi.field_example) = "'1.0'"
|
435
|
+
];
|
436
|
+
// Title associated with the object
|
437
|
+
string title = 3 [
|
438
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.title",
|
439
|
+
(devvit.options.im_path) = "post.media.oembed.title",
|
440
|
+
(openapi.field_example) = "'Reddit: Advertiser Audience Forecasting with Druid'"
|
441
|
+
];
|
442
|
+
// Object description
|
443
|
+
string description = 4 [
|
444
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.description",
|
445
|
+
(devvit.options.im_path) = "post.media.oembed.description",
|
446
|
+
(openapi.field_example) = "'1080'"
|
447
|
+
];
|
448
|
+
// Author name
|
449
|
+
string author_name = 5 [
|
450
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.author_name",
|
451
|
+
(devvit.options.im_path) = "post.media.oembed.author_name",
|
452
|
+
(openapi.field_example) = "Imply"
|
453
|
+
];
|
454
|
+
// Url to author's profile
|
455
|
+
string author_url = 6 [
|
456
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.author_url",
|
457
|
+
(devvit.options.im_path) = "post.media.oembed.author_url",
|
458
|
+
(openapi.field_example) = "https://www.youtube.com/@Implydata"
|
459
|
+
];
|
460
|
+
// Provider name
|
461
|
+
string provider_name = 7 [
|
462
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.provider_name",
|
463
|
+
(devvit.options.im_path) = "post.media.oembed.provider_name",
|
464
|
+
(openapi.field_example) = "YouTube"
|
465
|
+
];
|
466
|
+
// Provider url
|
467
|
+
string provider_url = 8 [
|
468
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.provider_url",
|
469
|
+
(devvit.options.im_path) = "post.media.oembed.provider_url",
|
470
|
+
(openapi.field_example) = "https://www.youtube.com/"
|
471
|
+
];
|
472
|
+
// Url to the thumbnail
|
473
|
+
string thumbnail_url = 9 [
|
474
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.thumbnail_url",
|
475
|
+
(devvit.options.im_path) = "post.media.oembed.thumbnail_url",
|
476
|
+
(openapi.field_example) = "https://i.ytimg.com/vi/7PRWDMRSAOw/hqdefault.jpg"
|
477
|
+
];
|
478
|
+
// Width of the thumbnail
|
479
|
+
int32 thumbnail_width = 10 [
|
480
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.thumbnail_width",
|
481
|
+
(devvit.options.im_path) = "post.media.oembed.thumbnail_size.width",
|
482
|
+
(openapi.field_example) = "1080"
|
483
|
+
];
|
484
|
+
// Height of the thumbnail
|
485
|
+
int32 thumbnail_height = 11 [
|
486
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.thumbnail_height",
|
487
|
+
(devvit.options.im_path) = "post.media.oembed.thumbnail_size.height",
|
488
|
+
(openapi.field_example) = "360"
|
489
|
+
];
|
490
|
+
// Html associated with the object
|
491
|
+
string html = 12 [
|
492
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.html",
|
493
|
+
(devvit.options.im_path) = "post.media.oembed.html",
|
494
|
+
(openapi.field_example) = "'<iframe width=356 height=200 src=https://www.youtube.com/embed/7PRWDMRSAOw?feature=oembed&enablejsapi=1 frameborder=0 allow=accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share allowfullscreen title=Reddit: Advertiser Audience Forecasting with Druid></iframe>'"
|
495
|
+
];
|
496
|
+
// Width of the object
|
497
|
+
int32 width = 13 [
|
498
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.width",
|
499
|
+
(devvit.options.im_path) = "post.media.oembed.size.width",
|
500
|
+
(openapi.field_example) = "356"
|
501
|
+
];
|
502
|
+
// Height of the object
|
503
|
+
int32 height = 14 [
|
504
|
+
(devvit.options.trigger_evt_path) = "post.media.oembed.height",
|
505
|
+
(devvit.options.im_path) = "post.media.oembed.size.height",
|
506
|
+
(openapi.field_example) = "200"
|
507
|
+
];
|
508
|
+
}
|
509
|
+
|
510
|
+
// MediaObjectRedditVideoFirehose
|
511
|
+
message MediaObjectRedditVideoFirehose {
|
512
|
+
// Bitrate of the video in kbps
|
513
|
+
int32 bitrate_kbps = 1 [
|
514
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.bitrate_kbps",
|
515
|
+
(devvit.options.im_path) = "post.media.reddit_video.bitrate_kbps",
|
516
|
+
(openapi.field_example) = "5000"
|
517
|
+
];
|
518
|
+
// Url to fallback on
|
519
|
+
string fallback_url = 2 [
|
520
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.fallback_url",
|
521
|
+
(devvit.options.im_path) = "post.media.reddit_video.fallback_url",
|
522
|
+
(openapi.field_example) = "https://v.redd.it/0k9toa8rlb3c1/DASH_1080.mp4?source=fallback"
|
523
|
+
];
|
524
|
+
// Height of the object
|
525
|
+
int32 height = 3 [
|
526
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.height",
|
527
|
+
(devvit.options.im_path) = "post.media.reddit_video.size.height",
|
528
|
+
(openapi.field_example) = "1080"
|
529
|
+
];
|
530
|
+
// Width of the object
|
531
|
+
int32 width = 4 [
|
532
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.width",
|
533
|
+
(devvit.options.im_path) = "post.media.reddit_video.size.width",
|
534
|
+
(openapi.field_example) = "1920"
|
535
|
+
];
|
536
|
+
// Media url
|
537
|
+
string scrubber_media_url = 5 [
|
538
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.scrubber_media_url",
|
539
|
+
(devvit.options.im_path) = "post.media.reddit_video.scrubber_media_url",
|
540
|
+
(openapi.field_example) = "https://v.redd.it/0k9toa8rlb3c1/DASH_96.mp4"
|
541
|
+
];
|
542
|
+
// Dash url
|
543
|
+
string dash_url = 6 [
|
544
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.dash_url",
|
545
|
+
(devvit.options.im_path) = "post.media.reddit_video.dash_url",
|
546
|
+
(openapi.field_example) = "https://v.redd.it/0k9toa8rlb3c1/DASHPlaylist.mpd?a=1708282201%2CMDY3ZWIyODIwZjJkYWFkNDhiMGEzYzI1ZTYwYTJlOWY3ODc2OWYxNmMwNjI1NDYzYTUzODkxYTNhNWVmNzIzZQ%3D%3D&v=1&f=sd"
|
547
|
+
];
|
548
|
+
// Duration of the video
|
549
|
+
int64 duration = 7 [
|
550
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.duration",
|
551
|
+
(devvit.options.im_path) = "post.media.reddit_video.duration",
|
552
|
+
(openapi.field_example) = "'57'"
|
553
|
+
];
|
554
|
+
// Hls url
|
555
|
+
string hls_url = 8 [
|
556
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.hls_url",
|
557
|
+
(devvit.options.im_path) = "post.media.reddit_video.hls_url",
|
558
|
+
(openapi.field_example) = "https://v.redd.it/0k9toa8rlb3c1/HLSPlaylist.m3u8?a=1708282201%2CMTBiYjcxZTgyODIxYTRhYjI0NGMxZjEzNmU0MTJhMDg2ZDQxNjJhMmEyYmVjYmJhYzk5MDhkNTAxODUzOTkwYw%3D%3D&v=1&f=sd"
|
559
|
+
];
|
560
|
+
// If the video is a gif. This will only be present if true
|
561
|
+
bool is_gif = 9 [
|
562
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.is_gif",
|
563
|
+
(devvit.options.im_path) = "post.media.reddit_video.is_gif",
|
564
|
+
(openapi.field_example) = "true"
|
565
|
+
];
|
566
|
+
// Transcoding score
|
567
|
+
string transcoding_status = 10 [
|
568
|
+
(devvit.options.trigger_evt_path) = "post.media.reddit_video.transcoding_status",
|
569
|
+
(devvit.options.im_path) = "post.media.reddit_video.transcoding_status",
|
570
|
+
(openapi.field_example) = "completed"
|
571
|
+
];
|
572
|
+
}
|
573
|
+
|
574
|
+
// Comment Firehose
|
575
|
+
message CommentFirehose {
|
576
|
+
// Id associated with the comment
|
577
|
+
string id = 1 [
|
578
|
+
(devvit.options.trigger_evt_path) = "comment.id",
|
579
|
+
(devvit.options.im_path) = "comment.id",
|
580
|
+
(buf.validate.field).required = true,
|
581
|
+
(buf.validate.field).string.prefix = "t1_",
|
582
|
+
(openapi.field_example) = "t1_k5kbkod"
|
583
|
+
];
|
584
|
+
// Body of the comment
|
585
|
+
string body = 2 [
|
586
|
+
(devvit.options.trigger_evt_path) = "comment.body",
|
587
|
+
(devvit.options.im_path) = "comment.body",
|
588
|
+
(openapi.field_example) = "Target Audience is decided by the Ads campaign. The role of lift studies is to conduct A/B tests by splitting the audience randomly and log the counterfactual events so we can measure lifts fair and square."
|
589
|
+
];
|
590
|
+
// Comment's parent id
|
591
|
+
string parent_id = 3 [
|
592
|
+
(devvit.options.trigger_evt_path) = "comment.parent_id",
|
593
|
+
(devvit.options.im_path) = "comment.parent_id",
|
594
|
+
(buf.validate.field).required = true,
|
595
|
+
(buf.validate.field).string.pattern = "(t1_|t3_).*",
|
596
|
+
(openapi.field_example) = "t1_k598r8o"
|
597
|
+
];
|
598
|
+
// Comment was created at
|
599
|
+
google.protobuf.Timestamp created_at = 4 [
|
600
|
+
(devvit.options.trigger_evt_path) = "comment.created_at",
|
601
|
+
(devvit.options.im_path) = "comment.created_at",
|
602
|
+
(buf.validate.field).required = true
|
603
|
+
];
|
604
|
+
// Language code (Note: this will be the language code for the associated post and not the comment itself.)
|
605
|
+
string language_code = 7 [
|
606
|
+
(devvit.options.trigger_evt_path) = "comment.language_code",
|
607
|
+
(devvit.options.im_path) = "comment.language_code",
|
608
|
+
(openapi.field_example) = "en"
|
609
|
+
];
|
610
|
+
// Last modified at
|
611
|
+
google.protobuf.Timestamp last_modified_at = 8 [
|
612
|
+
(devvit.options.trigger_evt_path) = "comment.last_modified_at",
|
613
|
+
(devvit.options.im_path) = "comment.last_modified_at"
|
614
|
+
];
|
615
|
+
// Gilded
|
616
|
+
bool gilded = 9 [
|
617
|
+
(devvit.options.trigger_evt_path) = "comment.gilded",
|
618
|
+
(devvit.options.im_path) = "comment.gilded"
|
619
|
+
];
|
620
|
+
// The comment's score based on the number of upvotes minus the number of downvotes.
|
621
|
+
int32 score = 10 [
|
622
|
+
(devvit.options.trigger_evt_path) = "comment.score",
|
623
|
+
(devvit.options.im_path) = "comment.score",
|
624
|
+
(openapi.field_example) = "8"
|
625
|
+
];
|
626
|
+
// Permalink of the comment
|
627
|
+
string permalink = 11 [
|
628
|
+
(devvit.options.trigger_evt_path) = "comment.permalink",
|
629
|
+
(devvit.options.im_path) = "comment.permalink",
|
630
|
+
(buf.validate.field).required = true,
|
631
|
+
(buf.validate.field).string.prefix = "/r/",
|
632
|
+
(openapi.field_example) = "/r/RedditEng/comments/1798o2e/comment/k5kbkod/"
|
633
|
+
];
|
634
|
+
// Comment element types, which can be animated-gif, img, text, link, or a combination of types, such as ['animated-gif', 'text', 'link']. Note that animated-gif and img cannot be combined.
|
635
|
+
// This field is blank for COMMENT_EDIT events. Use the element types from the original COMMENT_CREATE event.
|
636
|
+
repeated string element_types = 12 [
|
637
|
+
(devvit.options.trigger_evt_path) = "comment.element_types",
|
638
|
+
(devvit.options.im_path) = "comment.element_types",
|
639
|
+
(openapi.field_example) = "['animated-gif', 'text']"
|
640
|
+
];
|
641
|
+
|
642
|
+
// removed fields
|
643
|
+
reserved 5, 6;
|
644
|
+
reserved "trending_score", "toxicity_score";
|
645
|
+
}
|
646
|
+
|
647
|
+
// Subreddit info
|
648
|
+
message SubredditFirehose {
|
649
|
+
// Id of the subreddit
|
650
|
+
string id = 1 [
|
651
|
+
(devvit.options.trigger_evt_path) = "subreddit.id",
|
652
|
+
(buf.validate.field).required = true,
|
653
|
+
(buf.validate.field).string.prefix = "t5_",
|
654
|
+
(openapi.field_example) = "t5_49fkib"
|
655
|
+
];
|
656
|
+
// Name of the subreddit
|
657
|
+
string name = 2 [
|
658
|
+
(devvit.options.trigger_evt_path) = "subreddit.name",
|
659
|
+
(buf.validate.field).required = true,
|
660
|
+
(openapi.field_example) = "RedditEng"
|
661
|
+
];
|
662
|
+
// Topics associated with the subreddit. If a subreddit has not been classified with a topic yet, this field will contain "Unclassified".
|
663
|
+
repeated string topics = 3 [
|
664
|
+
(devvit.options.trigger_evt_path) = "subreddit.topics",
|
665
|
+
(buf.validate.field).required = true,
|
666
|
+
(openapi.field_example) = "['Career', 'Programming']"
|
667
|
+
];
|
668
|
+
// Do not send
|
669
|
+
devvit.reddit.v2alpha.SubredditRating rating = 5 [
|
670
|
+
(devvit.options.trigger_evt_path) = "subreddit.rating",
|
671
|
+
(google.api.field_behavior) = INPUT_ONLY
|
672
|
+
];
|
673
|
+
// Subscribers count on the subreddit
|
674
|
+
google.protobuf.Int32Value subscribers_count = 6 [
|
675
|
+
(devvit.options.trigger_evt_path) = "subreddit.subscribers_count",
|
676
|
+
(buf.validate.field).required = true,
|
677
|
+
(openapi.field_example) = "9857"
|
678
|
+
];
|
679
|
+
// Permalink of the subreddit
|
680
|
+
string permalink = 7 [
|
681
|
+
(devvit.options.trigger_evt_path) = "subreddit.permalink",
|
682
|
+
(buf.validate.field).required = true,
|
683
|
+
(buf.validate.field).string.prefix = "/r/",
|
684
|
+
(openapi.field_example) = "/r/RedditEng"
|
685
|
+
];
|
686
|
+
|
687
|
+
// If the subreddit has been marked as not-safe-for-work. This will only be present if true.
|
688
|
+
bool nsfw = 8 [
|
689
|
+
(devvit.options.trigger_evt_path) = "subreddit.nsfw",
|
690
|
+
(openapi.field_example) = "true"
|
691
|
+
];
|
692
|
+
|
693
|
+
// The type of the subreddit: PUBLIC, RESTRICTED, USER;
|
694
|
+
devvit.reddit.v2alpha.SubredditType type = 9 [
|
695
|
+
(devvit.options.trigger_evt_path) = "subreddit.type",
|
696
|
+
(openapi.field_example) = "PUBLIC"
|
697
|
+
];
|
698
|
+
|
699
|
+
// removed fields
|
700
|
+
reserved 4;
|
701
|
+
reserved "trending_score";
|
702
|
+
}
|
703
|
+
|
704
|
+
// User Flair is a tagging system used to distinguish trusted community members or highlight specialized areas of knowledge someone may have. It can also be used in a variety of other creative and fun ways, depending on what suits the community. This is an optional field and subject to user flair present on the subreddit and user choosing to have the flair in the subreddit.
|
705
|
+
message UserFlairFirehose {
|
706
|
+
string text = 1 [
|
707
|
+
(devvit.options.trigger_evt_path) = "author.flair.text",
|
708
|
+
(openapi.field_example) = "Super Contributor"
|
709
|
+
];
|
710
|
+
}
|
711
|
+
|
712
|
+
// User's info. To protect Reddit employee accounts from targeting or harassment, the user info may be redacted in some cases - e.g. post or comment removals where the post title or comment body is changed to "Removed by Reddit.
|
713
|
+
message UserFirehose {
|
714
|
+
// Id of the user. If the user account was deleted, this field will be `t2_0`.
|
715
|
+
string id = 1 [
|
716
|
+
(devvit.options.trigger_evt_path) = "author.id",
|
717
|
+
(buf.validate.field).string.prefix = "t2_",
|
718
|
+
(openapi.field_example) = "t2_bcutkf4n"
|
719
|
+
];
|
720
|
+
// Name of the user. If the user account was deleted, this field will be `[deleted]`.
|
721
|
+
string name = 2 [
|
722
|
+
(devvit.options.trigger_evt_path) = "author.name",
|
723
|
+
(buf.validate.field).required = true,
|
724
|
+
(openapi.field_example) = "sassyshalimar"
|
725
|
+
];
|
726
|
+
// The amount of fake internet points a user has earned based on upvotes
|
727
|
+
int64 karma = 4 [
|
728
|
+
(devvit.options.trigger_evt_path) = "author.karma",
|
729
|
+
(openapi.field_example) = "'45'"
|
730
|
+
];
|
731
|
+
// Url to the user's profile. If the user account was deleted, this field will be `https://www.reddit.com/`.
|
732
|
+
string url = 7 [
|
733
|
+
(devvit.options.trigger_evt_path) = "author.url",
|
734
|
+
(buf.validate.field).required = true,
|
735
|
+
(buf.validate.field).string.uri = true,
|
736
|
+
(openapi.field_example) = "https://www.reddit.com/user/sassyshalimar"
|
737
|
+
];
|
738
|
+
// Avatar image associated with the user
|
739
|
+
string snoovatar_image = 8 [
|
740
|
+
(devvit.options.trigger_evt_path) = "author.snoovatar_image",
|
741
|
+
(openapi.field_example) = "https://i.redd.it/snoovatar/avatars/84cb29a7-9219-45e9-a572-eb170ab34c3e.png"
|
742
|
+
];
|
743
|
+
|
744
|
+
optional UserFlairFirehose flair = 9;
|
745
|
+
|
746
|
+
// Icon image associated with the user. This could be the snoovatar image or a custom image the user has set as profile image.
|
747
|
+
string icon_image = 10 [
|
748
|
+
(devvit.options.trigger_evt_path) = "author.icon_image",
|
749
|
+
(openapi.field_example) = "https://i.redd.it/snoovatar/avatars/84cb29a7-9219-45e9-a572-eb170ab34c3e.png"
|
750
|
+
];
|
751
|
+
|
752
|
+
// User profile "about description"
|
753
|
+
string description = 11 [
|
754
|
+
(devvit.options.trigger_evt_path) = "author.description",
|
755
|
+
(openapi.field_example) = "Dog lover, foodie, and tech enthusiast."
|
756
|
+
];
|
757
|
+
|
758
|
+
// Whether this user has been banned. This will only be present if true
|
759
|
+
bool banned = 13 [
|
760
|
+
(devvit.options.trigger_evt_path) = "user.banned",
|
761
|
+
(openapi.field_example) = "true"
|
762
|
+
];
|
763
|
+
|
764
|
+
// Whether this user has been suspended. This will only be present if true
|
765
|
+
bool suspended = 14 [
|
766
|
+
(devvit.options.trigger_evt_path) = "user.suspended",
|
767
|
+
(openapi.field_example) = "true"
|
768
|
+
];
|
769
|
+
|
770
|
+
// removed fields
|
771
|
+
reserved 3, 5, 6;
|
772
|
+
reserved "account_age", "community_karma", "reputation_score";
|
773
|
+
}
|