Skip to content

Feature/v2026.7.0 - #30

Merged
yuuki-noda merged 540 commits into
developfrom
feature/v2026.7.0
Aug 7, 2026
Merged

Feature/v2026.7.0#30
yuuki-noda merged 540 commits into
developfrom
feature/v2026.7.0

Conversation

@yuuki-noda

Copy link
Copy Markdown
Contributor

What

Why

Additional info (optional)

Checklist

  • Read the contribution guide
  • Test working in a local environment
  • (If needed) Add story of storybook
  • (If needed) Update CHANGELOG.md
  • (If possible) Add tests

syuilo and others added 30 commits June 25, 2026 09:02
* refactor(dev): refactor of backend memory comparison workflow

* fix
将来的にフロントエンドでもheap snaphotを集計したくなった時などのため
あとpairedDeltaSummaryを共通化
* chore: センシティブ判定を外部サービス扱いにする

* fix review

* regenerate

* fix review

* fix review

* regenerate

* fix CHANGELOG.md

* fix review

* add comment

---------

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
* enhance: コントロールパネルから二要素認証を解除できるように

* Update Changelog

---------

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
* [skip ci] Update CHANGELOG.md (prepend template)

* fix(dev): tweak frontend-bundle-report

* Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop

* enhance(dev): tweak Frontend Chunk Report

* fix(dev): tweak frontend-bundle-report-comment

* enhance(dev): tweak Frontend Chunk Report

* enhance(dev): tweak Frontend Chunk Report

* enhance(dev): improve backend memory usage comparison workflow (#17591)

* wip

* Update get-backend-memory.yml

* [ci skip] tweak table

* enhance(dev): tweak report-backend-memory

* refactor(dev): report-backend-memoryのmarkdown生成ロジックを分離

* enhance(dev): tweak report-backend-memory

* enhance(dev): tweak report-backend-memory

* enhance(dev): tweak report-backend-memory

* chore(dev): refactor

* refactor(dev): unify frontend-bundle-visualizer-report.mjs and frontend-js-size.mjs

* chore(dev): fix typo

* refactor(dev): refactor frontend-js-size.mjs

* chore(dev): tweak frontend-js-size.mjs

* chore(dev): tweak frontend-js-size.mjs

* chore(dev): tweak frontend-js-size.mjs

* chore(ci): simplify FFmpeg installation in workflows (#17612)

* chore(ci): simplify FFmpeg installation in workflows

* fix

* fix(dev): tweak frontend-js-size.mjs

* Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop

* enhance(dev): improve Frontend Bundle Report

* chore(dev): refactor frontend bundle report

* enhance(dev): improve backend memory usage report (#17608)

* enhance(dev): tweak report-backend-memory

* wip

* Update backend-memory-report.mjs

* Update backend-memory-report.mjs

* chore(dev): tweak frontend-js-size.mjs

* Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop

* chore(dev): tweak backend-memory-report

* chore(dev): tweak backend-memory-report

* (test) enhance(dev): improve backend-memory-report

* chore(dev): tweak backend-memory-report

* chore(dev): tweak backend-memory-report

* chore(dev): tweak backend-memory-report

* chore(dev): tweak backend-memory-report

* chore(dev): tweak frontend-js-size

* chore(dev): tweak frontend-js-size

* chore(dev): tweak backend-memory-report

* chore(dev): tweak backend-memory-report

* chore(dev): tweak backend-memory-report

* chore(dev): tweak frontend-js-size

* Update frontend-bundle-report.yml

* [ci skip] chore(dev): tweak frontend-js-size

* refactor(dev): refactor of backend memory comparison workflow (#17619)

* refactor(dev): refactor of backend memory comparison workflow

* fix

* fix(dev): follow up of 1c4bcd9

* fix(dev): follow up of 1c4bcd9

* fix(dev): follow up of 1c4bcd9

* fix(dev): follow up of 1c4bcd9

* chore(dev): refactor workflow js

* refactor(dev): extract heap snapshot logic

将来的にフロントエンドでもheap snaphotを集計したくなった時などのため
あとpairedDeltaSummaryを共通化

* chore(dev): tweak backend-memory-report

* chore(dev): tweak some workflows

* chore(dev): tweak some workflows

* fix(dev): fix measure-memory

* clean up

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: おさむのひと <46447427+samunohito@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
chocolate-pie and others added 20 commits July 25, 2026 21:34
* fix: Fix improper authorization in `admin/reset-password`

* Apply suggestions from code review

Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>

* fix: improper authorization in `admin/unset-mfa`

* fix

---------

Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>
* fix(gh): check-misskey-js-autogenが失敗する問題を修正

* fix comment

* fix
* enhance(frontend): UploaderItemsの詳細メニューからもプレビューを起動できるように

* clean up
* fix(frontend): MkLightboxの動画の縦横比を事前に確定させるように

* fix

* fix
Co-authored-by: anatawa12 <anatawa12@icloud.com>
…folio, federation-off)

- Backend: keep XissmieStoreService alongside TelemetryService; retain robots.txt AI crawler blocks
- Frontend: preserve Xfolio login/signup, store emoji/decoration purchase flows; reapply PURCHASE_REQUIRED in use-note
- Config: restore xfolioApiHost/xfolioApiToken samples; regenerate pnpm-lock.yaml

Co-authored-by: Cursor <cursoragent@cursor.com>
本家 2026.7.0 の .node-version に合わせ、ローカル Node / pnpm を揃える。

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

このPRによるapi.jsonの差分

差分はこちら
--- base
+++ head
@@ -1,7 +1,7 @@
 {
   "openapi": "3.1.0",
   "info": {
-    "version": "2026.3.2",
+    "version": "2026.7.0",
     "title": "Misskey API"
   },
   "externalDocs": {
@@ -3490,6 +3490,12 @@
                     "items": {
                       "type": "string"
                     }
+                  },
+                  "category": {
+                    "type": [
+                      "string",
+                      "null"
+                    ]
                   }
                 },
                 "required": [
@@ -3539,6 +3545,12 @@
                         "type": "string",
                         "format": "id"
                       }
+                    },
+                    "category": {
+                      "type": [
+                        "string",
+                        "null"
+                      ]
                     }
                   },
                   "required": [
@@ -3548,7 +3560,8 @@
                     "name",
                     "description",
                     "url",
-                    "roleIdsThatCanBeUsedThisDecoration"
+                    "roleIdsThatCanBeUsedThisDecoration",
+                    "category"
                   ]
                 }
               }
@@ -3907,6 +3920,12 @@
                           "type": "string",
                           "format": "id"
                         }
+                      },
+                      "category": {
+                        "type": [
+                          "string",
+                          "null"
+                        ]
                       }
                     },
                     "required": [
@@ -4075,6 +4094,12 @@
                     "items": {
                       "type": "string"
                     }
+                  },
+                  "category": {
+                    "type": [
+                      "string",
+                      "null"
+                    ]
                   }
                 },
                 "required": [
@@ -9892,6 +9917,24 @@
                     "enableSensitiveMediaDetectionForVideos": {
                       "type": "boolean"
                     },
+                    "sensitiveMediaDetectionApiUrl": {
+                      "type": [
+                        "string",
+                        "null"
+                      ]
+                    },
+                    "sensitiveMediaDetectionApiKey": {
+                      "type": [
+                        "string",
+                        "null"
+                      ]
+                    },
+                    "sensitiveMediaDetectionTimeout": {
+                      "type": "number"
+                    },
+                    "sensitiveMediaDetectionMaxImagesPerRequest": {
+                      "type": "number"
+                    },
                     "proxyAccountId": {
                       "type": "string",
                       "format": "id"
@@ -10219,6 +10262,12 @@
                         "null"
                       ]
                     },
+                    "urlPreviewSensitiveList": {
+                      "type": "array",
+                      "items": {
+                        "type": "string"
+                      }
+                    },
                     "federation": {
                       "type": "string",
                       "enum": [
@@ -10327,6 +10376,10 @@
                     "sensitiveMediaDetectionSensitivity",
                     "setSensitiveFlagAutomatically",
                     "enableSensitiveMediaDetectionForVideos",
+                    "sensitiveMediaDetectionApiUrl",
+                    "sensitiveMediaDetectionApiKey",
+                    "sensitiveMediaDetectionTimeout",
+                    "sensitiveMediaDetectionMaxImagesPerRequest",
                     "proxyAccountId",
                     "email",
                     "smtpSecure",
@@ -10399,6 +10452,7 @@
                     "urlPreviewRequireContentLength",
                     "urlPreviewUserAgent",
                     "urlPreviewSummaryProxyUrl",
+                    "urlPreviewSensitiveList",
                     "federation",
                     "federationHosts",
                     "deliverSuspendedSoftware",
@@ -11362,6 +11416,165 @@
         }
       }
     },
+    "/admin/queue/pause": {
+      "post": {
+        "operationId": "post___admin___queue___pause",
+        "summary": "admin/queue/pause",
+        "description": "No description provided.\n\n**Credential required**: *Yes* / **Permission**: *write:admin:queue*",
+        "externalDocs": {
+          "description": "Source code",
+          "url": "https://github.com/misskey-dev/misskey/blob/develop/packages/backend/src/server/api/endpoints/admin/queue/pause.ts"
+        },
+        "tags": [
+          "admin"
+        ],
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "queue": {
+                    "type": "string",
+                    "enum": [
+                      "system",
+                      "endedPollNotification",
+                      "postScheduledNote",
+                      "deliver",
+                      "inbox",
+                      "db",
+                      "relationship",
+                      "objectStorage",
+                      "userWebhookDeliver",
+                      "systemWebhookDeliver"
+                    ]
+                  }
+                },
+                "required": [
+                  "queue"
+                ]
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "OK (without any results)"
+          },
+          "400": {
+            "description": "Client error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INVALID_PARAM": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid param.",
+                        "code": "INVALID_PARAM",
+                        "id": "3d81ceae-475f-4600-b2a8-2bc116157532"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "CREDENTIAL_REQUIRED": {
+                    "value": {
+                      "error": {
+                        "message": "Credential required.",
+                        "code": "CREDENTIAL_REQUIRED",
+                        "id": "1384574d-a912-4b81-8601-c7b1c4085df1"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "AUTHENTICATION_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Authentication failed. Please ensure your token is correct.",
+                        "code": "AUTHENTICATION_FAILED",
+                        "id": "b0a7f5f8-dc2f-4171-b91f-de88ad238e14"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "418": {
+            "description": "I'm Ai",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "I_AM_AI": {
+                    "value": {
+                      "error": {
+                        "message": "You sent a request to Ai-chan, Misskey's showgirl, instead of the server.",
+                        "code": "I_AM_AI",
+                        "id": "60c46cd1-f23a-46b1-bebe-5d2b73951a84"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Internal server error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INTERNAL_ERROR": {
+                    "value": {
+                      "error": {
+                        "message": "Internal error occurred. Please contact us if the error persists.",
+                        "code": "INTERNAL_ERROR",
+                        "id": "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
     "/admin/queue/promote-jobs": {
       "post": {
         "operationId": "post___admin___queue___promote-jobs",
@@ -12168,6 +12381,165 @@
         }
       }
     },
+    "/admin/queue/resume": {
+      "post": {
+        "operationId": "post___admin___queue___resume",
+        "summary": "admin/queue/resume",
+        "description": "No description provided.\n\n**Credential required**: *Yes* / **Permission**: *write:admin:queue*",
+        "externalDocs": {
+          "description": "Source code",
+          "url": "https://github.com/misskey-dev/misskey/blob/develop/packages/backend/src/server/api/endpoints/admin/queue/resume.ts"
+        },
+        "tags": [
+          "admin"
+        ],
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "queue": {
+                    "type": "string",
+                    "enum": [
+                      "system",
+                      "endedPollNotification",
+                      "postScheduledNote",
+                      "deliver",
+                      "inbox",
+                      "db",
+                      "relationship",
+                      "objectStorage",
+                      "userWebhookDeliver",
+                      "systemWebhookDeliver"
+                    ]
+                  }
+                },
+                "required": [
+                  "queue"
+                ]
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "OK (without any results)"
+          },
+          "400": {
+            "description": "Client error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INVALID_PARAM": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid param.",
+                        "code": "INVALID_PARAM",
+                        "id": "3d81ceae-475f-4600-b2a8-2bc116157532"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "CREDENTIAL_REQUIRED": {
+                    "value": {
+                      "error": {
+                        "message": "Credential required.",
+                        "code": "CREDENTIAL_REQUIRED",
+                        "id": "1384574d-a912-4b81-8601-c7b1c4085df1"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "AUTHENTICATION_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Authentication failed. Please ensure your token is correct.",
+                        "code": "AUTHENTICATION_FAILED",
+                        "id": "b0a7f5f8-dc2f-4171-b91f-de88ad238e14"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "418": {
+            "description": "I'm Ai",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "I_AM_AI": {
+                    "value": {
+                      "error": {
+                        "message": "You sent a request to Ai-chan, Misskey's showgirl, instead of the server.",
+                        "code": "I_AM_AI",
+                        "id": "60c46cd1-f23a-46b1-bebe-5d2b73951a84"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Internal server error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INTERNAL_ERROR": {
+                    "value": {
+                      "error": {
+                        "message": "Internal error occurred. Please contact us if the error persists.",
+                        "code": "INTERNAL_ERROR",
+                        "id": "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
     "/admin/queue/retry-job": {
       "post": {
         "operationId": "post___admin___queue___retry-job",
@@ -13392,6 +13764,24 @@
                   "$ref": "#/components/schemas/Error"
                 },
                 "examples": {
+                  "NO_SUCH_USER": {
+                    "value": {
+                      "error": {
+                        "message": "No such user.",
+                        "code": "NO_SUCH_USER",
+                        "id": "ccafc7fe-5074-4edd-9dc0-8ef9ef6a701d"
+                      }
+                    }
+                  },
+                  "ACCESS_DENIED": {
+                    "value": {
+                      "error": {
+                        "message": "Access denied.",
+                        "code": "ACCESS_DENIED",
+                        "id": "cda8f8ce-89a6-4f92-8055-33bbe0c1464d"
+                      }
+                    }
+                  },
                   "INVALID_PARAM": {
                     "value": {
                       "error": {
@@ -18332,6 +18722,172 @@
         }
       }
     },
+    "/admin/unset-mfa": {
+      "post": {
+        "operationId": "post___admin___unset-mfa",
+        "summary": "admin/unset-mfa",
+        "description": "No description provided.\n\n**Credential required**: *Yes* / **Permission**: *write:admin:unset-mfa*",
+        "externalDocs": {
+          "description": "Source code",
+          "url": "https://github.com/misskey-dev/misskey/blob/develop/packages/backend/src/server/api/endpoints/admin/unset-mfa.ts"
+        },
+        "tags": [
+          "admin"
+        ],
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "userId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  }
+                },
+                "required": [
+                  "userId"
+                ]
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "OK (without any results)"
+          },
+          "400": {
+            "description": "Client error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "NO_SUCH_USER": {
+                    "value": {
+                      "error": {
+                        "message": "No such user.",
+                        "code": "NO_SUCH_USER",
+                        "id": "ccafc7fe-5074-4edd-9dc0-8ef9ef6a701d"
+                      }
+                    }
+                  },
+                  "ACCESS_DENIED": {
+                    "value": {
+                      "error": {
+                        "message": "Access denied.",
+                        "code": "ACCESS_DENIED",
+                        "id": "cda8f8ce-89a6-4f92-8055-33bbe0c1464d"
+                      }
+                    }
+                  },
+                  "INVALID_PARAM": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid param.",
+                        "code": "INVALID_PARAM",
+                        "id": "3d81ceae-475f-4600-b2a8-2bc116157532"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "CREDENTIAL_REQUIRED": {
+                    "value": {
+                      "error": {
+                        "message": "Credential required.",
+                        "code": "CREDENTIAL_REQUIRED",
+                        "id": "1384574d-a912-4b81-8601-c7b1c4085df1"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "AUTHENTICATION_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Authentication failed. Please ensure your token is correct.",
+                        "code": "AUTHENTICATION_FAILED",
+                        "id": "b0a7f5f8-dc2f-4171-b91f-de88ad238e14"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "418": {
+            "description": "I'm Ai",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "I_AM_AI": {
+                    "value": {
+                      "error": {
+                        "message": "You sent a request to Ai-chan, Misskey's showgirl, instead of the server.",
+                        "code": "I_AM_AI",
+                        "id": "60c46cd1-f23a-46b1-bebe-5d2b73951a84"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Internal server error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INTERNAL_ERROR": {
+                    "value": {
+                      "error": {
+                        "message": "Internal error occurred. Please contact us if the error persists.",
+                        "code": "INTERNAL_ERROR",
+                        "id": "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
     "/admin/unset-user-avatar": {
       "post": {
         "operationId": "post___admin___unset-user-avatar",
@@ -19246,6 +19802,26 @@
                   "enableSensitiveMediaDetectionForVideos": {
                     "type": "boolean"
                   },
+                  "sensitiveMediaDetectionApiUrl": {
+                    "type": [
+                      "string",
+                      "null"
+                    ]
+                  },
+                  "sensitiveMediaDetectionApiKey": {
+                    "type": [
+                      "string",
+                      "null"
+                    ]
+                  },
+                  "sensitiveMediaDetectionTimeout": {
+                    "type": "integer",
+                    "minimum": 1
+                  },
+                  "sensitiveMediaDetectionMaxImagesPerRequest": {
+                    "type": "integer",
+                    "minimum": 1
+                  },
                   "maintainerName": {
                     "type": [
                       "string",
@@ -19566,6 +20142,15 @@
                       "null"
                     ]
                   },
+                  "urlPreviewSensitiveList": {
+                    "type": [
+                      "array",
+                      "null"
+                    ],
+                    "items": {
+                      "type": "string"
+                    }
+                  },
                   "federation": {
                     "type": "string",
                     "enum": [
@@ -21116,6 +21701,168 @@
         }
       }
     },
+    "/antennas/remove-note": {
+      "post": {
+        "operationId": "post___antennas___remove-note",
+        "summary": "antennas/remove-note",
+        "description": "No description provided.\n\n**Credential required**: *Yes* / **Permission**: *write:account*",
+        "externalDocs": {
+          "description": "Source code",
+          "url": "https://github.com/misskey-dev/misskey/blob/develop/packages/backend/src/server/api/endpoints/antennas/remove-note.ts"
+        },
+        "tags": [
+          "antennas"
+        ],
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "antennaId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  },
+                  "noteId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  }
+                },
+                "required": [
+                  "antennaId",
+                  "noteId"
+                ]
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "OK (without any results)"
+          },
+          "400": {
+            "description": "Client error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "NO_SUCH_ANTENNA": {
+                    "value": {
+                      "error": {
+                        "message": "No such antenna.",
+                        "code": "NO_SUCH_ANTENNA",
+                        "id": "850926e0-fd3b-49b6-b69a-b28a5dbd82fe"
+                      }
+                    }
+                  },
+                  "INVALID_PARAM": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid param.",
+                        "code": "INVALID_PARAM",
+                        "id": "3d81ceae-475f-4600-b2a8-2bc116157532"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "CREDENTIAL_REQUIRED": {
+                    "value": {
+                      "error": {
+                        "message": "Credential required.",
+                        "code": "CREDENTIAL_REQUIRED",
+                        "id": "1384574d-a912-4b81-8601-c7b1c4085df1"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "AUTHENTICATION_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Authentication failed. Please ensure your token is correct.",
+                        "code": "AUTHENTICATION_FAILED",
+                        "id": "b0a7f5f8-dc2f-4171-b91f-de88ad238e14"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "418": {
+            "description": "I'm Ai",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "I_AM_AI": {
+                    "value": {
+                      "error": {
+                        "message": "You sent a request to Ai-chan, Misskey's showgirl, instead of the server.",
+                        "code": "I_AM_AI",
+                        "id": "60c46cd1-f23a-46b1-bebe-5d2b73951a84"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Internal server error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INTERNAL_ERROR": {
+                    "value": {
+                      "error": {
+                        "message": "Internal error occurred. Please contact us if the error persists.",
+                        "code": "INTERNAL_ERROR",
+                        "id": "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
     "/antennas/show": {
       "post": {
         "operationId": "post___antennas___show",
@@ -24647,6 +25394,15 @@
                       }
                     }
                   },
+                  "ALREADY_FOLLOWING": {
+                    "value": {
+                      "error": {
+                        "message": "You are already following that channel.",
+                        "code": "ALREADY_FOLLOWING",
+                        "id": "7db31665-651e-40c1-8e6e-28e9ad829a2d"
+                      }
+                    }
+                  },
                   "INVALID_PARAM": {
                     "value": {
                       "error": {
@@ -45821,6 +46577,38 @@
                   "$ref": "#/components/schemas/Error"
                 },
                 "examples": {
+                  "INVALID_URL": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid URL.",
+                        "code": "INVALID_URL",
+                        "id": "89b7ee05-ccfc-4bdd-9b13-61172fd1e06c",
+                        "httpStatusCode": 400
+                      }
+                    }
+                  },
+                  "FETCH_RSS_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Failed to fetch RSS.",
+                        "code": "FETCH_RSS_FAILED",
+                        "id": "8db5d3d8-31d7-452f-b0cc-ca3b8925de12",
+                        "kind": "server",
+                        "httpStatusCode": 422
+                      }
+                    }
+                  },
+                  "FETCH_RSS_UNAVAILABLE": {
+                    "value": {
+                      "error": {
+                        "message": "RSS fetching is temporarily unavailable.",
+                        "code": "FETCH_RSS_UNAVAILABLE",
+                        "id": "91e6ff44-c63f-4725-9ad0-b7a40d7f7655",
+                        "kind": "server",
+                        "httpStatusCode": 503
+                      }
+                    }
+                  },
                   "INVALID_PARAM": {
                     "value": {
                       "error": {
@@ -45897,6 +46685,27 @@
               }
             }
           },
+          "429": {
+            "description": "Too many requests",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "RATE_LIMIT_EXCEEDED": {
+                    "value": {
+                      "error": {
+                        "message": "Rate limit exceeded. Please try again later.",
+                        "code": "RATE_LIMIT_EXCEEDED",
+                        "id": "d5826d14-3982-4d2e-8011-b9e9f02499ef"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
           "500": {
             "description": "Internal server error",
             "content": {
@@ -46121,6 +46930,38 @@
                   "$ref": "#/components/schemas/Error"
                 },
                 "examples": {
+                  "INVALID_URL": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid URL.",
+                        "code": "INVALID_URL",
+                        "id": "89b7ee05-ccfc-4bdd-9b13-61172fd1e06c",
+                        "httpStatusCode": 400
+                      }
+                    }
+                  },
+                  "FETCH_RSS_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Failed to fetch RSS.",
+                        "code": "FETCH_RSS_FAILED",
+                        "id": "8db5d3d8-31d7-452f-b0cc-ca3b8925de12",
+                        "kind": "server",
+                        "httpStatusCode": 422
+                      }
+                    }
+                  },
+                  "FETCH_RSS_UNAVAILABLE": {
+                    "value": {
+                      "error": {
+                        "message": "RSS fetching is temporarily unavailable.",
+                        "code": "FETCH_RSS_UNAVAILABLE",
+                        "id": "91e6ff44-c63f-4725-9ad0-b7a40d7f7655",
+                        "kind": "server",
+                        "httpStatusCode": 503
+                      }
+                    }
+                  },
                   "INVALID_PARAM": {
                     "value": {
                       "error": {
@@ -46197,6 +47038,27 @@
               }
             }
           },
+          "429": {
+            "description": "Too many requests",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "RATE_LIMIT_EXCEEDED": {
+                    "value": {
+                      "error": {
+                        "message": "Rate limit exceeded. Please try again later.",
+                        "code": "RATE_LIMIT_EXCEEDED",
+                        "id": "d5826d14-3982-4d2e-8011-b9e9f02499ef"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
           "500": {
             "description": "Internal server error",
             "content": {
@@ -48638,6 +49500,181 @@
         }
       }
     },
+    "/following/list": {
+      "post": {
+        "operationId": "post___following___list",
+        "summary": "following/list",
+        "description": "List of following users\n\n**Credential required**: *Yes* / **Permission**: *read:following*",
+        "externalDocs": {
+          "description": "Source code",
+          "url": "https://github.com/misskey-dev/misskey/blob/develop/packages/backend/src/server/api/endpoints/following/list.ts"
+        },
+        "tags": [
+          "users"
+        ],
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "notification": {
+                    "type": "boolean",
+                    "default": false
+                  },
+                  "sinceId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  },
+                  "untilId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  },
+                  "sinceDate": {
+                    "type": "integer"
+                  },
+                  "untilDate": {
+                    "type": "integer"
+                  },
+                  "limit": {
+                    "type": "integer",
+                    "minimum": 1,
+                    "maximum": 100,
+                    "default": 10
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK (with results)",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/Following"
+                  }
+                }
+              }
+            }
+          },
+          "400": {
+            "description": "Client error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INVALID_PARAM": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid param.",
+                        "code": "INVALID_PARAM",
+                        "id": "3d81ceae-475f-4600-b2a8-2bc116157532"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "CREDENTIAL_REQUIRED": {
+                    "value": {
+                      "error": {
+                        "message": "Credential required.",
+                        "code": "CREDENTIAL_REQUIRED",
+                        "id": "1384574d-a912-4b81-8601-c7b1c4085df1"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "AUTHENTICATION_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Authentication failed. Please ensure your token is correct.",
+                        "code": "AUTHENTICATION_FAILED",
+                        "id": "b0a7f5f8-dc2f-4171-b91f-de88ad238e14"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "418": {
+            "description": "I'm Ai",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "I_AM_AI": {
+                    "value": {
+                      "error": {
+                        "message": "You sent a request to Ai-chan, Misskey's showgirl, instead of the server.",
+                        "code": "I_AM_AI",
+                        "id": "60c46cd1-f23a-46b1-bebe-5d2b73951a84"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Internal server error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INTERNAL_ERROR": {
+                    "value": {
+                      "error": {
+                        "message": "Internal error occurred. Please contact us if the error persists.",
+                        "code": "INTERNAL_ERROR",
+                        "id": "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
     "/following/requests/accept": {
       "post": {
         "operationId": "post___following___requests___accept",
@@ -51456,6 +52493,12 @@
                           "type": "string",
                           "format": "id"
                         }
+                      },
+                      "category": {
+                        "type": [
+                          "string",
+                          "null"
+                        ]
                       }
                     },
                     "required": [
@@ -53745,186 +54788,7 @@
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "object",
-                  "properties": {
-                    "rp": {
-                      "type": "object",
-                      "properties": {
-                        "id": {
-                          "type": "string"
-                        }
-                      }
-                    },
-                    "user": {
-                      "type": "object",
-                      "properties": {
-                        "id": {
-                          "type": "string"
-                        },
-                        "name": {
-                          "type": "string"
-                        },
-                        "displayName": {
-                          "type": "string"
-                        }
-                      },
-                      "required": [
-                        "id",
-                        "name",
-                        "displayName"
-                      ]
-                    },
-                    "challenge": {
-                      "type": "string"
-                    },
-                    "pubKeyCredParams": {
-                      "type": "array",
-                      "items": {
-                        "type": "object",
-                        "properties": {
-                          "type": {
-                            "type": "string"
-                          },
-                          "alg": {
-                            "type": "number"
-                          }
-                        },
-                        "required": [
-                          "type",
-                          "alg"
-                        ]
-                      }
-                    },
-                    "timeout": {
-                      "type": [
-                        "number",
-                        "null"
-                      ]
-                    },
-                    "excludeCredentials": {
-                      "type": [
-                        "array",
-                        "null"
-                      ],
-                      "items": {
-                        "type": "object",
-                        "properties": {
-                          "id": {
-                            "type": "string"
-                          },
-                          "type": {
-                            "type": "string"
-                          },
-                          "transports": {
-                            "type": "array",
-                            "items": {
-                              "type": "string",
-                              "enum": [
-                                "ble",
-                                "cable",
-                                "hybrid",
-                                "internal",
-                                "nfc",
-                                "smart-card",
-                                "usb"
-                              ]
-                            }
-                          }
-                        },
-                        "required": [
-                          "id",
-                          "type",
-                          "transports"
-                        ]
-                      }
-                    },
-                    "authenticatorSelection": {
-                      "type": [
-                        "object",
-                        "null"
-                      ],
-                      "properties": {
-                        "authenticatorAttachment": {
-                          "type": "string",
-                          "enum": [
-                            "cross-platform",
-                            "platform"
-                          ]
-                        },
-                        "requireResidentKey": {
-                          "type": "boolean"
-                        },
-                        "userVerification": {
-                          "type": "string",
-                          "enum": [
-                            "discouraged",
-                            "preferred",
-                            "required"
-                          ]
-                        }
-                      },
-                      "required": [
-                        "authenticatorAttachment",
-                        "requireResidentKey",
-                        "userVerification"
-                      ]
-                    },
-                    "attestation": {
-                      "type": [
-                        "string",
-                        "null"
-                      ],
-                      "enum": [
-                        "direct",
-                        "enterprise",
-                        "indirect",
-                        "none",
-                        null
-                      ]
-                    },
-                    "extensions": {
-                      "type": [
-                        "object",
-                        "null"
-                      ],
-                      "properties": {
-                        "appid": {
-                          "type": [
-                            "string",
-                            "null"
-                          ]
-                        },
-                        "credProps": {
-                          "type": [
-                            "boolean",
-                            "null"
-                          ]
-                        },
-                        "hmacCreateSecret": {
-                          "type": [
-                            "boolean",
-                            "null"
-                          ]
-                        }
-                      },
-                      "required": [
-                        "appid",
-                        "credProps",
-                        "hmacCreateSecret"
-                      ]
-                    }
-                  },
-                  "required": [
-                    "rp",
-                    "user",
-                    "challenge",
-                    "pubKeyCredParams",
-                    "timeout",
-                    "excludeCredentials",
-                    "authenticatorSelection",
-                    "attestation",
-                    "extensions"
-                  ]
+                  "type": "object"
                 }
               }
             }
@@ -72099,6 +72963,18 @@
                   "query": {
                     "type": "string"
                   },
+                  "rangeStartAt": {
+                    "type": [
+                      "integer",
+                      "null"
+                    ]
+                  },
+                  "rangeEndAt": {
+                    "type": [
+                      "integer",
+                      "null"
+                    ]
+                  },
                   "sinceId": {
                     "type": "string",
                     "format": "misskey:id"
@@ -80184,6 +81060,9 @@
                     "originalUsersCount": {
                       "type": "number"
                     },
+                    "reactionsCount": {
+                      "type": "number"
+                    },
                     "instances": {
                       "type": "number"
                     },
@@ -80199,6 +81078,7 @@
                     "originalNotesCount",
                     "usersCount",
                     "originalUsersCount",
+                    "reactionsCount",
                     "instances",
                     "driveUsageLocal",
                     "driveUsageRemote"
@@ -94125,6 +95005,9 @@
           "canHideAds": {
             "type": "boolean"
           },
+          "canCreateChannel": {
+            "type": "boolean"
+          },
           "driveCapacityMb": {
             "type": "integer"
           },
@@ -94221,6 +95104,7 @@
           "canSearchUsers",
           "canUseTranslator",
           "canHideAds",
+          "canCreateChannel",
           "driveCapacityMb",
           "maxFileSizeMb",
           "uploadableFileTypes",

Get diff files from Workflow Page

yuuki-noda and others added 2 commits August 7, 2026 16:21
本家 TypeORM の FindOptionsRelations 型に合わせ、Xissmie 独自コードの
relations 配列指定を修正して typecheck を通す。

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@yuuki-noda
yuuki-noda merged commit 830ddfc into develop Aug 7, 2026
48 of 53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.