summaryrefslogtreecommitdiff
path: root/internal/api/model
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/model')
-rw-r--r--internal/api/model/admin.go13
-rw-r--r--internal/api/model/instancev1.go2
-rw-r--r--internal/api/model/instancev2.go5
-rw-r--r--internal/api/model/report.go9
-rw-r--r--internal/api/model/rule.go41
5 files changed, 59 insertions, 11 deletions
diff --git a/internal/api/model/admin.go b/internal/api/model/admin.go
index cc449ab82..860cb8926 100644
--- a/internal/api/model/admin.go
+++ b/internal/api/model/admin.go
@@ -117,9 +117,9 @@ type AdminReport struct {
// Array of statuses that were submitted along with this report.
// Will be empty if no status IDs were submitted with the report.
Statuses []*Status `json:"statuses"`
- // Array of rule IDs that were submitted along with this report.
- // NOT IMPLEMENTED, will always be empty array.
- Rules []interface{} `json:"rule_ids"`
+ // Array of rules that were broken according to this report.
+ // Will be empty if no rule IDs were submitted with the report.
+ Rules []*InstanceRule `json:"rules"`
// If an action was taken, what comment was made by the admin on the taken action?
// Will be null if not set / no action yet taken.
// example: Account was suspended.
@@ -189,3 +189,10 @@ type AdminSendTestEmailRequest struct {
// Email address to send the test email to.
Email string `form:"email" json:"email" xml:"email"`
}
+
+type AdminInstanceRule struct {
+ ID string `json:"id"` // id of this item in the database
+ CreatedAt string `json:"created_at"` // when was item created
+ UpdatedAt string `json:"updated_at"` // when was item last updated
+ Text string `json:"text"` // text content of the rule
+}
diff --git a/internal/api/model/instancev1.go b/internal/api/model/instancev1.go
index 19682c1f1..3b3d215b0 100644
--- a/internal/api/model/instancev1.go
+++ b/internal/api/model/instancev1.go
@@ -88,6 +88,8 @@ type InstanceV1 struct {
//
// example: 5000
MaxTootChars uint `json:"max_toot_chars"`
+ // An itemized list of rules for this instance.
+ Rules []InstanceRule `json:"rules"`
}
// InstanceV1URLs models instance-relevant URLs for client application consumption.
diff --git a/internal/api/model/instancev2.go b/internal/api/model/instancev2.go
index 25d9c790d..3099b36c4 100644
--- a/internal/api/model/instancev2.go
+++ b/internal/api/model/instancev2.go
@@ -62,9 +62,8 @@ type InstanceV2 struct {
Registrations InstanceV2Registrations `json:"registrations"`
// Hints related to contacting a representative of the instance.
Contact InstanceV2Contact `json:"contact"`
- // An itemized list of rules for this website.
- // Currently not implemented (will always be empty array).
- Rules []interface{} `json:"rules"`
+ // An itemized list of rules for this instance.
+ Rules []InstanceRule `json:"rules"`
}
// Usage data for this instance.
diff --git a/internal/api/model/report.go b/internal/api/model/report.go
index eb68e7911..b9b8c77d2 100644
--- a/internal/api/model/report.go
+++ b/internal/api/model/report.go
@@ -54,8 +54,8 @@ type Report struct {
StatusIDs []string `json:"status_ids"`
// Array of rule IDs that were submitted along with this report.
// Will be empty if no rule IDs were submitted.
- // example: [1, 2]
- RuleIDs []int `json:"rule_ids"`
+ // example: ["01GPBN5YDY6JKBWE44H7YQBDCQ","01GPBN65PDWSBPWVDD0SQCFFY3"]
+ RuleIDs []string `json:"rule_ids"`
// Account that was reported.
TargetAccount *Account `json:"target_account"`
}
@@ -89,8 +89,7 @@ type ReportCreateRequest struct {
// in: formData
Category string `form:"category" json:"category" xml:"category"`
// IDs of rules on this instance which have been broken according to the reporter.
- // This is currently not supported, provided only for API compatibility.
- // example: [1, 2, 3]
+ // example: ["01GPBN5YDY6JKBWE44H7YQBDCQ","01GPBN65PDWSBPWVDD0SQCFFY3"]
// in: formData
- RuleIDs []int `form:"rule_ids[]" json:"rule_ids" xml:"rule_ids"`
+ RuleIDs []string `form:"rule_ids[]" json:"rule_ids" xml:"rule_ids"`
}
diff --git a/internal/api/model/rule.go b/internal/api/model/rule.go
new file mode 100644
index 000000000..f4caf7dd0
--- /dev/null
+++ b/internal/api/model/rule.go
@@ -0,0 +1,41 @@
+// GoToSocial
+// Copyright (C) GoToSocial Authors admin@gotosocial.org
+// SPDX-License-Identifier: AGPL-3.0-or-later
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+package model
+
+// InstanceRule represents a single instance rule.
+//
+// swagger:model instanceRule
+type InstanceRule struct {
+ ID string `json:"id"`
+ Text string `json:"text"`
+}
+
+// InstanceRuleCreateRequest represents a request to create a new instance rule, made through the admin API.
+//
+// swagger:model instanceRuleCreateRequest
+type InstanceRuleCreateRequest struct {
+ Text string `form:"text" validation:"required"`
+}
+
+// InstanceRuleUpdateRequest represents a request to update the text of an instance rule, made through the admin API.
+//
+// swagger:model instanceRuleUpdateRequest
+type InstanceRuleUpdateRequest struct {
+ ID string `form:"id"`
+ Text string `form:"text"`
+}