SOP-19: Report Content and Admin Resolution

API SOP

User reports inappropriate content; admin reviews and resolves or rejects the report.

6 nodes · 5 edgesmedirank
apisopmedirankreportsmoderation
ex-sop-19-report-content.osop.yaml
# 原始:SOP-19: 檢舉內容 + 管理員處理
osop_version: '1.0'
id: sop-19-report-content
name: 'SOP-19: Report Content and Admin Resolution'
description: User reports inappropriate content; admin reviews and resolves or rejects the report.
version: 1.0.0
tags:
- api
- sop
- medirank
- reports
- moderation
nodes:
- id: step_1
  type: api
  subtype: rest
  name: POST /reports
  description: User reports inappropriate content (post, comment, clinic review, or treatment review).
  runtime:
    method: POST
    url: https://medi-rank.com/api/v1
    endpoint: /reports
    headers:
      Authorization: Bearer ${secrets.TOKEN}
    body:
      reportable_type: post
      reportable_id: 123
      reason: Advertising content
      detail: This post is clearly commercial advertising
- id: step_2
  type: api
  subtype: rest
  name: GET /reports?status=pending
  description: Admin fetches the list of unresolved reports.
  runtime:
    method: GET
    url: https://medi-rank.com/api/v1
    endpoint: /reports?status=pending
    headers:
      Authorization: Bearer ${secrets.TOKEN}
- id: step_3
  type: api
  subtype: rest
  name: GET /reports/{report_id}
  description: Admin reviews the full report details.
  runtime:
    method: GET
    url: https://medi-rank.com/api/v1
    endpoint: /reports/{report_id}
    headers:
      Authorization: Bearer ${secrets.TOKEN}
- id: step_4
  type: human
  subtype: review
  name: Admin review decision
  description: Administrator reviews the reported content and decides to resolve or reject.
  security:
    approval_gate: true
- id: step_5a
  type: api
  subtype: rest
  name: POST /reports/{report_id}/resolve
  description: Admin resolves the report and optionally deletes the offending content.
  runtime:
    method: POST
    url: https://medi-rank.com/api/v1
    endpoint: /reports/{report_id}/resolve
    headers:
      Authorization: Bearer ${secrets.TOKEN}
    body:
      notes: Removed violating content
- id: step_5b
  type: api
  subtype: rest
  name: POST /reports/{report_id}/reject
  description: Admin rejects the report as not violating policy.
  runtime:
    method: POST
    url: https://medi-rank.com/api/v1
    endpoint: /reports/{report_id}/reject
    headers:
      Authorization: Bearer ${secrets.TOKEN}
    body:
      notes: Content does not violate policy
edges:
- from: step_1
  to: step_2
  mode: sequential
- from: step_2
  to: step_3
  mode: sequential
- from: step_3
  to: step_4
  mode: sequential
- from: step_4
  to: step_5a
  mode: conditional
  when: content_violates_policy
- from: step_4
  to: step_5b
  mode: conditional
  when: content_is_acceptable