PPanel Edge

announcements

由 openapi.json 自动生成的 9 个端点及其请求、响应和权限元数据。

此参考由已发布 API 契约生成。字段、请求头和权限要求如下。

下载完整 OpenAPI 文档 · SHA-256: ccaa20cec11fad96e369b88073ce3608a5b071ce55d6dc03fa31df7b0f08c525

标识符和数据结构与公开契约一致,说明直接给出调用规则。共享模型见 数据模型.

GET /api/v1/admin/content/announcements

GET /api/v1/admin/content/announcements

List announcements

{
  "parameters": [
    {
      "in": "query",
      "name": "status",
      "required": false,
      "schema": {
        "enum": [
          "draft",
          "published",
          "archived"
        ],
        "type": "string"
      }
    },
    {
      "in": "query",
      "name": "page_size",
      "required": false,
      "schema": {
        "default": 20,
        "maximum": 100,
        "minimum": 1,
        "type": "integer"
      }
    },
    {
      "in": "query",
      "name": "cursor",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "in": "query",
      "name": "include_total",
      "required": false,
      "schema": {
        "default": "false",
        "enum": [
          "true",
          "false"
        ],
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "has_more": {
                "type": "boolean"
              },
              "items": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "audience": {
                      "oneOf": [
                        {
                          "additionalProperties": false,
                          "properties": {
                            "type": {
                              "enum": [
                                "all"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "type": "object"
                        },
                        {
                          "additionalProperties": false,
                          "properties": {
                            "type": {
                              "enum": [
                                "active_subscription"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "type": "object"
                        },
                        {
                          "additionalProperties": false,
                          "properties": {
                            "type": {
                              "enum": [
                                "no_subscription"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "type": "object"
                        },
                        {
                          "additionalProperties": false,
                          "properties": {
                            "plan_ids": {
                              "items": {
                                "format": "uuid",
                                "type": "string"
                              },
                              "maxItems": 100,
                              "minItems": 1,
                              "type": "array"
                            },
                            "type": {
                              "enum": [
                                "plans"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "type",
                            "plan_ids"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "created_by": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "expire_at": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "i18n": {
                      "additionalProperties": {
                        "additionalProperties": false,
                        "properties": {
                          "_meta": {
                            "additionalProperties": false,
                            "properties": {
                              "origin": {
                                "enum": [
                                  "manual",
                                  "machine",
                                  "builtin"
                                ],
                                "type": "string"
                              },
                              "provider": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "origin"
                            ],
                            "type": "object"
                          },
                          "body_md": {
                            "maxLength": 100000,
                            "type": "string"
                          },
                          "title": {
                            "maxLength": 500,
                            "type": "string"
                          }
                        },
                        "required": [
                          "title",
                          "body_md"
                        ],
                        "type": "object"
                      },
                      "type": "object"
                    },
                    "id": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "normal",
                        "important",
                        "maintenance"
                      ],
                      "type": "string"
                    },
                    "pinned": {
                      "type": "boolean"
                    },
                    "popup": {
                      "type": "boolean"
                    },
                    "publish_at": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "source_locale": {
                      "pattern": "^[a-z]{2,3}(-[A-Z][a-z]{3})?(-([A-Z]{2}|\\d{3}))?$",
                      "type": "string"
                    },
                    "status": {
                      "enum": [
                        "draft",
                        "published",
                        "archived"
                      ],
                      "type": "string"
                    },
                    "updated_at": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "version": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "source_locale",
                    "i18n",
                    "kind",
                    "pinned",
                    "popup",
                    "audience",
                    "status",
                    "publish_at",
                    "expire_at",
                    "id",
                    "created_by",
                    "updated_at",
                    "version"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "next_cursor": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "total": {
                "type": "number"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "has_more"
            ],
            "type": "object"
          }
        }
      },
      "description": "Success"
    }
  },
  "summary": "List announcements",
  "tags": [
    "announcements"
  ],
  "x-body": "none",
  "x-body-limit": 0,
  "x-permission": "support.announcement.manage",
  "effectiveSecurity": []
}

POST /api/v1/admin/content/announcements

POST /api/v1/admin/content/announcements

Create an announcement

{
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "additionalProperties": false,
          "properties": {
            "audience": {
              "oneOf": [
                {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "enum": [
                        "all"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "enum": [
                        "active_subscription"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "enum": [
                        "no_subscription"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "plan_ids": {
                      "items": {
                        "format": "uuid",
                        "type": "string"
                      },
                      "maxItems": 100,
                      "minItems": 1,
                      "type": "array"
                    },
                    "type": {
                      "enum": [
                        "plans"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "plan_ids"
                  ],
                  "type": "object"
                }
              ]
            },
            "expire_at": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "i18n": {
              "additionalProperties": {
                "additionalProperties": false,
                "properties": {
                  "_meta": {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "enum": [
                          "manual",
                          "machine",
                          "builtin"
                        ],
                        "type": "string"
                      },
                      "provider": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  },
                  "body_md": {
                    "maxLength": 100000,
                    "type": "string"
                  },
                  "title": {
                    "maxLength": 500,
                    "type": "string"
                  }
                },
                "required": [
                  "title",
                  "body_md"
                ],
                "type": "object"
              },
              "type": "object"
            },
            "kind": {
              "enum": [
                "normal",
                "important",
                "maintenance"
              ],
              "type": "string"
            },
            "pinned": {
              "type": "boolean"
            },
            "popup": {
              "type": "boolean"
            },
            "publish_at": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "source_locale": {
              "pattern": "^[a-z]{2,3}(-[A-Z][a-z]{3})?(-([A-Z]{2}|\\d{3}))?$",
              "type": "string"
            },
            "status": {
              "enum": [
                "draft",
                "published",
                "archived"
              ],
              "type": "string"
            }
          },
          "required": [
            "source_locale",
            "i18n",
            "kind",
            "pinned",
            "popup",
            "audience",
            "status",
            "publish_at",
            "expire_at"
          ],
          "type": "object"
        }
      }
    },
    "required": true
  },
  "responses": {
    "201": {
      "content": {
        "application/json": {
          "schema": {
            "additionalProperties": false,
            "properties": {
              "audience": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "all"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "active_subscription"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "no_subscription"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "plan_ids": {
                        "items": {
                          "format": "uuid",
                          "type": "string"
                        },
                        "maxItems": 100,
                        "minItems": 1,
                        "type": "array"
                      },
                      "type": {
                        "enum": [
                          "plans"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "plan_ids"
                    ],
                    "type": "object"
                  }
                ]
              },
              "created_by": {
                "format": "uuid",
                "type": "string"
              },
              "expire_at": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "i18n": {
                "additionalProperties": {
                  "additionalProperties": false,
                  "properties": {
                    "_meta": {
                      "additionalProperties": false,
                      "properties": {
                        "origin": {
                          "enum": [
                            "manual",
                            "machine",
                            "builtin"
                          ],
                          "type": "string"
                        },
                        "provider": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "origin"
                      ],
                      "type": "object"
                    },
                    "body_md": {
                      "maxLength": 100000,
                      "type": "string"
                    },
                    "title": {
                      "maxLength": 500,
                      "type": "string"
                    }
                  },
                  "required": [
                    "title",
                    "body_md"
                  ],
                  "type": "object"
                },
                "type": "object"
              },
              "id": {
                "format": "uuid",
                "type": "string"
              },
              "kind": {
                "enum": [
                  "normal",
                  "important",
                  "maintenance"
                ],
                "type": "string"
              },
              "pinned": {
                "type": "boolean"
              },
              "popup": {
                "type": "boolean"
              },
              "publish_at": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "source_locale": {
                "pattern": "^[a-z]{2,3}(-[A-Z][a-z]{3})?(-([A-Z]{2}|\\d{3}))?$",
                "type": "string"
              },
              "status": {
                "enum": [
                  "draft",
                  "published",
                  "archived"
                ],
                "type": "string"
              },
              "updated_at": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "type": "integer"
              }
            },
            "required": [
              "source_locale",
              "i18n",
              "kind",
              "pinned",
              "popup",
              "audience",
              "status",
              "publish_at",
              "expire_at",
              "id",
              "created_by",
              "updated_at",
              "version"
            ],
            "type": "object"
          }
        }
      },
      "description": "Success",
      "headers": {
        "ETag": {
          "description": "Current resource version for If-Match.",
          "schema": {
            "type": "string"
          }
        }
      }
    },
    "422": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "Invalid content"
    }
  },
  "summary": "Create an announcement",
  "tags": [
    "announcements"
  ],
  "x-audit": "support.announcement.create",
  "x-body": "json",
  "x-body-limit": 524288,
  "x-concurrency": {
    "etag": true
  },
  "x-idempotency": "required",
  "x-permission": "support.announcement.manage",
  "effectiveSecurity": []
}

DELETE /api/v1/admin/content/announcements/{id}

DELETE /api/v1/admin/content/announcements/{id}

Delete an announcement with If-Match

{
  "parameters": [
    {
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    },
    {
      "description": "Resource ETag; missing 428, malformed 412, stale 409.",
      "in": "header",
      "name": "If-Match",
      "required": true,
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "204": {
      "description": "Deleted"
    },
    "409": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "Version conflict"
    },
    "428": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "If-Match required"
    }
  },
  "summary": "Delete an announcement with If-Match",
  "tags": [
    "announcements"
  ],
  "x-audit": "support.announcement.delete",
  "x-body": "none",
  "x-body-limit": 0,
  "x-concurrency": {
    "ifMatch": true
  },
  "x-idempotency": "optional",
  "x-permission": "support.announcement.manage",
  "effectiveSecurity": []
}

GET /api/v1/admin/content/announcements/{id}

GET /api/v1/admin/content/announcements/{id}

Announcement editor

{
  "parameters": [
    {
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "additionalProperties": false,
            "properties": {
              "audience": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "all"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "active_subscription"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "no_subscription"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "plan_ids": {
                        "items": {
                          "format": "uuid",
                          "type": "string"
                        },
                        "maxItems": 100,
                        "minItems": 1,
                        "type": "array"
                      },
                      "type": {
                        "enum": [
                          "plans"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "plan_ids"
                    ],
                    "type": "object"
                  }
                ]
              },
              "created_by": {
                "format": "uuid",
                "type": "string"
              },
              "expire_at": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "i18n": {
                "additionalProperties": {
                  "additionalProperties": false,
                  "properties": {
                    "_meta": {
                      "additionalProperties": false,
                      "properties": {
                        "origin": {
                          "enum": [
                            "manual",
                            "machine",
                            "builtin"
                          ],
                          "type": "string"
                        },
                        "provider": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "origin"
                      ],
                      "type": "object"
                    },
                    "body_md": {
                      "maxLength": 100000,
                      "type": "string"
                    },
                    "title": {
                      "maxLength": 500,
                      "type": "string"
                    }
                  },
                  "required": [
                    "title",
                    "body_md"
                  ],
                  "type": "object"
                },
                "type": "object"
              },
              "id": {
                "format": "uuid",
                "type": "string"
              },
              "kind": {
                "enum": [
                  "normal",
                  "important",
                  "maintenance"
                ],
                "type": "string"
              },
              "pinned": {
                "type": "boolean"
              },
              "popup": {
                "type": "boolean"
              },
              "publish_at": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "source_locale": {
                "pattern": "^[a-z]{2,3}(-[A-Z][a-z]{3})?(-([A-Z]{2}|\\d{3}))?$",
                "type": "string"
              },
              "status": {
                "enum": [
                  "draft",
                  "published",
                  "archived"
                ],
                "type": "string"
              },
              "updated_at": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "type": "integer"
              }
            },
            "required": [
              "source_locale",
              "i18n",
              "kind",
              "pinned",
              "popup",
              "audience",
              "status",
              "publish_at",
              "expire_at",
              "id",
              "created_by",
              "updated_at",
              "version"
            ],
            "type": "object"
          }
        }
      },
      "description": "Success",
      "headers": {
        "ETag": {
          "description": "Current resource version for If-Match.",
          "schema": {
            "type": "string"
          }
        }
      }
    },
    "404": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "Not found"
    }
  },
  "summary": "Announcement editor",
  "tags": [
    "announcements"
  ],
  "x-body": "none",
  "x-body-limit": 0,
  "x-concurrency": {
    "etag": true
  },
  "x-permission": "support.announcement.manage",
  "effectiveSecurity": []
}

PUT /api/v1/admin/content/announcements/{id}

PUT /api/v1/admin/content/announcements/{id}

Replace an announcement with If-Match

{
  "parameters": [
    {
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    },
    {
      "description": "Resource ETag; missing 428, malformed 412, stale 409.",
      "in": "header",
      "name": "If-Match",
      "required": true,
      "schema": {
        "type": "string"
      }
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "additionalProperties": false,
          "properties": {
            "audience": {
              "oneOf": [
                {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "enum": [
                        "all"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "enum": [
                        "active_subscription"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "enum": [
                        "no_subscription"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "plan_ids": {
                      "items": {
                        "format": "uuid",
                        "type": "string"
                      },
                      "maxItems": 100,
                      "minItems": 1,
                      "type": "array"
                    },
                    "type": {
                      "enum": [
                        "plans"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "plan_ids"
                  ],
                  "type": "object"
                }
              ]
            },
            "expire_at": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "i18n": {
              "additionalProperties": {
                "additionalProperties": false,
                "properties": {
                  "_meta": {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "enum": [
                          "manual",
                          "machine",
                          "builtin"
                        ],
                        "type": "string"
                      },
                      "provider": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  },
                  "body_md": {
                    "maxLength": 100000,
                    "type": "string"
                  },
                  "title": {
                    "maxLength": 500,
                    "type": "string"
                  }
                },
                "required": [
                  "title",
                  "body_md"
                ],
                "type": "object"
              },
              "type": "object"
            },
            "kind": {
              "enum": [
                "normal",
                "important",
                "maintenance"
              ],
              "type": "string"
            },
            "pinned": {
              "type": "boolean"
            },
            "popup": {
              "type": "boolean"
            },
            "publish_at": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "source_locale": {
              "pattern": "^[a-z]{2,3}(-[A-Z][a-z]{3})?(-([A-Z]{2}|\\d{3}))?$",
              "type": "string"
            },
            "status": {
              "enum": [
                "draft",
                "published",
                "archived"
              ],
              "type": "string"
            }
          },
          "required": [
            "source_locale",
            "i18n",
            "kind",
            "pinned",
            "popup",
            "audience",
            "status",
            "publish_at",
            "expire_at"
          ],
          "type": "object"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "additionalProperties": false,
            "properties": {
              "audience": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "all"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "active_subscription"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "enum": [
                          "no_subscription"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "plan_ids": {
                        "items": {
                          "format": "uuid",
                          "type": "string"
                        },
                        "maxItems": 100,
                        "minItems": 1,
                        "type": "array"
                      },
                      "type": {
                        "enum": [
                          "plans"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "plan_ids"
                    ],
                    "type": "object"
                  }
                ]
              },
              "created_by": {
                "format": "uuid",
                "type": "string"
              },
              "expire_at": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "i18n": {
                "additionalProperties": {
                  "additionalProperties": false,
                  "properties": {
                    "_meta": {
                      "additionalProperties": false,
                      "properties": {
                        "origin": {
                          "enum": [
                            "manual",
                            "machine",
                            "builtin"
                          ],
                          "type": "string"
                        },
                        "provider": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "origin"
                      ],
                      "type": "object"
                    },
                    "body_md": {
                      "maxLength": 100000,
                      "type": "string"
                    },
                    "title": {
                      "maxLength": 500,
                      "type": "string"
                    }
                  },
                  "required": [
                    "title",
                    "body_md"
                  ],
                  "type": "object"
                },
                "type": "object"
              },
              "id": {
                "format": "uuid",
                "type": "string"
              },
              "kind": {
                "enum": [
                  "normal",
                  "important",
                  "maintenance"
                ],
                "type": "string"
              },
              "pinned": {
                "type": "boolean"
              },
              "popup": {
                "type": "boolean"
              },
              "publish_at": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "source_locale": {
                "pattern": "^[a-z]{2,3}(-[A-Z][a-z]{3})?(-([A-Z]{2}|\\d{3}))?$",
                "type": "string"
              },
              "status": {
                "enum": [
                  "draft",
                  "published",
                  "archived"
                ],
                "type": "string"
              },
              "updated_at": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "type": "integer"
              }
            },
            "required": [
              "source_locale",
              "i18n",
              "kind",
              "pinned",
              "popup",
              "audience",
              "status",
              "publish_at",
              "expire_at",
              "id",
              "created_by",
              "updated_at",
              "version"
            ],
            "type": "object"
          }
        }
      },
      "description": "Success",
      "headers": {
        "ETag": {
          "description": "Current resource version for If-Match.",
          "schema": {
            "type": "string"
          }
        }
      }
    },
    "409": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "Version conflict"
    },
    "428": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "If-Match required"
    }
  },
  "summary": "Replace an announcement with If-Match",
  "tags": [
    "announcements"
  ],
  "x-audit": "support.announcement.update",
  "x-body": "json",
  "x-body-limit": 524288,
  "x-concurrency": {
    "etag": true,
    "ifMatch": true
  },
  "x-idempotency": "optional",
  "x-permission": "support.announcement.manage",
  "effectiveSecurity": []
}

GET /api/v1/me/announcements

GET /api/v1/me/announcements

Announcements for the current user

{
  "parameters": [
    {
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
        "default": 20,
        "maximum": 100,
        "minimum": 1,
        "type": "integer"
      }
    },
    {
      "in": "query",
      "name": "before",
      "required": false,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "items": {
                "items": {
                  "properties": {
                    "body_md": {
                      "type": "string"
                    },
                    "id": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "normal",
                        "important",
                        "maintenance"
                      ],
                      "type": "string"
                    },
                    "pinned": {
                      "type": "boolean"
                    },
                    "popup": {
                      "type": "boolean"
                    },
                    "publish_at": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "version": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "kind",
                    "pinned",
                    "popup",
                    "version",
                    "publish_at"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "required": [
              "items"
            ],
            "type": "object"
          }
        }
      },
      "description": "Success"
    }
  },
  "summary": "Announcements for the current user",
  "tags": [
    "announcements"
  ],
  "x-body": "none",
  "x-body-limit": 0,
  "x-rate-limit": "support.content.read",
  "effectiveSecurity": []
}

POST /api/v1/me/announcements/{id}/seen

POST /api/v1/me/announcements/{id}/seen

Acknowledge a popup once per announcement revision

{
  "parameters": [
    {
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "additionalProperties": false,
          "properties": {
            "version": {
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "version"
          ],
          "type": "object"
        }
      }
    },
    "required": true
  },
  "responses": {
    "204": {
      "description": "Acknowledged"
    },
    "404": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "Not visible"
    },
    "409": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "Announcement changed"
    }
  },
  "summary": "Acknowledge a popup once per announcement revision",
  "tags": [
    "announcements"
  ],
  "x-audit": "support.announcement.seen",
  "x-body": "json",
  "x-body-limit": 65536,
  "x-idempotency": "optional",
  "effectiveSecurity": []
}

GET /api/v1/public/announcements

GET /api/v1/public/announcements

Published public announcements

{
  "parameters": [
    {
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
        "default": 20,
        "maximum": 100,
        "minimum": 1,
        "type": "integer"
      }
    },
    {
      "in": "query",
      "name": "before",
      "required": false,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "items": {
                "items": {
                  "properties": {
                    "body_md": {
                      "type": "string"
                    },
                    "id": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "normal",
                        "important",
                        "maintenance"
                      ],
                      "type": "string"
                    },
                    "pinned": {
                      "type": "boolean"
                    },
                    "popup": {
                      "type": "boolean"
                    },
                    "publish_at": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "version": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "kind",
                    "pinned",
                    "popup",
                    "version",
                    "publish_at"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "required": [
              "items"
            ],
            "type": "object"
          }
        }
      },
      "description": "Success"
    }
  },
  "summary": "Published public announcements",
  "tags": [
    "announcements"
  ],
  "x-body": "none",
  "x-body-limit": 0,
  "x-rate-limit": "support.content.read",
  "effectiveSecurity": []
}

GET /api/v1/public/announcements/{id}

GET /api/v1/public/announcements/{id}

A public announcement

{
  "parameters": [
    {
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "body_md": {
                "type": "string"
              },
              "id": {
                "format": "uuid",
                "type": "string"
              },
              "kind": {
                "enum": [
                  "normal",
                  "important",
                  "maintenance"
                ],
                "type": "string"
              },
              "pinned": {
                "type": "boolean"
              },
              "popup": {
                "type": "boolean"
              },
              "publish_at": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "title": {
                "type": "string"
              },
              "version": {
                "type": "integer"
              }
            },
            "required": [
              "id",
              "kind",
              "pinned",
              "popup",
              "version",
              "publish_at"
            ],
            "type": "object"
          }
        }
      },
      "description": "Success"
    },
    "404": {
      "content": {
        "application/problem+json": {
          "schema": {
            "properties": {
              "code": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              },
              "status": {
                "type": "number"
              },
              "title": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "title",
              "status",
              "code",
              "request_id"
            ],
            "type": "object"
          }
        }
      },
      "description": "Not found"
    }
  },
  "summary": "A public announcement",
  "tags": [
    "announcements"
  ],
  "x-body": "none",
  "x-body-limit": 0,
  "x-rate-limit": "support.content.read",
  "effectiveSecurity": []
}