diff options
174 files changed, 42669 insertions, 31994 deletions
diff --git a/.github/workflows/on-release-created.yml b/.github/workflows/on-release-created.yml index c156de1a8b..7787d6055b 100644 --- a/.github/workflows/on-release-created.yml +++ b/.github/workflows/on-release-created.yml @@ -26,6 +26,8 @@ jobs: with: node-version-file: '.node-version' cache: 'pnpm' + # see https://docs.github.com/actions/use-cases-and-examples/publishing-packages/publishing-nodejs-packages#publishing-packages-to-the-npm-registry + registry-url: 'https://registry.npmjs.org' - name: Publish package run: | pnpm i --frozen-lockfile diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fb2c51c82..65aa271d05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,30 @@ +## 2025.6.1 + +### Note +- AiScript Misskeyæ‹¡å¼µAPI(Misskey Webプラグイン)ã®[note_view_interruptor](https://misskey-hub.net/ja/docs/for-developers/plugin/plugin-api-reference/#pluginregister_note_view_interruptorfn)ã¯ä¸å…·åˆã®å½±éŸ¿ã«ã‚ˆã‚Šç¾åœ¨ä¸€æ™‚çš„ã«ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ã€‚ +- Misskey Web投稿フォームã®ãƒ—レビュー切り替ãˆã¯ã€Œ...ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼å†…ã«é…ç½®ã•れã¾ã—㟠+ +### Client +- Feat: ç”»åƒã«ã‚¦ã‚©ãƒ¼ã‚¿ãƒ¼ãƒžãƒ¼ã‚¯ã‚’付与ã§ãるよã†ã«ãªã‚Šã¾ã—㟠+- Feat: ç”»åƒã®åŠ å·¥ãŒã§ãるよã†ã«ãªã‚Šã¾ã—ãŸ(実験的) +- Enhance: ノートã®ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ä¸€è¦§ã§ã€æŠ¼ã›ã‚‹ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’優先ã—ã¦è¡¨ç¤ºã§ãるよã†ã«ã™ã‚‹ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¿½åŠ +- Enhance: å…¨ã¦ã®ãƒãƒ£ãƒƒãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ—¢èªã«ã§ãるよã†ã«(è¨å®šâ†’ãã®ä»–) +- Enhance: ミュートã—ãŸçµµæ–‡å—をデãƒã‚¤ã‚¹é–“ã§åŒæœŸã§ãるよã†ã« +- Fix: ドライブファイルã®é¸æŠžãŒä¸å®‰å®šãªå•é¡Œã‚’ä¿®æ£ +- Fix: コントãƒãƒ¼ãƒ«ãƒ‘ãƒãƒ«ã®ãƒ•ァイル欄ãªã©ã®ãƒ‡ã‚¶ã‚¤ãƒ³ãŒå´©ã‚Œã¦ã„ã‚‹å•é¡Œã‚’ä¿®æ£ +- Fix: ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ¤œç´¢çµæžœã‚’è¿½åŠ ã§èªã¿è¾¼ã‚€ã“ã¨ãŒã§ããªã„å•é¡Œã‚’ä¿®æ£ +- Fix: ã‚¿ãƒƒãƒæ“作時ã«ãƒãƒ£ãƒ¼ãƒˆã®ãƒ„ールãƒãƒƒãƒ—ãŒæ¶ˆãˆãªããªã‚‹å ´åˆãŒã‚ã‚‹å•é¡Œã‚’ä¿®æ£ +- Fix: ウェルカムタイムラインã§ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãŒè¡¨ç¤ºã•れãªã„å•é¡Œã‚’ä¿®æ£ +- Fix: デッã‚ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã‚«ãƒ©ãƒ ã§æ–°ç€ãƒŽãƒ¼ãƒˆæ™‚ã®ã‚µã‚¦ãƒ³ãƒ‰ãŒå†ç”Ÿã•れãªã„å•é¡Œã‚’ä¿®æ£ + +### Server +- Feat: å…¨ã¦ã®ãƒãƒ£ãƒƒãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ—¢èªã«ã™ã‚‹APIã‚’è¿½åŠ (chat/read-all) +- Fix: ã‚¢ã‚«ã‚¦ãƒ³ãƒˆå‰Šé™¤ãŒæ£å¸¸ã«è¡Œã‚れãªã„ã“ã¨ãŒã‚ã£ãŸå•é¡Œã‚’ä¿®æ£ +- Fix: outboxã®ãƒšãƒ¼ã‚¸ãƒãƒ¼ã‚·ãƒ§ãƒ³ãŒæ£ã—ã行ã‚れãªã„å•é¡Œã‚’ä¿®æ£ + +### Misskey.js +- Fix: misskey-jsã® drive/file/create ã§ãƒ•ァイルアップãƒãƒ¼ãƒ‰ãŒã§ããªã„å•é¡Œã‚’ä¿®æ£ + ## 2025.6.0 ### Client diff --git a/cypress/e2e/basic.cy.ts b/cypress/e2e/basic.cy.ts index bd4021d2e3..2ce39737ed 100644 --- a/cypress/e2e/basic.cy.ts +++ b/cypress/e2e/basic.cy.ts @@ -35,7 +35,6 @@ describe('Before setup instance', () => { cy.intercept('POST', '/api/admin/update-meta').as('update-meta'); cy.get('[data-cy-next]').click(); - cy.get('[data-cy-next]').click(); cy.get('[data-cy-server-name] input').type('Testskey'); cy.get('[data-cy-server-setup-wizard-apply]').click(); diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 3675b17e53..73f3870f18 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -1589,3 +1589,11 @@ _search: searchScopeAll: "الكل" searchScopeLocal: "المØÙ„ÙŠ" searchScopeUser: "مستخدم Ù…ØØ¯Ø¯" +_watermarkEditor: + opacity: "Ø§Ù„Ø´ÙØ§Ùية" + scale: "Ø§Ù„ØØ¬Ù…" + text: "نص" + position: "الموضع" + type: "نوع" + image: "صور" + advanced: "متقدم" diff --git a/locales/bn-BD.yml b/locales/bn-BD.yml index f87818a5c8..26902eb07f 100644 --- a/locales/bn-BD.yml +++ b/locales/bn-BD.yml @@ -1349,3 +1349,9 @@ _remoteLookupErrors: _search: searchScopeAll: "সবগà§à¦²à§‹" searchScopeLocal: "সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼" +_watermarkEditor: + opacity: "অসà§à¦¬à¦šà§à¦›à¦¤à¦¾" + scale: "আকার" + text: "লেখা" + image: "ছবি" + advanced: "উনà§à¦¨à¦¤" diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index c887397301..41e3a0684f 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1365,6 +1365,8 @@ abort: "Cancel·lar" tip: "Trucs i consells" redisplayAllTips: "Torna ha mostrat tots els trucs i consells" hideAllTips: "Amagar tots els trucs i consells" +defaultImageCompressionLevel: "Nivell de comprensió de la imatge per defecte" +defaultImageCompressionLevel_description: "Baixa, conserva la qualitat de la imatge però la mida de l'arxiu és més gran. <br>Alta, redueix la mida de l'arxiu però també la qualitat de la imatge." _chat: noMessagesYet: "Encara no tens missatges " newMessage: "Missatge nou" @@ -1452,6 +1454,7 @@ _settings: contentsUpdateFrequency_description: "Com més alt sigui l'adquisició de contingut en temps real, més baixa el rendiment i més consum de dades i bateria." contentsUpdateFrequency_description2: "Quan s'activa el mode en temps real, el contingut s'actualitza en temps real, independentment d'aquesta configuració." showUrlPreview: "Mostrar vista prèvia d'URL" + showAvailableReactionsFirstInNote: "Mostra les reacciones que pots fer servir al damunt" _chat: showSenderName: "Mostrar el nom del remitent" sendOnEnter: "Introdueix per enviar" @@ -2462,6 +2465,8 @@ _visibility: disableFederation: "Sense federar" disableFederationDescription: "No enviar a altres servidors" _postForm: + quitInspiteOfThereAreUnuploadedFilesConfirm: "Hi ha arxius que no s'han carregat, vols descartar-los i tancar el formulari?" + uploaderTip: "L'arxiu encara no s'ha carregat. Des del menú arxiu pots canviar el nom, retallar imatges, posar marques d'aigua i comprimir o no l'arxiu. Els arxius es carreguen automà ticament quan públiques una nota." replyPlaceholder: "Contestar..." quotePlaceholder: "Citar..." channelPlaceholder: "Publicar a un canal..." @@ -3117,3 +3122,50 @@ _clip: tip: "Clip és una funció que permet organitzar les teves notes." _userLists: tip: "Es poden crear llistes amb qualsevol usuari. La llista creada es pot mostrar com una lÃnia de temps." +watermark: "Marca d'aigua " +defaultPreset: "Per defecte" +_watermarkEditor: + tip: "A la imatge es pot afegir una marca d'aigua com informació sobre drets." + quitWithoutSaveConfirm: "Sortir sense desar?" + driveFileTypeWarn: "Aquest arxiu no és compatible" + driveFileTypeWarnDescription: "Selecciona un arxiu d'imatge " + title: "Editar la marca d'aigua " + cover: "Cobrir-ho tot" + repeat: "Repetir" + opacity: "Opacitat" + scale: "Mida" + text: "Text" + position: "Posició " + type: "Tipus" + image: "Imatges" + advanced: "Avançat" + stripe: "Bandes" + stripeWidth: "Amplada de la banda" + stripeFrequency: "Freqüència de la banda" + angle: "Angle" + polkadot: "Lunars" + checker: "Escacs" + polkadotMainDotOpacity: "Opacitat del lunar principal" + polkadotMainDotRadius: "Mida del lunar principal" + polkadotSubDotOpacity: "Opacitat del lunar secundari" + polkadotSubDotRadius: "Mida del lunar secundari" + polkadotSubDotDivisions: "Nombre de punts secundaris" +_imageEffector: + title: "Efecte" + addEffect: "Afegeix un efecte" + discardChangesConfirm: "Vols descartar els canvis i sortir?" + _fxs: + chromaticAberration: "Aberració cromà tica" + glitch: "Glitch" + mirror: "Mirall" + invert: "Inversió cromà tica " + grayscale: "Monocrom " + colorAdjust: "Correcció de color" + colorClamp: "Compressió cromà tica " + colorClampAdvanced: "Compressió de cromà tica avançada " + distort: "Distorsió " + threshold: "Binarització" + zoomLines: "Saturació de lÃnies " + stripe: "Bandes" + polkadot: "Lunars" + checker: "Escacs" diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml index 8ac43ab6d9..5fc772a361 100644 --- a/locales/cs-CZ.yml +++ b/locales/cs-CZ.yml @@ -2043,3 +2043,11 @@ _search: searchScopeAll: "VÅ¡e" searchScopeLocal: "MÃstnÃ" searchScopeUser: "UpÅ™esnit uživatele" +_watermarkEditor: + opacity: "Průhlednost" + scale: "Velikost" + text: "Text" + position: "Pozice" + type: "Typ" + image: "Obrázky" + advanced: "PokroÄilé" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 26445ae0ca..189085e805 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -298,6 +298,7 @@ uploadFromUrl: "Von einer URL hochladen" uploadFromUrlDescription: "URL der hochzuladenden Datei" uploadFromUrlRequested: "Upload angefordert" uploadFromUrlMayTakeTime: "Es kann eine Weile dauern, bis das Hochladen abgeschlossen ist." +uploadNFiles: "Lade {n} Dateien hoch" explore: "Erkunden" messageRead: "Gelesen" noMoreHistory: "Kein weiterer Verlauf vorhanden" @@ -326,6 +327,7 @@ dark: "Dunkel" lightThemes: "Helle Farbschemata" darkThemes: "Dunkle Farbschemata" syncDeviceDarkMode: "Einstellung deines Geräts übernehmen" +switchDarkModeManuallyWhenSyncEnabledConfirm: "\"{x}\" ist eingeschaltet. Möchtest du die Synchronisation ausschalten und den Modus manuell wechseln?" drive: "Drive" fileName: "Dateiname" selectFile: "Datei auswählen" @@ -575,8 +577,10 @@ showFixedPostForm: "Bereich zum Schreiben neuer Notizen am Anfang der Chronik an showFixedPostFormInChannel: "Bereich zum Schreiben neuer Notizen am Anfang der Chronik anzeigen (Kanäle)" withRepliesByDefaultForNewlyFollowed: "Standardmäßig Antworten von neu gefolgten Benutzern in der Chronik anzeigen" newNoteRecived: "Es gibt neue Notizen" +newNote: "Neue Notiz" sounds: "Töne" sound: "Töne" +notificationSoundSettings: "Benachrichtigungston festlegen" listen: "Anhören" none: "Nichts" showInPage: "In einer Seite anzeigen" @@ -791,6 +795,7 @@ wide: "Breit" narrow: "Schmal" reloadToApplySetting: "Diese Einstellung tritt nach einer Aktualisierung der Seite in Kraft. Jetzt aktualisieren?" needReloadToApply: "Diese Einstellung tritt nach einer Aktualisierung der Seite in Kraft." +needToRestartServerToApply: "Diese Einstellung tritt nach einem Neustart des Servers in Kraft." showTitlebar: "Titelleiste anzeigen" clearCache: "Cache leeren" onlineUsersCount: "{n} Benutzer sind online" @@ -997,6 +1002,7 @@ failedToUpload: "Hochladen fehlgeschlagen" cannotUploadBecauseInappropriate: "Diese Datei kann nicht hochgeladen werden, da Anteile der Datei als möglicherweise unangebracht festgestellt wurden." cannotUploadBecauseNoFreeSpace: "Die Datei konnte nicht hochgeladen werden, da dein Drive-Speicherplatz aufgebraucht ist." cannotUploadBecauseExceedsFileSizeLimit: "Diese Datei kann wegen Überschreitung der Maximalgröße nicht hochgeladen werden." +cannotUploadBecauseUnallowedFileType: "Hochladen nicht möglich wegen unzulässigem Dateityp." beta: "Beta" enableAutoSensitive: "Automarkierung sensibler Medien" enableAutoSensitiveDescription: "Setzt soweit möglich durch Verwendung von Machine Learning automatisch Markierungen für sensible Medien. Auch wenn du diese Option deaktiviert hast, ist sie möglicherweise auf Instanzebene aktiviert." @@ -1324,6 +1330,7 @@ restore: "Wiederherstellen" syncBetweenDevices: "Zwischen Geräten synchronisieren" preferenceSyncConflictTitle: "Der konfigurierte Wert ist auf dem Server bereits vorhanden." preferenceSyncConflictText: "Die Einstellungen mit aktivierter Synchronisierung werden ihre Werte auf dem Server speichern. Es gibt jedoch bereits Werte auf dem Server. Welche Einstellungswerte sollen überschrieben werden?" +preferenceSyncConflictChoiceMerge: "Zusammenführen" preferenceSyncConflictChoiceServer: "Konfigurierte Werte auf dem Server" preferenceSyncConflictChoiceDevice: "Konfigurierte Werte auf dem Gerät" preferenceSyncConflictChoiceCancel: "Einrichten der Synchronisierung abbrechen" @@ -1346,6 +1353,20 @@ goToDeck: "Zurück zum Deck" federationJobs: "Föderation Jobs" driveAboutTip: "In Drive sehen Sie eine Liste der Dateien, die Sie in der Vergangenheit hochgeladen haben. <br>\nSie können diese Dateien wiederverwenden um sie zu beispiel an Notizen anzuhängen, oder sie können Dateien vorab hochzuladen, um sie später zu versenden! <br>\n<b>Wenn Sie eine Datei löschen, verschwindet sie auch von allen Stellen, an denen Sie sie verwendet haben (Notizen, Seiten, Avatare, Banner usw.).</b><br>\nSie können auch Ordner erstellen, um sie zu organisieren." scrollToClose: "Zum Schließen scrollen" +advice: "Tipps" +realtimeMode: "Echtzeit-Modus" +turnItOn: "Einschalten" +turnItOff: "Ausschalten" +emojiMute: "Emoji stummschalten" +emojiUnmute: "Emoji-Stummschaltung aufheben" +muteX: "{x} stummschalten" +unmuteX: "Stummschaltung von {x} aufheben" +abort: "Abbrechen" +tip: "Tipps und Tricks" +redisplayAllTips: "Alle „Tipps und Tricks“ wieder anzeigen" +hideAllTips: "Alle „Tipps und Tricks“ ausblenden" +defaultImageCompressionLevel: "Standard-Bildkomprimierungsstufe" +defaultImageCompressionLevel_description: "Ein niedrigerer Wert erhält die Bildqualität, erhöht aber die Dateigröße. <br>Höhere Werte reduzieren die Dateigröße, verringern aber die Bildqualität." _chat: noMessagesYet: "Noch keine Nachrichten" newMessage: "Neue Nachricht" @@ -1379,6 +1400,8 @@ _chat: chatNotAvailableInOtherAccount: "Die Chatfunktion wurde vom anderen Benutzer deaktiviert." cannotChatWithTheUser: "Starten eines Chats mit diesem Benutzer nicht möglich" cannotChatWithTheUser_description: "Der Chat ist entweder nicht verfügbar oder die andere Seite hat den Chat nicht aktiviert." + youAreNotAMemberOfThisRoomButInvited: "Du bist kein Teilnehmer in diesem Raum, aber du hast eine Einladung erhalten. Bitte nimm die Einladung an, um beizutreten." + doYouAcceptInvitation: "Nimmst du die Einladung an?" chatWithThisUser: "Mit dem Benutzer chatten" thisUserAllowsChatOnlyFromFollowers: "Dieser Benutzer nimmt nur Chats von Followern an." thisUserAllowsChatOnlyFromFollowing: "Dieser Benutzer nimmt nur Chats von Benutzern an, denen er folgt." @@ -1418,12 +1441,20 @@ _settings: makeEveryTextElementsSelectable: "Alle Textelemente auswählbar machen" makeEveryTextElementsSelectable_description: "Die Aktivierung kann in manchen Situationen die Benutzerfreundlichkeit beeinträchtigen." useStickyIcons: "Icons beim Scrollen folgen lassen" + enableHighQualityImagePlaceholders: "Zeige Platzhalter für Bilder in hoher Qualität an" + uiAnimations: "Animationen der Benutzeroberfläche" showNavbarSubButtons: "Unterschaltflächen in der Navigationsleiste anzeigen" ifOn: "Wenn eingeschaltet" ifOff: "Wenn ausgeschaltet" enableSyncThemesBetweenDevices: "Synchronisierung von installierten Themen auf verschiedenen Endgeräten" enablePullToRefresh: "Ziehen zum Aktualisieren" enablePullToRefresh_description: "Bei Benutzung einer Maus, mit gedrücktem Mausrad ziehen" + realtimeMode_description: "Stellt eine Verbindung mit dem Server her und aktualisiert die Inhalte in Echtzeit. Kann zu mehr Datenverkehr einem höheren Akkuverbrauch führen." + contentsUpdateFrequency: "Häufigkeit des Abrufs von Inhalten" + contentsUpdateFrequency_description: "Je höher der Wert, desto häufiger werden die Inhalte aktualisiert, aber die Leistung sinkt und der Datenverkehr und der Akkuverbrauch steigen." + contentsUpdateFrequency_description2: "Wenn der Echtzeitmodus aktiviert ist, werden die Inhalte unabhängig von dieser Einstellung in Echtzeit aktualisiert." + showUrlPreview: "URL-Vorschau anzeigen" + showAvailableReactionsFirstInNote: "Zeige die verfügbaren Reaktionen im oberen Bereich an." _chat: showSenderName: "Name des Absenders anzeigen" sendOnEnter: "Eingabetaste sendet Nachricht" @@ -1604,6 +1635,20 @@ _serverSettings: thisSettingWillAutomaticallyOffWhenModeratorsInactive: "Wenn über einen bestimmten Zeitraum keine Moderatorenaktivität festgestellt wird, wird diese Einstellung automatisch deaktiviert, um Spam zu verhindern." deliverSuspendedSoftware: "Software, die nicht mehr beliefert wird" deliverSuspendedSoftwareDescription: "Sie können eine Auswahl von Namen und Versionen verschiedener Serversoftware angeben, um die Zustellung zu stoppen, z. B. aufgrund von Sicherheitslücken. Diese Versionsinformationen werden vom Server bereitgestellt und ihre Zuverlässigkeit ist nicht garantiert. Es wird jedoch empfohlen, eine Vorabversion anzugeben, wie z. B. >= 2024.3.1-0, da die Angabe >= 2024.3.1 keine benutzerdefinierten Versionen wie 2024.3.1-custom.0 einschließt." + singleUserMode: "Einzelbenutzermodus" + singleUserMode_description: "Wenn du der einzige Benutzer dieses Servers bist, optimiert die Aktivierung dieses Modus die Leistung des Servers." + signToActivityPubGet: "ActivityPub-GET-Anfragen signieren" + signToActivityPubGet_description: "Normalerweise sollte diese Option aktiviert sein. Die Deaktivierung kann Probleme im Zusammenhang mit der Föderation beheben, aber andererseits könnte sie die Föderation mit einigen anderen Servern deaktivieren." + proxyRemoteFiles: "Proxy für Dateien fremder Instanzen" + proxyRemoteFiles_description: "Wenn diese Einstellung aktiviert ist, werden fremde Dateien über einen Proxyserver übertragen und bereitgestellt. Dies hilft bei der Erstellung von Vorschaubildern und schützt die Privatsphäre der Benutzer." + allowExternalApRedirect: "Weiterleitungen für Anfragen über ActivityPub zulassen" + allowExternalApRedirect_description: "Wenn diese Option aktiviert ist, können andere Server Inhalte von Drittanbietern über diesen Server abfragen, was jedoch zu Content-Spoofing führen kann." + userGeneratedContentsVisibilityForVisitor: "Sichtbarkeit von nutzergenerierten Inhalten für Gäste" + userGeneratedContentsVisibilityForVisitor_description: "Dies ist nützlich, um zu verhindern, dass unangemessene Inhalte, die nicht gut moderiert sind, ungewollt über deinen eigenen Server im Internet veröffentlicht werden." + _userGeneratedContentsVisibilityForVisitor: + all: "Alles ist öffentlich" + localOnly: "Nur lokale Inhalte werden veröffentlicht, fremde Inhalte bleiben privat" + none: "Alles ist privat" _accountMigration: moveFrom: "Von einem anderen Konto zu diesem migrieren" moveFromSub: "Alias für ein anderes Konto erstellen" @@ -1944,6 +1989,9 @@ _role: canImportMuting: "Importieren von Stummgeschalteten zulassen" canImportUserLists: "Importieren von Listen erlauben" chatAvailability: "Chatten erlauben" + uploadableFileTypes: "Hochladbare Dateitypen" + uploadableFileTypes_caption: "Gibt die zulässigen MIME-/Dateitypen an. Mehrere MIME-Typen können durch einen Zeilenumbruch getrennt angegeben werden, und Platzhalter können mit einem Sternchen (*) angegeben werden. (z. B. image/*)" + uploadableFileTypes_caption2: "Bei manchen Dateien ist es nicht möglich, den Typ zu bestimmen. Um solche Dateien zuzulassen, füge {x} der Spezifikation hinzu." _condition: roleAssignedTo: "Manuellen Rollen zugewiesen" isLocal: "Lokaler Benutzer" @@ -2796,6 +2844,8 @@ _dataSaver: _avatar: title: "Animierte Profilbilder deaktivieren" description: "Die Animation von Profilbildern wird angehalten. Da animierte Bilder eine größere Dateigröße haben können als normale Bilder, kann dies den Datenverkehr weiter reduzieren." + _disableUrlPreview: + title: "URL-Vorschau deaktivieren" _code: title: "Code-Hervorhebungen ausblenden" description: "Wenn Code-Hervorhebungen in MFM usw. verwendet werden, werden sie erst geladen, wenn sie angetippt werden. Die Syntaxhervorhebung erfordert das Herunterladen der Definitionsdateien für jede Programmiersprache. Es ist daher zu erwarten, dass die Deaktivierung des automatischen Ladens dieser Dateien die Menge des Datenverkehrs reduziert." @@ -3001,3 +3051,85 @@ _search: pleaseEnterServerHost: "Gib den Server-Host ein" pleaseSelectUser: "Benutzer auswählen" serverHostPlaceholder: "Beispiel: misskey.example.com" +_serverSetupWizard: + installCompleted: "Die Installation von Misskey ist abgeschlossen!" + firstCreateAccount: "Erstelle zunächst ein Administratorkonto." + accountCreated: "Ein Administratorkonto wurde angelegt!" + serverSetting: "Servereinstellungen" + youCanEasilyConfigureOptimalServerSettingsWithThisWizard: "Mit diesem Assistenten lässt sich die optimale Serverkonfiguration leicht einrichten." + settingsYouMakeHereCanBeChangedLater: "Die Einstellungen hier können später geändert werden." + howWillYouUseMisskey: "Wie wirst du Misskey verwenden?" + _use: + single: "Ein-Personen-Server" + single_description: "Verwende den Server alleine als deinen eigenen." + single_youCanCreateMultipleAccounts: "Bei Bedarf können mehrere Konten eingerichtet werden, auch wenn es sich um einen Ein-Personen-Server handelt." + group: "Gruppenserver" + open: "Offener Server" + open_description: "Registrierung für alle öffnen." + howManyUsersDoYouExpect: "Mit wie vielen Benutzern rechnest du?" + _scale: + small: "Weniger als 100 (kleiner Maßstab)" + medium: "Mehr als 100 und weniger als 1000 Benutzer (mittelgroß)" + large: "Mehr als 1000 (großer Maßstab)" + largeScaleServerAdvice: "Für große Server sind unter Umständen fortgeschrittene Kenntnisse erforderlich, z. B. Lastverteilung und Datenbankreplikation." + doYouConnectToFediverse: "Mit dem Fediverse verbinden?" + doYouConnectToFediverse_description1: "Bei Anschluss an ein Netz von verteilten Servern (Fediverse) können Inhalte mit anderen Servern ausgetauscht werden." + doYouConnectToFediverse_description2: "Die Verbindung mit dem Fediverse wird auch als „Föderation“ bezeichnet." + youCanConfigureMoreFederationSettingsLater: "Erweiterte Einstellungen, wie z. B. die Angabe von föderierbaren Servern, können später vorgenommen werden." + adminInfo_mustBeFilled: "Dies ist auf einem offenen Server oder bei aktivierter Föderation erforderlich." + followingSettingsAreRecommended: "Die folgenden Einstellungen werden empfohlen" + applyTheseSettings: "Diese Einstellungen anwenden" + skipSettings: "Konfiguration überspringen" + settingsCompleted: "Einrichtung abgeschlossen!" + settingsCompleted_description: "Vielen Dank für deine Zeit. Jetzt, wo alles fertig ist, kannst du den Server sofort benutzen." + settingsCompleted_description2: "Detaillierte Servereinstellungen können über die „Systemsteuerung“ vorgenommen werden." + donationRequest: "Spendenaufruf" + _donationRequest: + text1: "Misskey ist eine freie Software, die von Freiwilligen entwickelt wird." + text2: "Wir würden uns über deine Unterstützung freuen, damit wir dieses Projekt auch in Zukunft weiterentwickeln können." + text3: "Für Unterstützer gibt es auch besondere Vorteile!" +_uploader: + compressedToX: "Komprimiert zu {x}" + savedXPercent: "{x}% gespart" + abortConfirm: "Einige Dateien wurden nicht hochgeladen. Möchtest du den Vorgang abbrechen?" + doneConfirm: "Einige Dateien wurden nicht hochgeladen. Möchtest du den Vorgang fortsetzen?" + maxFileSizeIsX: "Die maximale Dateigröße, die hochgeladen werden kann, beträgt {x}." + allowedTypes: "Hochladbare Dateitypen" + tip: "Die Datei ist noch nicht hochgeladen worden. In diesem Dialog kannst du die Datei vor dem Hochladen anzeigen, umbenennen, komprimieren und zuschneiden. Wenn du fertig bist, klicke auf „Hochladen“, um den Upload zu starten." +_clientPerformanceIssueTip: + makeSureDisabledAdBlocker: "Deaktiviere deinen Adblocker" + makeSureDisabledAdBlocker_description: "Adblocker können die Leistung beeinträchtigen; vergewissere dich, ob in deinem Betriebssystem, Browser oder deinen Add-ons Adblocker aktiviert sind." + makeSureDisabledCustomCss: "Benutzerdefiniertes CSS deaktivieren" + makeSureDisabledCustomCss_description: "Das Überschreiben von Stilen kann die Leistung beeinträchtigen. Stelle daher sicher, dass du kein benutzerdefiniertes CSS oder Erweiterungen aktiviert hast, die Stile überschreiben." + makeSureDisabledAddons: "Erweiterungen deaktivieren" + makeSureDisabledAddons_description: "Einige Erweiterungen können das Verhalten des Clients stören und die Leistung beeinträchtigen. Deaktiviere die Browser-Erweiterungen und prüfe, ob sich die Situation dadurch verbessert." +_clip: + tip: "Clips sind eine Funktion, mit der du Notizen gruppieren kannst." +_userLists: + tip: "Es können Listen mit beliebigen Benutzern erstellt werden. Die erstellte Liste kann als eigene Chronik angezeigt werden." +watermark: "Wasserzeichen" +defaultPreset: "Standard-Voreinstellungen" +_watermarkEditor: + quitWithoutSaveConfirm: "Nicht gespeicherte Änderungen verwerfen?" + driveFileTypeWarn: "Diese Datei wird nicht unterstützt" + driveFileTypeWarnDescription: "Bilddatei auswählen" + title: "Wasserzeichen bearbeiten" + opacity: "Transparenz" + scale: "Größe" + text: "Text" + position: "Position" + type: "Art" + image: "Bilder" + advanced: "Fortgeschritten" + angle: "Winkel" +_imageEffector: + title: "Effekte" + addEffect: "Effekte hinzufügen" + discardChangesConfirm: "Änderungen verwerfen und beenden?" + _fxs: + chromaticAberration: "Chromatische Abweichung" + glitch: "Glitch" + mirror: "Spiegeln" + invert: "Farben umkehren" + grayscale: "Schwarzweiß" + colorAdjust: "Farbkorrektur" diff --git a/locales/el-GR.yml b/locales/el-GR.yml index c8aff304d2..ad146866be 100644 --- a/locales/el-GR.yml +++ b/locales/el-GR.yml @@ -403,3 +403,5 @@ _reversi: total: "ΣÏνολο" _search: searchScopeLocal: "Τοπικό" +_watermarkEditor: + image: "Εικόνες" diff --git a/locales/en-US.yml b/locales/en-US.yml index 492a9f2887..bedc781274 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1365,6 +1365,8 @@ abort: "Abort" tip: "Tips & Tricks" redisplayAllTips: "Show all “Tips & Tricks†again" hideAllTips: "Hide all \"Tips & Tricks\"" +defaultImageCompressionLevel: "Default image compression level" +defaultImageCompressionLevel_description: "High, reduces the file size but also the image quality. <br>High, reduces the file size but also the image quality." _chat: noMessagesYet: "No messages yet" newMessage: "New message" @@ -1452,6 +1454,7 @@ _settings: contentsUpdateFrequency_description: "The higher the value the more the content updates but it lowers the performance and increases the traffic and memory consumption." contentsUpdateFrequency_description2: "When real-time mode is on, content is updated in real time regardless of this setting." showUrlPreview: "Show URL preview" + showAvailableReactionsFirstInNote: "Show available reactions at the top." _chat: showSenderName: "Show sender's name" sendOnEnter: "Press Enter to send" @@ -2968,7 +2971,7 @@ _customEmojisManager: markAsDeleteTargetRanges: "Mark rows in the selection as a target to delete" alertUpdateEmojisNothingDescription: "There are no updated Emojis." alertDeleteEmojisNothingDescription: "There are no Emojis to be deleted." - confirmMovePage: "" + confirmMovePage: "Would you like to move pages?" confirmChangeView: "" confirmUpdateEmojisDescription: "Update {count} Emoji(s). Are you sure to continue?" confirmDeleteEmojisDescription: "Delete checked {count} Emoji(s). Are you sure to continue?" @@ -3117,3 +3120,50 @@ _clip: tip: "Clip is a feature that allows you to organize your notes." _userLists: tip: "Lists can contain any user you specify when creating, the created list can then be displayed as a timeline showing only the specified users." +watermark: "Watermark" +defaultPreset: "Default Preset" +_watermarkEditor: + tip: "A watermark, such as credit information, can be added to the image." + quitWithoutSaveConfirm: "Discard unsaved changes?" + driveFileTypeWarn: "This file is not supported" + driveFileTypeWarnDescription: "Choose an image file" + title: "Edit Watermark" + cover: "Cover everything" + repeat: "spread all over" + opacity: "Opacity" + scale: "Size" + text: "Text" + position: "Position" + type: "Type" + image: "Images" + advanced: "Advanced" + stripe: "Stripes" + stripeWidth: "Line width" + stripeFrequency: "Lines count" + angle: "Angle" + polkadot: "Polkadot" + checker: "Checker" + polkadotMainDotOpacity: "Opacity of the main dot" + polkadotMainDotRadius: "Size of the main dot" + polkadotSubDotOpacity: "Opacity of the secondary dot" + polkadotSubDotRadius: "Size of the secondary dot" + polkadotSubDotDivisions: "Number of sub-dots." +_imageEffector: + title: "Effects" + addEffect: "Add Effects" + discardChangesConfirm: "Are you sure you want to leave? You have unsaved changes." + _fxs: + chromaticAberration: "Chromatic Aberration" + glitch: "Glitch" + mirror: "Mirror" + invert: "Invert Colors" + grayscale: "white-black" + colorAdjust: "Colour Correction" + colorClamp: "Color Compression" + colorClampAdvanced: "Color Compression (Advanced)" + distort: "Distortion" + threshold: "Binarize" + zoomLines: "Saturated lines" + stripe: "Stripes" + polkadot: "Polkadot" + checker: "Checker" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 480ade4153..9b32b52ac9 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -1365,6 +1365,8 @@ abort: "Abortar" tip: "Consejos y trucos" redisplayAllTips: "Volver a mostrar todos \"Trucos y consejos\"" hideAllTips: "Ocultar todos los \"Trucos y consejos\"" +defaultImageCompressionLevel: "Nivel de compresión de la imagen por defecto" +defaultImageCompressionLevel_description: "Baja, conserva la calidad de la imagen pero la medida del archivo es más grande. <br>Alta, reduce la medida del archivo pero también la calidad de la imagen." _chat: noMessagesYet: "Aún no hay mensajes" newMessage: "Mensajes nuevos" @@ -1452,6 +1454,7 @@ _settings: contentsUpdateFrequency_description: "Cuanto mayor sea el valor, más se actualiza el contenido, pero disminuye el rendimiento y aumenta el tráfico y el consumo de memoria." contentsUpdateFrequency_description2: "Cuando el modo en tiempo real está activado, el contenido se actualiza en tiempo real independientemente de esta configuración." showUrlPreview: "Mostrar la vista previa de la URL" + showAvailableReactionsFirstInNote: "Mostrar las reacciones disponibles en la parte superior." _chat: showSenderName: "Mostrar el nombre del remitente" sendOnEnter: "Intro para enviar" @@ -2462,6 +2465,8 @@ _visibility: disableFederation: "No federado" disableFederationDescription: "No enviar a otras instancias" _postForm: + quitInspiteOfThereAreUnuploadedFilesConfirm: "Hay archivos que no se han cargado, ¿deseas descartarlos y cerrar el formulario?" + uploaderTip: "El archivo aún no se ha cargado. Desde el menú Archivo, puedes cambiar el nombre, recortar imágenes, poner marcas de agua y comprimir o no el archivo. Los archivos se cargan automáticamente al publicar una nota." replyPlaceholder: "Responder a esta nota" quotePlaceholder: "Citar esta nota" channelPlaceholder: "Publicar en el canal" @@ -2627,6 +2632,7 @@ _notification: flushNotification: "Limpiar notificaciones" exportOfXCompleted: "La exportación de {x} ha sido completada." login: "Alguien ha iniciado sesión" + createToken: "Token de acceso creado" createTokenDescription: "Si no tienes ni idea, elimina el token de acceso a través de \"{text}\"." _types: all: "Todo" @@ -2724,10 +2730,18 @@ _webhookSettings: _abuseReport: _notificationRecipient: createRecipient: "Añadir destinatario a los informes" + modifyRecipient: "Editar un destinatario en el informe de moderación\n" + recipientType: "Tipo de notificación" _recipientType: mail: "Correo" webhook: "Webhook" + _captions: + mail: "Enviar un correo electrónico a todos los moderadores cuando reciban un informe de moderación" + webhook: "Enviar una notificación al SystemWebhook cuando se reciba o se resuelva un informe de moderación" keywords: "Palabras Clave" + notifiedUser: "Usuarios a notificar" + notifiedWebhook: "Webhook a utilizar" + deleteConfirm: "¿Estás seguro de que deseas borrar el destinatario del informe de moderación?" _moderationLogTypes: createRole: "Rol creado" deleteRole: "Rol eliminado" @@ -2752,9 +2766,12 @@ _moderationLogTypes: resetPassword: "Resetear contraseña" suspendRemoteInstance: "Instancia remota suspendida" unsuspendRemoteInstance: "Suspensión de instancia remota retirada" + updateRemoteInstanceNote: "Nota de moderación de una instancia remota actualizada" markSensitiveDriveFile: "Archivo marcado como sensible" unmarkSensitiveDriveFile: "Archivo marcado como no sensible" resolveAbuseReport: "Reporte resuelto" + forwardAbuseReport: "Informe reenviado" + updateAbuseReportNote: "Nota de moderación de un informe actualizada" createInvitation: "Generar invitación" createAd: "Anuncio creado" deleteAd: "Anuncio eliminado" @@ -2764,6 +2781,18 @@ _moderationLogTypes: deleteAvatarDecoration: "Decoración de avatar eliminada" unsetUserAvatar: "Quitar decoración de avatar de este usuario" unsetUserBanner: "Quitar banner de este usuario" + createSystemWebhook: "Crear un SystemWebhook" + updateSystemWebhook: "Actualizar SystemWebhook " + deleteSystemWebhook: "Borrar SystemWebHook" + createAbuseReportNotificationRecipient: "Crear un destinatario para el informe de moderación" + updateAbuseReportNotificationRecipient: "Destinatario de los informes actualizados" + deleteAbuseReportNotificationRecipient: "Destinatario de los informes borrado" + deleteAccount: "Cuenta Borrada" + deletePage: "Página borrada" + deleteFlash: "Juego borrado" + deleteGalleryPost: "Publicación de la galerÃa, eliminada" + deleteChatRoom: "Borrar sala del chat" + updateProxyAccountDescription: "Actualizar la descripción de la cuenta proxy" _fileViewer: title: "Detalles del archivo" type: "Tipo de archivo" @@ -2818,17 +2847,46 @@ _dataSaver: _avatar: title: "Avatares animados" description: "Desactiva la animación de los avatares. Las imágenes animadas pueden llegar a ser de mayor tamaño que las normales, por lo que al desactivarlas puedes reducir el consumo de datos." + _urlPreviewThumbnail: + title: "Ocultar las miniaturas de las vistas previas de URL" + description: "Las imágenes en miniatura de la vista previa de URL no se pueden cargar " + _disableUrlPreview: + title: "Desactivar la vista previa de las URL" + description: "Desactiva la función de previsualización de la URL. A diferencia de solo las imágenes en miniatura, esta función reduce la carga de la propia información vinculada." _code: title: "Resaltar código" description: "Si se usa resaltado de código en MFM, etc., no se cargará hasta pulsar en ello. El resaltado de sintaxis requiere la descarga de archivos de definición para cada lenguaje de programación. Debido a esto, al deshabilitar la carga automática de estos archivos reducirás el consumo de datos." _hemisphere: N: "Hemisferio norte" S: "Hemisferio sur" + caption: "Usado en algunos clientes para determinar la estación del año" _reversi: reversi: "Reversi" + gameSettings: "Configuración del juego" + chooseBoard: "Elegir tablero" + blackOrWhite: "Negras/Blancas" + blackIs: "{name} juega con negras" rules: "Reglas" + thisGameIsStartedSoon: "El juego comenzará en breve" + waitingForOther: "Esperando el turno del adversario" + waitingForMe: "Esperando tu turno" + waitingBoth: "Prepárate" + ready: "Listo" + cancelReady: "No estoy listo" + opponentTurn: "Turno del oponente" + myTurn: "¡Tu turno!" + turnOf: "Le toca a {name}" + pastTurnOf: "Turno de {name}" + surrender: "Rendirse" + surrendered: "Te has rendido" + timeout: "Se acabó el tiempo" + drawn: "Empate" won: "{name} ha ganado" + black: "Negras" + white: "Blancas" total: "Total" + turnCount: "Turno {count}" + myGames: "Mis rondas" allGames: "Todos los juegos" ended: "Finalizado" playing: "Jugando actualmente" @@ -2894,11 +2952,68 @@ _customEmojisManager: sortOrder: "Ordenar" registrationLogs: "Log de registros " registrationLogsCaption: "Los registros se mostrarán al actualizar o borrar Emojis. Desaparecerán después de actualizarlos o eliminarlos, pasar a una nueva página o recargar." + alertEmojisRegisterFailedDescription: "No se ha podido actualizar o borrar el emoji. Por favor comprueba el log del registro para más detalles." + _logs: + showSuccessLogSwitch: "Mostrar registro de éxito" + failureLogNothing: "No hay log de fallos" + logNothing: "No hay logs" + _remote: + selectionRowDetail: "Detalle de la lÃnea seleccionada" + importSelectionRows: "Importar las lÃneas seleccionadas" + importSelectionRangesRows: "Importar las filas seleccionadas" + importEmojisButton: "Importar los Emojis marcados" + confirmImportEmojisTitle: "Importar Emojis" + confirmImportEmojisDescription: "Importar {count} Emoji(s) recibidos del servidor remoto. Por favor, presta mucha atención a la licencia del Emoji. ¿Estás seguro de continuar?" + _local: + tabTitleList: "Lista de emojis registrados" + tabTitleRegister: "Registro de Emojis" + _list: + emojisNothing: "No hay Emojis registrados" + markAsDeleteTargetRows: "Marcar las filas seleccionadas como objetivo a eliminar" + markAsDeleteTargetRanges: "Selección de filas para su eliminación" + alertUpdateEmojisNothingDescription: "No hay Emojis actualizados" + alertDeleteEmojisNothingDescription: "No hay Emojis para borrar" + confirmMovePage: "¿Quieres cambiar de página?" + confirmChangeView: "¿De verdad quieres cambiar la vista?" + confirmUpdateEmojisDescription: "Actualizar {count} Emoji(s). ¿Deseas continuar?" + confirmDeleteEmojisDescription: "Borrar {count} Emoji(s) seleccionados. ¿Deseas continuar?" + confirmResetDescription: "Se restablecerán todos los cambios hechos hasta ahora." + confirmMovePageDesciption: "Se han realizado cambios en los Emojis de esta página.\nSi abandonas la página sin guardar, se descartarán todos los cambios realizados en esta página." + dialogSelectRoleTitle: "Buscar Emojis por rol" + _register: + uploadSettingTitle: "Ajustes de carga" + uploadSettingDescription: "En esta pantalla, puedes configurar el comportamiento al cargar Emojis." + directoryToCategoryLabel: "Introduce el nombre del directorio en el campo \"categorÃa\"" + directoryToCategoryCaption: "Cuando arrastres y sueltes un directorio, introduce el nombre del directorio en el campo \"categorÃa\"." + confirmRegisterEmojisDescription: "Registra los Emojis de la lista como nuevos Emojis personalizados. ¿Estás seguro de continuar? (Para evitar sobrecargas, sólo {count} Emoji(s) en una sola operación)" + confirmClearEmojisDescription: "Descartar las ediciones y borrar los Emojis de la lista. ¿Estás seguro de continuar?" + confirmUploadEmojisDescription: "Cargar los {count} archivo(s) arrastrado(s) y soltado(s) en la unidad. ¿Estás seguro de continuar?" +_embedCodeGen: + title: "Personalizar el código de incrustación" + header: "Mostrar encabezados" + autoload: "Cargar más automáticamente (no recomendado)" + maxHeight: "Altura máxima" + maxHeightDescription: "0 desactiva el ajuste del valor máximo. Para evitar que el widget siga creciendo verticalmente, especifica algún valor." + maxHeightWarn: "El lÃmite de altura máxima está desactivado (0). Si esto no estaba previsto, establece la altura máxima en algún valor." + previewIsNotActual: "La visualización difiere de la incrustación real porque excede el rango mostrado en la pantalla de vista previa." + rounded: "Bordes Redondeados" + border: "Añadir un borde al marco exterior" + applyToPreview: "Aplicar a la vista previa" + generateCode: "Crear el código para incrustar" + codeGenerated: "El código ha sido generado" + codeGeneratedDescription: "Pegue el código generado en su sitio web para incrustar el contenido." +_selfXssPrevention: + warning: "Advertencia" + title: "\"Pegar algo en esta pantalla\" es un timo." + description1: "Si pegas algo aquÃ, un usuario malintencionado podrÃa secuestrar tu cuenta o robar tu información personal." + description2: "Si no entiendes que estás pegando exactamente, %cdetente ahora mismo y cierra esta ventana" + description3: "Para más información visita esto {link}" _followRequest: recieved: "Petición de seguimiento recibida" sent: "Petición de seguimiento enviada" _remoteLookupErrors: _federationNotAllowed: + title: "Incapaz de comunicarse con este servidor." description: "Es posible que se haya desactivado la comunicación con este servidor o que haya sido bloqueado.\nPonte en contacto con el administrador del servidor.." _uriInvalid: title: "La URI es inválida" @@ -2927,9 +3042,130 @@ _captcha: text: "Se ha producido un error inesperado." _bootErrors: title: "Fallo al cargar" + serverError: "Si el problema persiste después de esperar un momento y volver a cargar, póngase en contacto con el administrador del servidor con el siguiente ID de error." + solution: "Lo siguiente puede resolver el problema." + solution1: "Actualiza tu navegador web y el sistema operativo a la última versión" + solution2: "Desactiva el AdBlocker" + solution3: "Borra la memoria caché del navegador web " + solution4: "(Navegador Tor) configura dom.webaudio.enabled a true" + otherOption: "Otras opciones" + otherOption1: "Borra la configuración y la memoria caché del cliente" + otherOption2: "Iniciar el cliente simple" + otherOption3: "Iniciar la herramienta de reparación" _search: searchScopeAll: "Todo" searchScopeLocal: "Local" + searchScopeServer: "Especifica el servidor (Instancia)" searchScopeUser: "Especificar usuario" + pleaseEnterServerHost: "Introduce la dirección del servidor/Instancia" + pleaseSelectUser: "Selecciona un usuario, por favor" + serverHostPlaceholder: "Ejemplo: misskey.example.com" +_serverSetupWizard: + installCompleted: "¡La instalación de Misskey se ha completado!" + firstCreateAccount: "Para comenzar, crea una cuenta de administrador" + accountCreated: "¡La cuenta de administrador se ha creado! " + serverSetting: "Configuración del servidor" + youCanEasilyConfigureOptimalServerSettingsWithThisWizard: "Este asistente te facilita una configuración óptima del servidor." + settingsYouMakeHereCanBeChangedLater: "Los ajustes que han sido cambiados a través de este asistente pueden ser modificados más tarde." + howWillYouUseMisskey: "¿Cómo vas a usar Misskey?" + _use: + single: "Servidor para un único usuario." + single_description: "UtilÃzalo como tu propio servidor dedicado." + single_youCanCreateMultipleAccounts: "Se pueden crear múltiples cuentas según sea necesario, incluso cuando se opera como servidor unipersonal." + group: "Servidor de grupo" + group_description: "Invita otros usuarios de confianza y úsalo con más de una persona.\n" + open: "Servidor público" + open_description: "Permite a cualquiera registrarse" + openServerAdvice: "Aceptar un número no determinado de usuarios comporta algunos riesgos. Se recomienda operar con un sistema de moderación fiable para hacer frente a los problemas." + openServerAntiSpamAdvice: "Para evitar que su servidor se convierta en un trampolÃn para el spam, también debe prestar mucha atención a la seguridad habilitando funciones anti-bot como reCAPTCHA." + howManyUsersDoYouExpect: "¿Cuántas personas esperas?" + _scale: + small: "Menos de 100 (escala pequeña)" + medium: "Más de 100 y menos de 1000 (escala media)\n" + large: "Más de 1000(escala grande)" + largeScaleServerAdvice: "Los grandes servidores pueden requerir conocimientos avanzados de infraestructura, como equilibrio de carga y replicación de bases de datos." + doYouConnectToFediverse: "¿Quieres conectarte al Fediverso?" + doYouConnectToFediverse_description1: "Cuando se conecta a una red de servidores distribuidos (Fediverso), el contenido puede intercambiarse con otros servidores." + doYouConnectToFediverse_description2: "Conectarse con el Fediverso también se conoce como \"federación\"." + youCanConfigureMoreFederationSettingsLater: "Los ajustes avanzados, como la especificación de servidores federados, pueden configurarse más adelante." + adminInfo: "Información del administrador" + adminInfo_description: "Establece la información del administrador para recibir consultas." + adminInfo_mustBeFilled: "Esta información debe ser introducida en el caso de registros abiertos o la federación esté activada." + followingSettingsAreRecommended: "Se recomienda los siguientes ajustes" + applyTheseSettings: "Aplicar estos ajustes" + skipSettings: "Omitir configuración" + settingsCompleted: "¡Configuración inicial del servidor completada!" + settingsCompleted_description: "Gracias por tu tiempo. Ahora que está todo listo puedes empezar a utilizar el servidor inmediatamente." + settingsCompleted_description2: "La configuración avanzada del servidor pueden realizarse a través del \"Panel de control\"." + donationRequest: "Por favor Dona" + _donationRequest: + text1: "Misskey es un software libre desarrollado por voluntarios." + text2: "AgradecerÃamos su apoyo para que podamos seguir desarrollando este software en el futuro." + text3: "También hay beneficios especiales para los donantes" _uploader: + compressedToX: "Comprimir a {x}" + savedXPercent: "Guardando {x}%" + abortConfirm: "Algunos archivos no se han cargado, ¿deseas cancelar?" + doneConfirm: "Algunos archivos no se han cargado, ¿deseas continuar de todos modos?" + maxFileSizeIsX: "El tamaño máximo de archivo que se puede cargar es de {x}" allowedTypes: "Tipos de archivos que se pueden cargar." + tip: "El archivo aún no se ha cargado, por lo que este cuadro de diálogo te permite confirmar, renombrar, comprimir y recortar el archivo antes de cargarlo. Cuando esté listo, puedes iniciar la carga pulsando el botón \"Cargar\"." +_clientPerformanceIssueTip: + title: "Si crees que el consumo de baterÃa es demasiado alto" + makeSureDisabledAdBlocker: "Por favor, desactive el bloqueador de publicidad." + makeSureDisabledAdBlocker_description: "Los bloqueadores de anuncios pueden afectar al rendimiento. Asegúrate de que no están activados en tu sistema o en las funciones/extensiones de tu navegador." + makeSureDisabledCustomCss: "Desactiva el CSS personalizado" + makeSureDisabledCustomCss_description: "Anular estilos puede afectar al rendimiento. Asegúrate de que el CSS personalizado o las extensiones que sobrescriben estilos no están activados." + makeSureDisabledAddons: "Desactiva las extensiones " + makeSureDisabledAddons_description: "Algunas extensiones pueden interferir con el comportamiento del cliente y afectar al rendimiento. Por favor, deshabilita las extensiones de tu navegador y comprueba si esto mejora la situación." +_clip: + tip: "Clip es una función que permite organizar varias notas." +_userLists: + tip: "Las listas pueden contener cualquier usuario que especifiques al crearlas, la lista creada puede mostrarse entonces como una lÃnea de tiempo mostrando solo los usuarios especificados." +watermark: "Marca de Agua" +defaultPreset: "Por defecto" +_watermarkEditor: + tip: "Se puede añadir a la imagen una marca de agua, como información crediticia." + quitWithoutSaveConfirm: "¿Descartar cambios no guardados?" + driveFileTypeWarn: "Este archivo es incompatible" + driveFileTypeWarnDescription: "Elegir una imagen" + title: "Editar la marca de agua" + cover: "Cubrir todo" + repeat: "Repetir" + opacity: "Opacidad" + scale: "Tamaño" + text: "Texto" + position: "Posición" + type: "Tipo" + image: "Imágenes" + advanced: "Avanzado" + stripe: "Rayas" + stripeWidth: "Anchura de lÃnea" + stripeFrequency: "Número de lÃneas." + angle: "Ãngulo" + polkadot: "Lunares" + checker: "verificador" + polkadotMainDotOpacity: "Opacidad del cÃrculo principal" + polkadotMainDotRadius: "Tamaño del cÃrculo principal." + polkadotSubDotOpacity: "Opacidad del cÃrculo secundario" + polkadotSubDotRadius: "Tamaño del cÃrculo secundario." + polkadotSubDotDivisions: "Número de subpuntos." +_imageEffector: + title: "Efecto" + addEffect: "Añadir Efecto" + discardChangesConfirm: "¿Ignorar cambios y salir?" + _fxs: + chromaticAberration: "Aberración Cromática" + glitch: "Glitch" + mirror: "Espejo" + invert: "Invertir colores" + grayscale: "Blanco y negro" + colorAdjust: "Corrección de Color" + colorClamp: "Compresión cromática" + colorClampAdvanced: "Compresión cromática avanzada" + distort: "Distorsión" + threshold: "umbral" + zoomLines: "Saturación de LÃneas" + stripe: "Rayas" + polkadot: "Lunares" + checker: "Corrector" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 34afb28723..eba5a511de 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -2360,3 +2360,13 @@ _search: searchScopeAll: "Tous" searchScopeLocal: "Local" searchScopeUser: "Spécifier l'utilisateur·rice" +_watermarkEditor: + driveFileTypeWarn: "Ce fichier n'est pas pris en charge" + opacity: "Transparence" + scale: "Taille" + text: "Texte" + position: "Position" + type: "Type" + image: "Images" + advanced: "Avancé" + angle: "Angle" diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 144990e6a6..0e8e46dc7b 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -2608,3 +2608,13 @@ _search: searchScopeAll: "Semua" searchScopeLocal: "Lokal" searchScopeUser: "Pengguna spesifik" +_watermarkEditor: + driveFileTypeWarn: "Berkas ini tidak didukung" + opacity: "Opasitas" + scale: "Ukuran" + text: "Teks" + position: "Posisi" + type: "Tipe" + image: "Gambar" + advanced: "Tingkat lanjut" + angle: "Sudut" diff --git a/locales/index.d.ts b/locales/index.d.ts index 73bcb2f1c8..16003570a2 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -5481,6 +5481,14 @@ export interface Locale extends ILocale { * å…¨ã¦ã®ã€Œãƒ’ントã¨ã‚³ãƒ„ã€ã‚’éžè¡¨ç¤º */ "hideAllTips": string; + /** + * デフォルトã®ç”»åƒåœ§ç¸®åº¦ + */ + "defaultImageCompressionLevel": string; + /** + * 低ãã™ã‚‹ã¨ç”»è³ªã‚’ä¿ã¦ã¾ã™ãŒã€ãƒ•ァイルサイズã¯å¢—åŠ ã—ã¾ã™ã€‚<br>高ãã™ã‚‹ã¨ãƒ•ァイルサイズを減らã›ã¾ã™ãŒã€ç”»è³ªã¯ä½Žä¸‹ã—ã¾ã™ã€‚ + */ + "defaultImageCompressionLevel_description": string; "_chat": { /** * ã¾ã メッセージã¯ã‚りã¾ã›ã‚“ @@ -5821,6 +5829,10 @@ export interface Locale extends ILocale { * URLプレビューを表示ã™ã‚‹ */ "showUrlPreview": string; + /** + * 利用ã§ãるリアクションを先é ã«è¡¨ç¤º + */ + "showAvailableReactionsFirstInNote": string; "_chat": { /** * é€ä¿¡è€…ã®åå‰ã‚’表示 @@ -9573,6 +9585,14 @@ export interface Locale extends ILocale { }; "_postForm": { /** + * アップãƒãƒ¼ãƒ‰ã•れã¦ã„ãªã„ファイルãŒã‚りã¾ã™ãŒã€ç ´æ£„ã—ã¦ãƒ•ォームを閉ã˜ã¾ã™ã‹ï¼Ÿ + */ + "quitInspiteOfThereAreUnuploadedFilesConfirm": string; + /** + * ファイルã¯ã¾ã アップãƒãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“。ファイルã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€ãƒªãƒãƒ¼ãƒ ã‚„ç”»åƒã®ã‚¯ãƒãƒƒãƒ—ã€ã‚¦ã‚©ãƒ¼ã‚¿ãƒ¼ãƒžãƒ¼ã‚¯ã®ä»˜ä¸Žã€åœ§ç¸®ã®æœ‰ç„¡ãªã©ã‚’è¨å®šã§ãã¾ã™ã€‚ファイルã¯ãƒŽãƒ¼ãƒˆæŠ•稿時ã«è‡ªå‹•ã§ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れã¾ã™ã€‚ + */ + "uploaderTip": string; + /** * ã“ã®ãƒŽãƒ¼ãƒˆã«è¿”ä¿¡... */ "replyPlaceholder": string; @@ -12020,6 +12040,196 @@ export interface Locale extends ILocale { */ "tip": string; }; + /** + * ウォーターマーク + */ + "watermark": string; + /** + * デフォルトã®ãƒ—リセット + */ + "defaultPreset": string; + "_watermarkEditor": { + /** + * ç”»åƒã«ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆæƒ…å ±ãªã©ã®ã‚¦ã‚©ãƒ¼ã‚¿ãƒ¼ãƒžãƒ¼ã‚¯ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + */ + "tip": string; + /** + * ä¿å˜ã›ãšã«çµ‚了ã—ã¾ã™ã‹ï¼Ÿ + */ + "quitWithoutSaveConfirm": string; + /** + * ã“ã®ãƒ•ァイルã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“ + */ + "driveFileTypeWarn": string; + /** + * ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„ + */ + "driveFileTypeWarnDescription": string; + /** + * ウォーターマークã®ç·¨é›† + */ + "title": string; + /** + * 全体ã«è¢«ã›ã‚‹ + */ + "cover": string; + /** + * æ•·ãè©°ã‚ã‚‹ + */ + "repeat": string; + /** + * ä¸é€æ˜Žåº¦ + */ + "opacity": string; + /** + * サイズ + */ + "scale": string; + /** + * テã‚スト + */ + "text": string; + /** + * ä½ç½® + */ + "position": string; + /** + * タイプ + */ + "type": string; + /** + * ç”»åƒ + */ + "image": string; + /** + * 高度 + */ + "advanced": string; + /** + * ストライプ + */ + "stripe": string; + /** + * ラインã®å¹… + */ + "stripeWidth": string; + /** + * ãƒ©ã‚¤ãƒ³ã®æ•° + */ + "stripeFrequency": string; + /** + * 角度 + */ + "angle": string; + /** + * ãƒãƒ«ã‚«ãƒ‰ãƒƒãƒˆ + */ + "polkadot": string; + /** + * ãƒã‚§ãƒƒã‚«ãƒ¼ + */ + "checker": string; + /** + * メインドットã®ä¸é€æ˜Žåº¦ + */ + "polkadotMainDotOpacity": string; + /** + * メインドットã®å¤§ãã• + */ + "polkadotMainDotRadius": string; + /** + * サブドットã®ä¸é€æ˜Žåº¦ + */ + "polkadotSubDotOpacity": string; + /** + * サブドットã®å¤§ãã• + */ + "polkadotSubDotRadius": string; + /** + * ã‚µãƒ–ãƒ‰ãƒƒãƒˆã®æ•° + */ + "polkadotSubDotDivisions": string; + }; + "_imageEffector": { + /** + * エフェクト + */ + "title": string; + /** + * ã‚¨ãƒ•ã‚§ã‚¯ãƒˆã‚’è¿½åŠ + */ + "addEffect": string; + /** + * å¤‰æ›´ã‚’ç ´æ£„ã—ã¦çµ‚了ã—ã¾ã™ã‹ï¼Ÿ + */ + "discardChangesConfirm": string; + "_fxs": { + /** + * 色åŽå·® + */ + "chromaticAberration": string; + /** + * グリッム+ */ + "glitch": string; + /** + * ミラー + */ + "mirror": string; + /** + * 色ã®å転 + */ + "invert": string; + /** + * 白黒 + */ + "grayscale": string; + /** + * è‰²èª¿è£œæ£ + */ + "colorAdjust": string; + /** + * 色ã®åœ§ç¸® + */ + "colorClamp": string; + /** + * 色ã®åœ§ç¸®(高度) + */ + "colorClampAdvanced": string; + /** + * æªã¿ + */ + "distort": string; + /** + * 二値化 + */ + "threshold": string; + /** + * 集ä¸ç·š + */ + "zoomLines": string; + /** + * ストライプ + */ + "stripe": string; + /** + * ãƒãƒ«ã‚«ãƒ‰ãƒƒãƒˆ + */ + "polkadot": string; + /** + * ãƒã‚§ãƒƒã‚«ãƒ¼ + */ + "checker": string; + /** + * ブãƒãƒƒã‚¯ãƒŽã‚¤ã‚º + */ + "blockNoise": string; + /** + * ティアリング + */ + "tearing": string; + }; + }; } declare const locales: { [lang: string]: Locale; diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 8bcbe45655..ba443bdb8a 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -327,6 +327,7 @@ dark: "Scuro" lightThemes: "Tema Chiaro" darkThemes: "Tema Scuro" syncDeviceDarkMode: "Sincronizza il tema scuro con le impostazioni del dispositivo" +switchDarkModeManuallyWhenSyncEnabledConfirm: "({x}) è attiva. Vuoi disattivare la sincronizzazione e passare alla modalità manuale?" drive: "Drive" fileName: "Nome dell'allegato" selectFile: "Scelta allegato" @@ -581,7 +582,7 @@ sounds: "Impostazioni suoni" sound: "Suono" notificationSoundSettings: "Preferenze di notifica" listen: "Ascolta" -none: "Nessuno" +none: "Nessuna" showInPage: "Visualizza in pagina" popout: "Finestra pop-out" volume: "Volume" @@ -1329,6 +1330,7 @@ restore: "Ripristina" syncBetweenDevices: "Sincronizzazione tra i dispositivi" preferenceSyncConflictTitle: "Sul server esiste già il valore impostato" preferenceSyncConflictText: "Le impostazione sincronizzata salverà il valore sul server. Però, bada che esiste già un valore sul server. Quale vorresti sovrascrivere?" +preferenceSyncConflictChoiceMerge: "Integra" preferenceSyncConflictChoiceServer: "Valore del server" preferenceSyncConflictChoiceDevice: "Valore del dispositivo" preferenceSyncConflictChoiceCancel: "Annulla la sincronizzazione" @@ -1340,7 +1342,7 @@ information: "Informazioni" chat: "Chat" migrateOldSettings: "Migrare le vecchie impostazioni" migrateOldSettings_description: "Di solito, viene fatto automaticamente. Se per qualche motivo non fossero migrate con successo, è possibile avviare il processo di migrazione manualmente, sovrascrivendo le configurazioni attuali." -compress: "Comprimi" +compress: "Compressione" right: "Destra" bottom: "Sotto" top: "Sopra" @@ -1349,6 +1351,7 @@ settingsMigrating: "Migrazione delle impostazioni. Attendere prego ... (Puoi anc readonly: "Sola lettura" goToDeck: "Torna al Deck" federationJobs: "Coda di federazione" +driveAboutTip: "Il Drive mostra l'elenco di file caricati in passato. Puoi organizzarli in cartelle, riusarli allegandoli ad altre note, o caricarli in anticipo e poi pubblicarli in un secondo momento. Tieni presente che se elimini un file, non sarà più visibile in nessuno degli oggetti a cui è allegato (Note, pagine, avatar, banner, ecc.)" scrollToClose: "Scorri per chiudere" advice: "Consiglio" realtimeMode: "Modalità in tempo reale" @@ -1362,6 +1365,8 @@ abort: "Annulla" tip: "Suggerimento" redisplayAllTips: "Mostra tutti i suggerimenti" hideAllTips: "Nascondi tutti i suggerimenti" +defaultImageCompressionLevel: "Livello predefinito di compressione immagini" +defaultImageCompressionLevel_description: "La compressione diminuisce la qualità dell'immagine, poca compressione mantiene alta qualità delle immagini. Aumentandola, si riducono le dimensioni del file, a discapito della qualità dell'immagine." _chat: noMessagesYet: "Ancora nessun messaggio" newMessage: "Nuovo messaggio" @@ -1449,6 +1454,7 @@ _settings: contentsUpdateFrequency_description: "Se l'impostazione è alta, verranno aggiornati più frequentemente, consumando più dati e più batteria." contentsUpdateFrequency_description2: "Quando la modalità è in tempo reale, arriveranno a prescindere." showUrlPreview: "Mostra anteprima dell'URL" + showAvailableReactionsFirstInNote: "Mostra le reazioni disponibili in alto" _chat: showSenderName: "Mostra il nome del mittente" sendOnEnter: "Invio spedisce" @@ -2459,6 +2465,8 @@ _visibility: disableFederation: "Senza federazione" disableFederationDescription: "Non spedire attività alle altre istanze remote" _postForm: + quitInspiteOfThereAreUnuploadedFilesConfirm: "Alcuni file non sono stati caricati. Vuoi annullare l'operazione?" + uploaderTip: "Il file non è ancora stato caricato. Nel menu file (tre puntini), puoi ritagliare l'immagine, mettere la filigrana, decidere la presenza o l'assenza di compressione... Il file verrà caricato automaticamente quando pubblichi la Nota." replyPlaceholder: "Rispondi a questa nota..." quotePlaceholder: "Cita questa nota..." channelPlaceholder: "Pubblica sul canale..." @@ -2902,6 +2910,8 @@ _offlineScreen: _urlPreviewSetting: title: "Impostazioni per l'anteprima delle URL" enable: "Attiva l'anteprima delle URL" + allowRedirect: "Segui i reindirizzamenti per visualizzare le anteprime" + allowRedirectDescription: "Se la URL inserita contiene un reindirizzamento, decidi di seguire il reindirizzamento fino alla destinazione, visualizzandone l'anteprima. Disabilitando questa opzione si risparmiano risorse del server, ma il contenuto effettivo dal reindirizzamento, non verrà visualizzato." timeout: "Timeout dell'anteprima in millisecondi" timeoutDescription: "Impegna al massimo il tempo indicato, altrimenti ignora l'anteprima" maximumContentLength: "Grandezza del contenuto (Content-Length in byte)" @@ -3112,3 +3122,50 @@ _clip: tip: "Le clip sono una funzionalità che consente di raggruppare le Note." _userLists: tip: "Puoi creare un elenco di Note create da qualsiasi profilo. L'elenco è visualizzato come una sequenza temporale." +watermark: "Filigrana" +defaultPreset: "Impostazioni predefinite" +_watermarkEditor: + tip: "Puoi aggiungere una filigrana, ad esempio con i crediti alle tue immagini." + quitWithoutSaveConfirm: "Uscire senza salvare?" + driveFileTypeWarn: "Formato file non supportato" + driveFileTypeWarnDescription: "Per favore seleziona un file immagine" + title: "Modifica la filigrana" + cover: "Coprire tutto" + repeat: "Disposizione" + opacity: "Opacità " + scale: "Dimensioni" + text: "Testo" + position: "Posizione" + type: "Tipo" + image: "Immagini" + advanced: "Avanzato" + stripe: "Strisce" + stripeWidth: "Larghezza della linea" + stripeFrequency: "Il numero di linee" + angle: "Angolo" + polkadot: "A pallini" + checker: "revisore" + polkadotMainDotOpacity: "Opacità del punto principale" + polkadotMainDotRadius: "Dimensione del punto principale" + polkadotSubDotOpacity: "Opacità del punto secondario" + polkadotSubDotRadius: "Dimensione del punto secondario" + polkadotSubDotDivisions: "Quantità di punti secondari" +_imageEffector: + title: "Effetto" + addEffect: "Aggiungi effetto" + discardChangesConfirm: "Scarta le modifiche ed esci?" + _fxs: + chromaticAberration: "Aberrazione cromatica" + glitch: "Glitch" + mirror: "Specchio" + invert: "Inversione colore" + grayscale: "Bianco e nero" + colorAdjust: "Correzione Colore" + colorClamp: "Compressione del colore" + colorClampAdvanced: "Compressione del colore (avanzata)" + distort: "Distorsione" + threshold: "Soglia" + zoomLines: "Linea di saturazione" + stripe: "Strisce" + polkadot: "A pallini" + checker: "revisore" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index c7971507aa..6ef92e0f2e 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1365,6 +1365,8 @@ abort: "䏿¢" tip: "ヒントã¨ã‚³ãƒ„" redisplayAllTips: "å…¨ã¦ã®ã€Œãƒ’ントã¨ã‚³ãƒ„ã€ã‚’å†è¡¨ç¤º" hideAllTips: "å…¨ã¦ã®ã€Œãƒ’ントã¨ã‚³ãƒ„ã€ã‚’éžè¡¨ç¤º" +defaultImageCompressionLevel: "デフォルトã®ç”»åƒåœ§ç¸®åº¦" +defaultImageCompressionLevel_description: "低ãã™ã‚‹ã¨ç”»è³ªã‚’ä¿ã¦ã¾ã™ãŒã€ãƒ•ァイルサイズã¯å¢—åŠ ã—ã¾ã™ã€‚<br>高ãã™ã‚‹ã¨ãƒ•ァイルサイズを減らã›ã¾ã™ãŒã€ç”»è³ªã¯ä½Žä¸‹ã—ã¾ã™ã€‚" _chat: noMessagesYet: "ã¾ã メッセージã¯ã‚りã¾ã›ã‚“" @@ -1455,6 +1457,7 @@ _settings: contentsUpdateFrequency_description: "高ã„ã»ã©ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ã«ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒæ›´æ–°ã•れã¾ã™ãŒã€ãƒ‘フォーマンスãŒä½Žä¸‹ã—ã€é€šä¿¡é‡ã¨ãƒãƒƒãƒ†ãƒªãƒ¼ã®æ¶ˆè²»ãŒå¤šããªã‚Šã¾ã™ã€‚" contentsUpdateFrequency_description2: "リアルタイムモードãŒã‚ªãƒ³ã®ã¨ãã¯ã€ã“ã®è¨å®šã«é–¢ã‚らãšãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ã§ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒæ›´æ–°ã•れã¾ã™ã€‚" showUrlPreview: "URLプレビューを表示ã™ã‚‹" + showAvailableReactionsFirstInNote: "利用ã§ãるリアクションを先é ã«è¡¨ç¤º" _chat: showSenderName: "é€ä¿¡è€…ã®åå‰ã‚’表示" @@ -2519,6 +2522,8 @@ _visibility: disableFederationDescription: "他サーãƒãƒ¼ã¸ã®é…信を行ã„ã¾ã›ã‚“" _postForm: + quitInspiteOfThereAreUnuploadedFilesConfirm: "アップãƒãƒ¼ãƒ‰ã•れã¦ã„ãªã„ファイルãŒã‚りã¾ã™ãŒã€ç ´æ£„ã—ã¦ãƒ•ォームを閉ã˜ã¾ã™ã‹ï¼Ÿ" + uploaderTip: "ファイルã¯ã¾ã アップãƒãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“。ファイルã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€ãƒªãƒãƒ¼ãƒ ã‚„ç”»åƒã®ã‚¯ãƒãƒƒãƒ—ã€ã‚¦ã‚©ãƒ¼ã‚¿ãƒ¼ãƒžãƒ¼ã‚¯ã®ä»˜ä¸Žã€åœ§ç¸®ã®æœ‰ç„¡ãªã©ã‚’è¨å®šã§ãã¾ã™ã€‚ファイルã¯ãƒŽãƒ¼ãƒˆæŠ•稿時ã«è‡ªå‹•ã§ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れã¾ã™ã€‚" replyPlaceholder: "ã“ã®ãƒŽãƒ¼ãƒˆã«è¿”ä¿¡..." quotePlaceholder: "ã“ã®ãƒŽãƒ¼ãƒˆã‚’引用..." channelPlaceholder: "ãƒãƒ£ãƒ³ãƒãƒ«ã«æŠ•稿..." @@ -3218,3 +3223,55 @@ _clip: _userLists: tip: "ä»»æ„ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒå«ã¾ã‚Œã‚‹ãƒªã‚¹ãƒˆã‚’作æˆã§ãã¾ã™ã€‚作æˆã—ãŸãƒªã‚¹ãƒˆã¯ã‚¿ã‚¤ãƒ ラインã¨ã—ã¦è¡¨ç¤ºå¯èƒ½ã§ã™ã€‚" + +watermark: "ウォーターマーク" +defaultPreset: "デフォルトã®ãƒ—リセット" +_watermarkEditor: + tip: "ç”»åƒã«ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆæƒ…å ±ãªã©ã®ã‚¦ã‚©ãƒ¼ã‚¿ãƒ¼ãƒžãƒ¼ã‚¯ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + quitWithoutSaveConfirm: "ä¿å˜ã›ãšã«çµ‚了ã—ã¾ã™ã‹ï¼Ÿ" + driveFileTypeWarn: "ã“ã®ãƒ•ァイルã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“" + driveFileTypeWarnDescription: "ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„" + title: "ウォーターマークã®ç·¨é›†" + cover: "全体ã«è¢«ã›ã‚‹" + repeat: "æ•·ãè©°ã‚ã‚‹" + opacity: "ä¸é€æ˜Žåº¦" + scale: "サイズ" + text: "テã‚スト" + position: "ä½ç½®" + type: "タイプ" + image: "ç”»åƒ" + advanced: "高度" + stripe: "ストライプ" + stripeWidth: "ラインã®å¹…" + stripeFrequency: "ãƒ©ã‚¤ãƒ³ã®æ•°" + angle: "角度" + polkadot: "ãƒãƒ«ã‚«ãƒ‰ãƒƒãƒˆ" + checker: "ãƒã‚§ãƒƒã‚«ãƒ¼" + polkadotMainDotOpacity: "メインドットã®ä¸é€æ˜Žåº¦" + polkadotMainDotRadius: "メインドットã®å¤§ãã•" + polkadotSubDotOpacity: "サブドットã®ä¸é€æ˜Žåº¦" + polkadotSubDotRadius: "サブドットã®å¤§ãã•" + polkadotSubDotDivisions: "ã‚µãƒ–ãƒ‰ãƒƒãƒˆã®æ•°" + +_imageEffector: + title: "エフェクト" + addEffect: "ã‚¨ãƒ•ã‚§ã‚¯ãƒˆã‚’è¿½åŠ " + discardChangesConfirm: "å¤‰æ›´ã‚’ç ´æ£„ã—ã¦çµ‚了ã—ã¾ã™ã‹ï¼Ÿ" + + _fxs: + chromaticAberration: "色åŽå·®" + glitch: "グリッãƒ" + mirror: "ミラー" + invert: "色ã®å転" + grayscale: "白黒" + colorAdjust: "色調補æ£" + colorClamp: "色ã®åœ§ç¸®" + colorClampAdvanced: "色ã®åœ§ç¸®(高度)" + distort: "æªã¿" + threshold: "二値化" + zoomLines: "集ä¸ç·š" + stripe: "ストライプ" + polkadot: "ãƒãƒ«ã‚«ãƒ‰ãƒƒãƒˆ" + checker: "ãƒã‚§ãƒƒã‚«ãƒ¼" + blockNoise: "ブãƒãƒƒã‚¯ãƒŽã‚¤ã‚º" + tearing: "ティアリング" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 677baf4aa8..92f849efbb 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -2848,3 +2848,13 @@ _search: searchScopeAll: "ã¿ã‚“ãª" searchScopeLocal: "ãƒãƒ¼ã‚«ãƒ«" searchScopeUser: "ユーザー指定" +_watermarkEditor: + driveFileTypeWarn: "ã“ã®ãƒ•ァイルã¯å¯¾å¿œã—ã¨ã‚‰ã¸ã‚“" + opacity: "ä¸é€æ˜Žåº¦" + scale: "大ãã•" + text: "テã‚スト" + position: "ä½ç½®" + type: "タイプ" + image: "ç”»åƒ" + advanced: "高度" + angle: "角度" diff --git a/locales/ko-GS.yml b/locales/ko-GS.yml index 361d90d8fa..554eb42694 100644 --- a/locales/ko-GS.yml +++ b/locales/ko-GS.yml @@ -848,3 +848,5 @@ _remoteLookupErrors: _search: searchScopeAll: "ë§ìº‰" searchScopeUser: "ì‚¬ìš©ìž ì§€ì •" +_watermarkEditor: + image: "ì´ë¯¸ì§€" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index c7d36b4a01..7d3ec1296c 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -1365,6 +1365,8 @@ abort: "중지" tip: "íŒê³¼ ìœ ìš©í•œ ì •ë³´" redisplayAllTips: "ëª¨ë“ 'íŒê³¼ ìœ ìš©í•œ ì •ë³´'를 재표시" hideAllTips: "ëª¨ë“ 'íŒê³¼ ìœ ìš©í•œ ì •ë³´'를 비표시" +defaultImageCompressionLevel: "기본 ì´ë¯¸ì§€ ì••ì¶• ì •ë„" +defaultImageCompressionLevel_description: "낮추면 í™”ì§ˆì„ ìœ ì§€í•©ë‹ˆë‹¤ë§Œ íŒŒì¼ í¬ê¸°ëŠ” ì¦ê°€í•©ë‹ˆë‹¤. <br>높ì´ë©´ íŒŒì¼ í¬ê¸°ë¥¼ ì¤„ì¼ ìˆ˜ 있습니다만 í™”ì§ˆì€ ì €í•˜ë©ë‹ˆë‹¤." _chat: noMessagesYet: "ì•„ì§ ë©”ì‹œì§€ê°€ 없습니다" newMessage: "새로운 메시지" @@ -1452,6 +1454,7 @@ _settings: contentsUpdateFrequency_description: "높ì„ìˆ˜ë¡ ì‹¤ì‹œê°„ìœ¼ë¡œ 콘í…ì¸ ê°€ ì—…ë°ì´íЏë©ë‹ˆë‹¤ë§Œ, ì„±ëŠ¥ì´ ì €í•˜ë˜ê³ ë°ì´í„° 사용량과 ë°°í„°ë¦¬ì˜ ì†Œë¹„ê°€ ì¦ê°€í•©ë‹ˆë‹¤." contentsUpdateFrequency_description2: "실시간 모드가 ì¼œì ¸ ìžˆì„ ë•ŒëŠ” ì´ ì„¤ì •ê³¼ ìƒê´€ì—†ì´ 실시간으로 콘í…ì¸ ê°€ ì—…ë°ì´íЏë©ë‹ˆë‹¤." showUrlPreview: "URL 미리보기 표시" + showAvailableReactionsFirstInNote: "ì´ìš© 가능한 ë¦¬ì•¡ì…˜ì„ ì„ ë‘로 표시" _chat: showSenderName: "ë°œì‹ ìž ì´ë¦„ 표시" sendOnEnter: "엔터로 보내기" @@ -2462,6 +2465,8 @@ _visibility: disableFederation: "ì—°í•©ì— ë³´ë‚´ì§€ 않기" disableFederationDescription: "다른 서버로 ë³´ë‚´ì§€ 않습니다" _postForm: + quitInspiteOfThereAreUnuploadedFilesConfirm: "업로드ë˜ì§€ ì•Šì€ íŒŒì¼ì´ 있습니다만, ì—†ì• ê³ í¼ì„ ë‹«ê² ìŠµë‹ˆê¹Œ?" + uploaderTip: "파ì¼ì´ ì•„ì§ ì—…ë¡œë“œë¼ìžˆì§€ 않습니다. íŒŒì¼ ë©”ë‰´ì—서 ì´ë¦„ 바꾸기나 ì´ë¯¸ì§€ì˜ ìžë¥´ê¸°, ì›Œí„°ë§ˆí¬ ë„£ê¸°, ì••ì¶•ì˜ ìœ ë¬´ ë“±ì„ ì„¤ì •í• ìˆ˜ 있습니다. 파ì¼ì€ 노트 게시 시 ìžë™ìœ¼ë¡œ 업로드ë©ë‹ˆë‹¤." replyPlaceholder: "ì´ ë…¸íŠ¸ì— ë‹µê¸€..." quotePlaceholder: "ì´ ë…¸íŠ¸ë¥¼ ì¸ìš©..." channelPlaceholder: "채ë„ì— ê²Œì‹œí•˜ê¸°..." @@ -3078,7 +3083,7 @@ _serverSetupWizard: small: "100명 ì´í•˜(소규모)" medium: "100명 ì´ìƒ 1000명 ì´í•˜(중간 규모)" large: "1000명 ì´ìƒ(대규모)" - largeScaleServerAdvice: "대규모 서버ì—서는 부하분산ì´ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ì˜ ë ˆí”Œë¦¬ì¼€ì´ì…˜ 등 ë†’ì€ ì¸í”„ë¼ìŠ¤íŠ¸ëŸì²˜ ì§€ì‹ì´ í•„ìš”í• ìˆ˜ 있습니다." + largeScaleServerAdvice: "대규모 서버ì—서는 부하분산ì´ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ì˜ ë³µì œ 등 ë†’ì€ ì¸í”„ë¼ìŠ¤íŠ¸ëŸì²˜ ì§€ì‹ì´ í•„ìš”í• ìˆ˜ 있습니다." doYouConnectToFediverse: "Fediverseì— ì ‘ì†í•˜ì‹œê² 습니까?" doYouConnectToFediverse_description1: "분산형 서버로 êµ¬ì„±ëœ ë„¤íŠ¸ì›Œí¬(Fediverse)ì— ì ‘ì†í•˜ë©´ 다른 서버와 서로 콘í…ì¸ ì˜ ì£¼ê³ ë°›ê¸°ë¥¼ í• ìˆ˜ 있습니다." doYouConnectToFediverse_description2: "Fediverseì— ì ‘ì†í•˜ëŠ” ê²ƒì„ 'ì—°í•©'ì´ë¼ê³ ë„ ë¶€ë¦…ë‹ˆë‹¤." @@ -3117,3 +3122,50 @@ _clip: tip: "í´ë¦½ì€ 노트를 ì •ë¦¬í• ìˆ˜ 있는 기능입니다." _userLists: tip: "ìž„ì˜ì˜ ìœ ì €ê°€ í¬í•¨ëœ 리스트를 ìž‘ì„±í• ìˆ˜ 있습니다. 작성한 리스트는 타임ë¼ì¸ìœ¼ë¡œ 표시가 가능합니다." +watermark: "워터마í¬" +defaultPreset: "기본 프리셋" +_watermarkEditor: + tip: "ì´ë¯¸ì§€ì— í¬ë ˆë”§ ì •ë³´ ë“±ì˜ ì›Œí„°ë§ˆí¬ë¥¼ ì¶”ê°€í• ìˆ˜ 있습니다." + quitWithoutSaveConfirm: "보존하지 ì•Šê³ ì¢…ë£Œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" + driveFileTypeWarn: "ì´ íŒŒì´" + driveFileTypeWarnDescription: "ì´ë¯¸ì§€ 파ì¼ì„ ì„ íƒí•´ì£¼ì‹ì‹œì˜¤." + title: "ì›Œí„°ë§ˆí¬ íŽ¸ì§‘" + cover: "ì „ì²´ì— ë¶™ì´ê¸°" + repeat: "ì „ë©´ì— ê¹”ê¸°" + opacity: "불투명ë„" + scale: "í¬ê¸°" + text: "í…스트" + position: "위치" + type: "종류" + image: "ì´ë¯¸ì§€" + advanced: "ê³ ê¸‰" + stripe: "줄무늬" + stripeWidth: "ë¼ì¸ì˜ í" + stripeFrequency: "ë¼ì¸ì˜ 수" + angle: "ê°ë„" + polkadot: "물방울 무늬" + checker: "ì²´í¬ ë¬´ëŠ¬" + polkadotMainDotOpacity: "주요 ë¬¼ë°©ìš¸ì˜ ë¶ˆíˆ¬ëª…ë„" + polkadotMainDotRadius: "주요 ë¬¼ë°©ìš¸ì˜ í¬ê¸°" + polkadotSubDotOpacity: "서브 ë¬¼ë°©ìš¸ì˜ ë¶ˆíˆ¬ëª…ë„" + polkadotSubDotRadius: "서브 ë¬¼ë°©ìš¸ì˜ í¬ê¸°" + polkadotSubDotDivisions: "서브 ë¬¼ë°©ìš¸ì˜ ìˆ˜" +_imageEffector: + title: "ì´íŽ™íŠ¸" + addEffect: "ì´íŽ™íŠ¸ë¥¼ 추가" + discardChangesConfirm: "ë³€ê²½ì„ ì·¨ì†Œí•˜ê³ ì¢…ë£Œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" + _fxs: + chromaticAberration: "색수차" + glitch: "글리치" + mirror: "미러" + invert: "색 ë°˜ì „" + grayscale: "í‘ë°±" + colorAdjust: "색조 ë³´ì •" + colorClamp: "색 ì••ì¶•" + colorClampAdvanced: "색 ì••ì¶•(ê³ ê¸‰)" + distort: "뒤틀림" + threshold: "ì´ì§„í™”" + zoomLines: "ì§‘ì¤‘ì„ " + stripe: "줄무늬" + polkadot: "물방울 무늬" + checker: "ì²´í¬ ë¬´ëŠ¬" diff --git a/locales/lo-LA.yml b/locales/lo-LA.yml index 455a71f302..49270119b3 100644 --- a/locales/lo-LA.yml +++ b/locales/lo-LA.yml @@ -483,3 +483,5 @@ _remoteLookupErrors: title: "ບà»à»ˆàºžàº»àºš" _search: searchScopeAll: "ທັງà»àº»àº”" +_watermarkEditor: + image: "ຮູບພາບ" diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index 1fc4342e92..62f31dcced 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -1078,3 +1078,6 @@ _remoteLookupErrors: title: "Niet gevonden" _search: searchScopeAll: "Alle" +_watermarkEditor: + image: "Afbeeldingen" + advanced: "Geavanceerd" diff --git a/locales/no-NO.yml b/locales/no-NO.yml index 578183efa5..b161ce19b6 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -735,3 +735,8 @@ _remoteLookupErrors: title: "Ikke funnet" _search: searchScopeAll: "Alle" +_watermarkEditor: + scale: "Størrelse" + text: "Tekst" + type: "Type" + image: "Bilder" diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 9e98e158bd..a72b9f2c7d 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -1584,3 +1584,10 @@ _remoteLookupErrors: _search: searchScopeAll: "Wszystkie" searchScopeLocal: "Lokalne" +_watermarkEditor: + opacity: "Przezroczystość" + scale: "Rozmiar" + text: "Tekst" + type: "Typ" + image: "ZdjÄ™cia" + advanced: "Zaawansowane" diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 64b152eccf..01300db953 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -3084,3 +3084,13 @@ _clientPerformanceIssueTip: makeSureDisabledCustomCss_description: "Substituir o estilo da página pode afetar o desempenho. Certifique-se que o CSS personalizado ou extensões que modifiquem o estilo da página estejam desabilitados." makeSureDisabledAddons: "Desabilite extensões" makeSureDisabledAddons_description: "Algumas extensões podem afetar comportamentos do cliente e afetar o desempenho. Por favor, desative as extensões do seu navegador e veja se isso melhora a situação." +_watermarkEditor: + driveFileTypeWarn: "Esse arquivo não é compatÃvel" + opacity: "Opacidade" + scale: "Tamanho" + text: "Texto" + position: "Posição" + type: "Tipo" + image: "imagem" + advanced: "Avançado" + angle: "Ângulo" diff --git a/locales/ro-RO.yml b/locales/ro-RO.yml index abfaac7121..de3e17fce3 100644 --- a/locales/ro-RO.yml +++ b/locales/ro-RO.yml @@ -1391,3 +1391,10 @@ _search: searchScopeLocal: "Local" searchScopeUser: "Utilizator specific" serverHostPlaceholder: "Exemplu: misskey.example.com" +_watermarkEditor: + scale: "Dimensiune" + text: "Text" + position: "PoziÈ›ie" + type: "Tip" + image: "Imagini" + advanced: "Avansat" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 647cd0a0df..1e34af9351 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -2191,3 +2191,12 @@ _search: searchScopeAll: "Ð’Ñе" searchScopeLocal: "МеÑтнаÑ" searchScopeUser: "Указанный пользователь" +_watermarkEditor: + opacity: "ÐепрозрачноÑть" + scale: "Размер" + text: "ТекÑÑ‚" + position: "ПозициÑ" + type: "Тип" + image: "ИзображениÑ" + advanced: "Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ñ‹Ñ…" + angle: "Угол" diff --git a/locales/sk-SK.yml b/locales/sk-SK.yml index 577689698f..651e91fa0a 100644 --- a/locales/sk-SK.yml +++ b/locales/sk-SK.yml @@ -1450,3 +1450,10 @@ _remoteLookupErrors: _search: searchScopeAll: "VÅ¡etko" searchScopeLocal: "Lokálne" +_watermarkEditor: + opacity: "PriehľadnosÅ¥" + scale: "VeľkosÅ¥" + text: "Text" + type: "Typ" + image: "Obrázky" + advanced: "RozÅ¡Ãrené" diff --git a/locales/sv-SE.yml b/locales/sv-SE.yml index ba6d8a93d2..4d1708c7d1 100644 --- a/locales/sv-SE.yml +++ b/locales/sv-SE.yml @@ -711,3 +711,6 @@ _selfXssPrevention: warning: "VARNING" _search: searchScopeAll: "Allt" +_watermarkEditor: + scale: "Storlek" + image: "Bilder" diff --git a/locales/th-TH.yml b/locales/th-TH.yml index b4a28aed5b..cbcc337745 100644 --- a/locales/th-TH.yml +++ b/locales/th-TH.yml @@ -220,6 +220,7 @@ silenceThisInstance: "ปิดปาà¸à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œà¸™à¸µà mediaSilenceThisInstance: "ปิดปาà¸à¸ªà¸·à¹ˆà¸à¸‚à¸à¸‡à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œà¸™à¸µà¹‰" operations: "ดำเนินà¸à¸²à¸£" software: "ซà¸à¸Ÿà¸•์à¹à¸§à¸£à¹Œ" +softwareName: "ชื่à¸à¸‹à¸à¸Ÿà¸•์à¹à¸§à¸£à¹Œ" version: "เวà¸à¸£à¹Œà¸Šà¸±à¹ˆà¸™" metadata: "Metadata" withNFiles: "{n} ไฟล์" @@ -1293,6 +1294,10 @@ federationDisabled: "เซิร์ฟเวà¸à¸£à¹Œà¸™à¸µà¹‰à¸›à¸´à¸”à¸à¸²à¸ reactAreYouSure: "คุณต้à¸à¸‡à¸à¸²à¸£à¸—ี่จะตà¸à¸šà¸ªà¸™à¸à¸‡à¸•่ภ\" {emoji}\" หรืà¸à¹„ม่?" markAsSensitiveConfirm: "คุณต้à¸à¸‡à¸à¸²à¸£à¸—ำเครื่à¸à¸‡à¸«à¸¡à¸²à¸¢à¸ªà¸·à¹ˆà¸à¸™à¸µà¹‰à¸§à¹ˆà¸²à¸¥à¸°à¹€à¸à¸µà¸¢à¸”à¸à¹ˆà¸à¸™à¸«à¸£à¸·à¸à¹„ม่?" unmarkAsSensitiveConfirm: "คุณต้à¸à¸‡à¸à¸²à¸£à¸¥à¸šà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ความไวขà¸à¸‡à¸ªà¸·à¹ˆà¸à¸™à¸µà¹‰à¸«à¸£à¸·à¸à¹„ม่?" +preferences: "à¸à¸²à¸£à¸•ั้งค่าสภาพà¹à¸§à¸”ล้à¸à¸¡" +preferencesProfile: "โปรไฟล์à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่า" +preferenceSyncConflictTitle: "à¸à¸²à¸£à¸•ั้งค่ามีà¸à¸¢à¸¹à¹ˆà¸šà¸™à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œ" +preferenceSyncConflictText: "รายà¸à¸²à¸£à¸à¸²à¸£à¸•ั้งค่าที่เปิดใช้งานà¸à¸²à¸£à¸‹à¸´à¸‡à¹‚ครไนซ์จะจัดเà¸à¹‡à¸šà¸„่าไว้บนเซิร์ฟเวà¸à¸£à¹Œ à¹à¸¥à¸°à¸žà¸šà¸„่าที่จัดเà¸à¹‡à¸šà¸šà¸™à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œà¸ªà¸³à¸«à¸£à¸±à¸šà¸£à¸²à¸¢à¸à¸²à¸£à¸à¸²à¸£à¸•ั้งค่านี้ คุณต้à¸à¸‡à¸à¸²à¸£à¸—ำà¸à¸¢à¹ˆà¸²à¸‡à¹„ร?" postForm: "à¹à¸šà¸šà¸Ÿà¸à¸£à¹Œà¸¡à¸à¸²à¸£à¹‚พสต์" information: "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š" right: "ขวา" @@ -1305,6 +1310,7 @@ _chat: send: "ส่ง" _settings: webhook: "Webhook" + preferencesBanner: "คุณสามารถà¸à¸³à¸«à¸™à¸”ค่าพฤติà¸à¸£à¸£à¸¡à¹‚ดยรวมขà¸à¸‡à¹„คลเà¸à¸™à¸•์ได้ตามความต้à¸à¸‡à¸à¸²à¸£à¸‚à¸à¸‡à¸„ุณ" _accountSettings: requireSigninToViewContents: "ต้à¸à¸‡à¹€à¸‚้าสู่ระบบเพื่à¸à¸”ูเนื้à¸à¸«à¸²" requireSigninToViewContentsDescription1: "ต้à¸à¸‡à¹€à¸‚้าสู่ระบบเพื่à¸à¸”ูบันทึà¸à¹à¸¥à¸°à¹€à¸™à¸·à¹‰à¸à¸«à¸²à¸à¸·à¹ˆà¸™ ๆ ทั้งหมดที่คุณสร้าง คาดว่าจะมีประสิทธิผลในà¸à¸²à¸£à¸›à¹‰à¸à¸‡à¸à¸±à¸™à¹„ม่ให้ข้à¸à¸¡à¸¹à¸¥à¸–ูà¸à¹€à¸à¹‡à¸šà¸£à¸§à¸šà¸£à¸§à¸¡à¹‚ดยโปรà¹à¸à¸£à¸¡à¸£à¸§à¸šà¸£à¸§à¸¡à¸‚้à¸à¸¡à¸¹à¸¥" @@ -2722,3 +2728,13 @@ _search: searchScopeAll: "ทั้งหมด" searchScopeLocal: "ท้à¸à¸‡à¸–ิ่น" searchScopeUser: "ผู้ใช้เฉพาะ" +_watermarkEditor: + driveFileTypeWarn: "ไม่รà¸à¸‡à¸£à¸±à¸šà¹„ฟล์นี้" + opacity: "ความทึบà¹à¸ªà¸‡" + scale: "ขนาด" + text: "ข้à¸à¸„วาม" + position: "ตำà¹à¸«à¸™à¹ˆà¸‡" + type: "รูปà¹à¸šà¸š" + image: "รูปภาพ" + advanced: "ขั้นสูง" + angle: "à¹à¸à¸‡à¹€à¸à¸´à¸¥" diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml index f63dcc9467..2f20c02105 100644 --- a/locales/tr-TR.yml +++ b/locales/tr-TR.yml @@ -460,3 +460,5 @@ _moderationLogTypes: resetPassword: "Åžifre sıfırlama" _search: searchScopeAll: "Tümü" +_watermarkEditor: + image: "Görseller" diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index 9f9512d9a0..0c7308a016 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -1625,3 +1625,10 @@ _remoteLookupErrors: _search: searchScopeAll: "Ð’ÑÑ–" searchScopeLocal: "Локальна" +_watermarkEditor: + opacity: "ÐепрозоріÑть" + scale: "Розмір" + text: "ТекÑÑ‚" + type: "Тип" + image: "ЗображеннÑ" + advanced: "Розширені" diff --git a/locales/uz-UZ.yml b/locales/uz-UZ.yml index 612df9e43c..b8375302ba 100644 --- a/locales/uz-UZ.yml +++ b/locales/uz-UZ.yml @@ -1097,3 +1097,8 @@ _remoteLookupErrors: _search: searchScopeAll: "Barcha" searchScopeLocal: "Mahalliy" +_watermarkEditor: + text: "Matn" + type: "turi" + image: "Rasmlar" + advanced: "Murakkab" diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml index 152a9dbd60..47ea715058 100644 --- a/locales/vi-VN.yml +++ b/locales/vi-VN.yml @@ -220,6 +220,7 @@ silenceThisInstance: "Máy chá»§ im lặng" mediaSilenceThisInstance: "Tắt ná»™i dung Ä‘a phương tiện từ máy chá»§ nà y" operations: "Váºn hà nh" software: "Phần má»m" +softwareName: "Tên phần má»m" version: "Phiên bản" metadata: "Metadata" withNFiles: "{n} táºp tin" @@ -1211,6 +1212,9 @@ federationDisabled: "Liên kết bị vô hiệu hóa trên máy chá»§ nà y. BẠreactAreYouSure: "Bạn có muốn phản hồi vá»›i \" {emoji} \" không?" preferences: "Thiết láºp môi trưá»ng" accessibility: "Khả năng tiếp cáºn" +preferencesProfile: "Hồ sÆ¡ sở thÃch" +preferenceSyncConflictTitle: "Cà i đặt tồn tại trên máy chá»§" +preferenceSyncConflictText: "Các thiết láºp đồng bá»™ hóa được báºt sẽ lưu các giá trị cá»§a chúng và o máy chá»§. Tuy nhiên, có những giá trị hiện có trên máy chá»§. Bạn muốn ghi đè lên bá»™ giá trị nà o?" paste: "dán" postForm: "Mẫu đăng" information: "Giá»›i thiệu" @@ -1223,6 +1227,8 @@ _chat: members: "Thà nh viên" home: "Trang chÃnh" send: "Gá»i" +_settings: + preferencesBanner: "Bạn có thể cấu hình hà nh vi chung cá»§a máy khách theo sở thÃch cá»§a mình." _accountSettings: requireSigninToViewContents: "Yêu cầu đăng nháºp để xem ná»™i dung" requireSigninToViewContentsDescription1: "Yêu cầu đăng nháºp để xem tất cả ghi chú và ná»™i dung khác mà bạn tạo. Äiá»u nà y được kỳ vá»ng sẽ có hiệu quả trong việc ngăn chặn thông tin bị thu tháºp bởi các trình thu tháºp thông tin." @@ -2074,3 +2080,12 @@ _search: searchScopeAll: "Tất cả" searchScopeLocal: "Máy chá»§ nà y" searchScopeUser: "Ngưá»i dùng chỉ định" +_watermarkEditor: + opacity: "Äá»™ trong suốt" + scale: "KÃch thước" + text: "Văn bản" + position: "Vị trÃ" + type: "Loại" + image: "Hình ảnh" + advanced: "Nâng cao" + angle: "Góc" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index f9e910c070..fe16a01f3b 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -1365,6 +1365,8 @@ abort: "䏿¢" tip: "æç¤ºå’ŒæŠ€å·§" redisplayAllTips: "釿–°æ˜¾ç¤ºæ‰€æœ‰çš„æç¤ºå’ŒæŠ€å·§" hideAllTips: "éšè—所有的æç¤ºå’ŒæŠ€å·§" +defaultImageCompressionLevel: "默认图åƒåŽ‹ç¼©ç‰çº§" +defaultImageCompressionLevel_description: "较低的ç‰çº§å¯ä»¥ä¿æŒç”»è´¨ï¼Œä½†ä¼šå¢žåŠ æ–‡ä»¶å¤§å°ã€‚<br>较高的ç‰çº§å¯ä»¥å‡å°‘文件大å°ï¼Œä½†ç›¸å¯¹åº”的画质将会é™ä½Žã€‚" _chat: noMessagesYet: "还没有消æ¯" newMessage: "新消æ¯" @@ -1452,6 +1454,7 @@ _settings: contentsUpdateFrequency_description: "设置越高,内容更新越实时,但性能会é™ä½Žï¼Œå¹¶ä¸”会消耗更多的æµé‡å’Œç”µæ± 。" contentsUpdateFrequency_description2: "当实时模å¼å¼€å¯æ—¶ï¼Œæ— 论æ¤è®¾ç½®å¦‚何,内容都会实时更新。" showUrlPreview: "显示 URL 预览" + showAvailableReactionsFirstInNote: "在顶部显示å¯ç”¨çš„回应" _chat: showSenderName: "显示å‘é€è€…çš„åå—" sendOnEnter: "回车键å‘é€" @@ -1628,7 +1631,7 @@ _serverSettings: inquiryUrl: "è”络地å€" inquiryUrlDescription: "ç”¨æ¥æŒ‡å®šè¯¸å¦‚呿œåŠ¡è¿è¥å•†å’¨è¯¢çš„论å›åœ°å€ï¼Œæˆ–记载了è¿è¥å•†è”系方å¼ä¹‹ç±»çš„网页地å€ã€‚" openRegistration: "开放注册" - openRegistrationWarning: "开放注册有风险。建议仅当能够æŒç»ç›‘控æœåŠ¡å™¨å¹¶åœ¨å‡ºçŽ°é—®é¢˜æ—¶èƒ½å¤Ÿç«‹å³å“åº”æ—¶æ‰æ‰“开它。" + openRegistrationWarning: "开放注册有风险。建议仅当能够æŒç»ç›‘控æœåŠ¡å™¨ï¼Œå¹¶åœ¨å‡ºçŽ°é—®é¢˜æ—¶èƒ½å¤Ÿç«‹å³å“åº”æ—¶æ‰æ‰“开它。" thisSettingWillAutomaticallyOffWhenModeratorsInactive: "è‹¥åœ¨ä¸€æ®µæ—¶é—´å†…æ²¡æœ‰æ£€æµ‹åˆ°ç®¡ç†æ´»åŠ¨ï¼Œä¸ºé˜²æ¢åžƒåœ¾ä¿¡æ¯ï¼Œæ¤è®¾å®šå°†è‡ªåЍ关é—。" deliverSuspendedSoftware: "åœæ¢æŠ•递的软件" deliverSuspendedSoftwareDescription: "å¯å› å®‰å…¨æ¼æ´žä¹‹ç±»çš„åŽŸå› ï¼Œåœæ¢å‘指定的æœåŠ¡å™¨åŠæœåŠ¡å™¨ç‰ˆæœ¬é€ä¿¡ã€‚版本信æ¯ç”±æœåС噍æä¾›ï¼Œä¸ä¿è¯å¯é 性。å¯ä½¿ç”¨ semver èŒƒå›´æ¥æŒ‡å®šç‰ˆæœ¬ï¼Œä½†æŒ‡å®š >= 2024.3.1 å°†ä¸åŒ…括如 2024.3.1-custom.0 ç‰è‡ªå®šä¹‰ç‰ˆæœ¬ï¼Œå› æ¤å»ºè®®åƒ >= 2024.3.1-0 è¿™æ ·æŒ‡å®š prerelease 版本。" @@ -1641,7 +1644,7 @@ _serverSettings: allowExternalApRedirect: "å…许通过 ActivityPub é‡å®šå‘查询" allowExternalApRedirect_description: "å¯ç”¨æ—¶ï¼Œå°†å…许其它æœåŠ¡å™¨é€šè¿‡æ¤æœåŠ¡å™¨æŸ¥è¯¢ç¬¬ä¸‰æ–¹å†…å®¹ï¼Œä½†æœ‰å¯èƒ½å¯¼è‡´å†…容欺骗。" userGeneratedContentsVisibilityForVisitor: "用户生æˆå†…容对éžç”¨æˆ·çš„å¯è§æ€§" - userGeneratedContentsVisibilityForVisitor_description: "这对于防æ¢è¯¸å¦‚éš¾ä»¥å®¡æ ¸çš„ä¸é€‚当的远程内容通过您自己的æœåŠ¡å™¨æ— æ„ä¸åœ¨äº’è”网上公开ç‰é—®é¢˜å¾ˆæœ‰ç”¨ã€‚" + userGeneratedContentsVisibilityForVisitor_description: "对于防æ¢éš¾ä»¥å®¡æ ¸çš„ä¸é€‚当的远程内容ç‰ï¼Œé€šè¿‡è‡ªå·±çš„æœåŠ¡å™¨æ— æ„ä¸åœ¨äº’è”网上公开ç‰é—®é¢˜å¾ˆæœ‰ç”¨ã€‚" userGeneratedContentsVisibilityForVisitor_description2: "åŒ…å«æœåŠ¡å™¨æŽ¥æ”¶åˆ°çš„è¿œç¨‹å†…å®¹åœ¨å†…ï¼Œæ— æ¡ä»¶å°†æœåŠ¡å™¨ä¸Šçš„æ‰€æœ‰å†…å®¹å…¬å¼€åœ¨äº’è”网上å˜åœ¨é£Žé™©ã€‚特别是对去ä¸å¿ƒåŒ–çš„ç‰¹æ€§ä¸æ˜¯å¾ˆäº†è§£çš„访问者有å¯èƒ½å°†è¿œç¨‹æœåŠ¡å™¨ä¸Šçš„å†…å®¹è¯¯è®¤ä¸ºæ˜¯åœ¨æ¤æœåŠ¡å™¨å†…ç”Ÿæˆçš„,需è¦ç‰¹åˆ«ç•™æ„。" _userGeneratedContentsVisibilityForVisitor: all: "全部公开" @@ -2140,7 +2143,7 @@ _wordMute: muteWordsDescription: "AND æ¡ä»¶ç”¨ç©ºæ ¼åˆ†éš”,OR æ¡ä»¶ç”¨æ¢è¡Œç¬¦åˆ†éš”。" muteWordsDescription2: "æ£åˆ™è¡¨è¾¾å¼ç”¨æ–œçº¿åŒ…裹" _instanceMute: - instanceMuteDescription: "éšè—æœåС噍ä¸çš„æ‰€æœ‰å¸–å和转帖,包括这些æœåŠ¡å™¨ä¸Šçš„ç”¨æˆ·å›žå¤ã€‚" + instanceMuteDescription: "éšè—æœåС噍䏿‰€æœ‰çš„帖å和转帖,包括这些æœåŠ¡å™¨ä¸Šç”¨æˆ·çš„å›žå¤ã€‚" instanceMuteDescription2: "一行一个" title: "下é¢å®žä¾‹ä¸çš„帖å将被éšè—。" heading: "å·²éšè—çš„æœåС噍" @@ -2462,6 +2465,8 @@ _visibility: disableFederation: "ä¸å‚与è”åˆ" disableFederationDescription: "ä¸å‘é€åˆ°å…¶ä»–æœåС噍" _postForm: + quitInspiteOfThereAreUnuploadedFilesConfirm: "è¿˜æœ‰æœªä¸Šä¼ çš„æ–‡ä»¶ï¼Œè¦ä¸¢å¼ƒå¹¶å…³é—窗å£å—?" + uploaderTip: "æ–‡ä»¶è¿˜æœªä¸Šä¼ ã€‚å¯ä»¥åœ¨æ–‡ä»¶èœå•ä¸è¿›è¡Œé‡å‘½åã€è£å‰ªã€æ·»åŠ æ°´å°ã€è®¾ç½®æ˜¯å¦åŽ‹ç¼©ç‰æ“作。文件将在å‘å¸–æ—¶è‡ªåŠ¨ä¸Šä¼ ã€‚" replyPlaceholder: "回å¤è¿™ä¸ªå¸–å..." quotePlaceholder: "引用这个帖å..." channelPlaceholder: "å‘布到频é“…" @@ -2488,7 +2493,7 @@ _profile: avatarDecorationMax: "æœ€å¤šå¯æ·»åŠ {max} 个挂件" followedMessage: "被关注时显示的消æ¯" followedMessageDescription: "å¯ä»¥è®¾ç½®è¢«å…³æ³¨æ—¶å‘å¯¹æ–¹æ˜¾ç¤ºçš„çŸæ¶ˆæ¯ã€‚" - followedMessageDescriptionForLockedAccount: "éœ€è¦æ‰¹å‡†æ‰èƒ½å…³æ³¨çš„æƒ…å†µä¸‹ï¼Œæ¶ˆæ¯æ˜¯åœ¨è¯·æ±‚è¢«æ‰¹å‡†åŽæ˜¾ç¤ºã€‚" + followedMessageDescriptionForLockedAccount: "éœ€è¦æ‰¹å‡†æ‰èƒ½å…³æ³¨çš„æƒ…况下,消æ¯ä¼šåœ¨è¯·æ±‚è¢«æ‰¹å‡†åŽæ˜¾ç¤ºã€‚" _exportOrImport: allNotes: "所有帖å" favoritedNotes: "æ”¶è—的帖å" @@ -3117,3 +3122,50 @@ _clip: tip: "便ç¾åŠŸèƒ½å¯ä»¥å°†å¸–ååˆå¹¶åœ¨ä¸€èµ·ã€‚" _userLists: tip: "å¯åˆ›å»ºåŒ…å«ä»»æ„用户的列表。已创建的列表å¯ä½œä¸ºæ—¶é—´çº¿æŸ¥çœ‹ã€‚" +watermark: "æ°´å°" +defaultPreset: "默认预设" +_watermarkEditor: + tip: "å¯åœ¨å›¾åƒå†…å¢žåŠ åŒ…å«ä½œè€…ç‰ä¿¡æ¯çš„æ°´å°ã€‚" + quitWithoutSaveConfirm: "ä¸ä¿å˜å°±é€€å‡ºå—?" + driveFileTypeWarn: "䏿”¯æŒæ¤æ–‡ä»¶" + driveFileTypeWarnDescription: "è¯·é€‰æ‹©å›¾åƒæ–‡ä»¶" + title: "编辑水å°" + cover: "覆盖全体" + repeat: "平铺" + opacity: "ä¸é€æ˜Žåº¦" + scale: "大å°" + text: "文本" + position: "ä½ç½®" + type: "类型" + image: "图片" + advanced: "高级" + stripe: "æ¡çº¹" + stripeWidth: "线æ¡å®½åº¦" + stripeFrequency: "çº¿æ¡æ•°é‡" + angle: "角度" + polkadot: "波点" + checker: "检查" + polkadotMainDotOpacity: "主波点的ä¸é€æ˜Žåº¦" + polkadotMainDotRadius: "主波点的大å°" + polkadotSubDotOpacity: "副波点的ä¸é€æ˜Žåº¦" + polkadotSubDotRadius: "副波点的大å°" + polkadotSubDotDivisions: "副波点的数é‡" +_imageEffector: + title: "效果" + addEffect: "æ·»åŠ æ•ˆæžœ" + discardChangesConfirm: "丢弃当å‰è®¾ç½®å¹¶é€€å‡ºï¼Ÿ" + _fxs: + chromaticAberration: "色差" + glitch: "æ•…éšœ" + mirror: "镜åƒ" + invert: "å转颜色" + grayscale: "黑白" + colorAdjust: "è‰²å½©æ ¡æ£" + colorClamp: "颜色é™åˆ¶" + colorClampAdvanced: "颜色é™åˆ¶ï¼ˆé«˜çº§ï¼‰" + distort: "失真" + threshold: "二值化" + zoomLines: "集ä¸çº¿" + stripe: "æ¡çº¹" + polkadot: "波点" + checker: "检查" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index e4d7d69e46..4d276a2e98 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -1365,6 +1365,8 @@ abort: "å–æ¶ˆ" tip: "æç¤ºèˆ‡æŠ€å·§" redisplayAllTips: "釿–°é¡¯ç¤ºæ‰€æœ‰ã€Œæç¤ºèˆ‡æŠ€å·§ã€" hideAllTips: "éš±è—æ‰€æœ‰ã€Œæç¤ºèˆ‡æŠ€å·§ã€" +defaultImageCompressionLevel: "é è¨çš„å½±åƒå£“縮程度" +defaultImageCompressionLevel_description: "低的話å¯ä»¥ä¿ç•™ç•«è³ªï¼Œä½†æ˜¯æœƒå¢žåŠ æª”æ¡ˆçš„å¤§å°ã€‚<br>高的話å¯ä»¥æ¸›å°‘檔案大å°ï¼Œä½†æ˜¯æœƒé™ä½Žç•«è³ªã€‚" _chat: noMessagesYet: "尚無訊æ¯" newMessage: "新訊æ¯" @@ -1452,6 +1454,7 @@ _settings: contentsUpdateFrequency_description: "é »çŽ‡è¶Šé«˜ï¼Œå…§å®¹æ›´æ–°è¶Šå³æ™‚,但å¯èƒ½æœƒé™ä½Žæ•ˆèƒ½ï¼Œä¸¦å¢žåŠ è³‡æ–™å‚³è¼¸é‡èˆ‡é›»æ± 消耗。\n" contentsUpdateFrequency_description2: "ç•¶å³æ™‚模å¼é–‹å•Ÿæ™‚,ä¸è«–æ¤è¨å®šç‚ºä½•ï¼Œå…§å®¹éƒ½æœƒå³æ™‚更新。" showUrlPreview: "顯示網å€é 覽" + showAvailableReactionsFirstInNote: "å°‡å¯ç”¨çš„忇‰é¡¯ç¤ºåœ¨é ‚部" _chat: showSenderName: "顯示發é€è€…çš„å稱" sendOnEnter: "按下 Enter 發é€è¨Šæ¯" @@ -2462,6 +2465,8 @@ _visibility: disableFederation: "åœç”¨è¯é‚¦" disableFederationDescription: "ä¸ç™¼é€åˆ°å…¶ä»–伺æœå™¨" _postForm: + quitInspiteOfThereAreUnuploadedFilesConfirm: "å°šæœ‰æœªä¸Šå‚³çš„æª”æ¡ˆï¼Œç¢ºå®šè¦æ”¾æ£„並關閉表單嗎?" + uploaderTip: "檔案尚未上傳。您å¯ä»¥å¾žæª”案é¸å–®ä¸è¨å®šé‡æ–°å‘½åã€è£åˆ‡åœ–片ã€åŠ ä¸Šæµ®æ°´å°ã€æ˜¯å¦å£“縮ç‰é¸é …。檔案會在發布貼文時自動上傳。\n" replyPlaceholder: "回覆æ¤è²¼æ–‡..." quotePlaceholder: "引用æ¤è²¼æ–‡..." channelPlaceholder: "ç™¼ä½ˆåˆ°é »é“" @@ -3117,3 +3122,50 @@ _clip: tip: "æ‘˜éŒ„æ˜¯ä¸€é …å¯ä»¥ç”¨ä¾†æ•´ç†è²¼æ–‡çš„功能。" _userLists: tip: "您å¯ä»¥å»ºç«‹åŒ…å«ä»»æ„使用者的清單。建立後的清單å¯ä»¥ä½œç‚ºæ™‚間軸顯示。\n" +watermark: "浮水å°" +defaultPreset: "é è¨å€¼" +_watermarkEditor: + tip: "å¯ä»¥åœ¨åœ–片ä¸ä»¥æµ®æ°´å°åŠ ä¸Šå‡ºè™•ç‰è³‡è¨Šã€‚" + quitWithoutSaveConfirm: "ä¸å„²å˜å°±é€€å‡ºå—Žï¼Ÿ" + driveFileTypeWarn: "䏿”¯æ´æ¤æª”案" + driveFileTypeWarnDescription: "è«‹é¸æ“‡åœ–片檔案" + title: "編輯浮水å°" + cover: "覆蓋整體" + repeat: "佈局" + opacity: "逿˜Žåº¦" + scale: "大å°" + text: "æ–‡å—" + position: "ä½ç½®" + type: "類型" + image: "圖片" + advanced: "進階" + stripe: "æ¢ç´‹" + stripeWidth: "ç·šæ¢å¯¬åº¦" + stripeFrequency: "ç·šæ¢æ•¸é‡" + angle: "角度" + polkadot: "æ³¢å¡åœ“點" + checker: "æ£‹ç›¤æ ¼" + polkadotMainDotOpacity: "主圓點的ä¸é€æ˜Žåº¦" + polkadotMainDotRadius: "主圓點的尺寸" + polkadotSubDotOpacity: "å圓點的ä¸é€æ˜Žåº¦" + polkadotSubDotRadius: "å圓點的尺寸" + polkadotSubDotDivisions: "å圓點的數é‡" +_imageEffector: + title: "特效" + addEffect: "新增特效" + discardChangesConfirm: "æ¨æ£„更改並退出嗎?" + _fxs: + chromaticAberration: "色差" + glitch: "異常雜訊效果" + mirror: "é¡åƒ" + invert: "å轉色彩" + grayscale: "黑白" + colorAdjust: "è‰²å½©æ ¡æ£" + colorClamp: "壓縮色彩" + colorClampAdvanced: "壓縮色彩(進階)" + distort: "變形" + threshold: "閾值" + zoomLines: "速度線" + stripe: "æ¢ç´‹" + polkadot: "æ³¢å¡åœ“點" + checker: "æ£‹ç›¤æ ¼" diff --git a/package.json b/package.json index 5c191a9e60..d27c8ee0d6 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "misskey", - "version": "2025.6.0", + "version": "2025.6.1", "codename": "nasubi", "repository": { "type": "git", "url": "https://github.com/misskey-dev/misskey.git" }, - "packageManager": "pnpm@10.11.0", + "packageManager": "pnpm@10.12.1", "workspaces": [ "packages/frontend-shared", "packages/frontend", @@ -53,28 +53,28 @@ }, "dependencies": { "cssnano": "7.0.7", - "esbuild": "0.25.4", - "execa": "9.5.3", + "esbuild": "0.25.5", + "execa": "9.6.0", "fast-glob": "3.3.3", "glob": "11.0.2", "ignore-walk": "7.0.0", "js-yaml": "4.1.0", - "postcss": "8.5.3", + "postcss": "8.5.4", "tar": "7.4.3", - "terser": "5.39.2", + "terser": "5.42.0", "typescript": "5.8.3" }, "devDependencies": { "@misskey-dev/eslint-plugin": "2.1.0", - "@types/node": "22.15.21", - "@typescript-eslint/eslint-plugin": "8.32.1", - "@typescript-eslint/parser": "8.32.1", + "@types/node": "22.15.31", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", "cross-env": "7.0.3", - "cypress": "14.4.0", - "eslint": "9.27.0", - "globals": "16.1.0", + "cypress": "14.4.1", + "eslint": "9.28.0", + "globals": "16.2.0", "ncp": "2.0.0", - "pnpm": "10.11.0", + "pnpm": "10.12.1", "start-server-and-test": "2.0.12" }, "optionalDependencies": { diff --git a/packages/backend/package.json b/packages/backend/package.json index 157b6ca6f3..2173ce71a5 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -37,17 +37,17 @@ }, "optionalDependencies": { "@swc/core-android-arm64": "1.3.11", - "@swc/core-darwin-arm64": "1.11.29", - "@swc/core-darwin-x64": "1.11.29", + "@swc/core-darwin-arm64": "1.12.0", + "@swc/core-darwin-x64": "1.12.0", "@swc/core-freebsd-x64": "1.3.11", - "@swc/core-linux-arm-gnueabihf": "1.11.29", - "@swc/core-linux-arm64-gnu": "1.11.29", - "@swc/core-linux-arm64-musl": "1.11.29", - "@swc/core-linux-x64-gnu": "1.11.29", - "@swc/core-linux-x64-musl": "1.11.29", - "@swc/core-win32-arm64-msvc": "1.11.29", - "@swc/core-win32-ia32-msvc": "1.11.29", - "@swc/core-win32-x64-msvc": "1.11.29", + "@swc/core-linux-arm-gnueabihf": "1.12.0", + "@swc/core-linux-arm64-gnu": "1.12.0", + "@swc/core-linux-arm64-musl": "1.12.0", + "@swc/core-linux-x64-gnu": "1.12.0", + "@swc/core-linux-x64-musl": "1.12.0", + "@swc/core-win32-arm64-msvc": "1.12.0", + "@swc/core-win32-ia32-msvc": "1.12.0", + "@swc/core-win32-x64-msvc": "1.12.0", "@tensorflow/tfjs": "4.22.0", "@tensorflow/tfjs-node": "4.22.0", "bufferutil": "4.0.9", @@ -67,8 +67,8 @@ "utf-8-validate": "6.0.5" }, "dependencies": { - "@aws-sdk/client-s3": "3.817.0", - "@aws-sdk/lib-storage": "3.817.0", + "@aws-sdk/client-s3": "3.826.0", + "@aws-sdk/lib-storage": "3.826.0", "@discordapp/twemoji": "15.1.0", "@fastify/accepts": "5.0.2", "@fastify/cookie": "11.0.2", @@ -80,10 +80,10 @@ "@fastify/view": "10.0.2", "@misskey-dev/sharp-read-bmp": "1.2.0", "@misskey-dev/summaly": "5.2.1", - "@napi-rs/canvas": "0.1.70", - "@nestjs/common": "11.1.2", - "@nestjs/core": "11.1.2", - "@nestjs/testing": "11.1.2", + "@napi-rs/canvas": "0.1.71", + "@nestjs/common": "11.1.3", + "@nestjs/core": "11.1.3", + "@nestjs/testing": "11.1.3", "@peertube/http-signature": "1.7.0", "@sentry/node": "8.55.0", "@sentry/profiling-node": "8.55.0", @@ -91,7 +91,7 @@ "@sinonjs/fake-timers": "11.3.1", "@smithy/node-http-handler": "2.5.0", "@swc/cli": "0.7.7", - "@swc/core": "1.11.29", + "@swc/core": "1.12.0", "@twemoji/parser": "15.1.1", "@types/redis-info": "3.0.3", "accepts": "1.3.8", @@ -101,7 +101,7 @@ "bcryptjs": "2.4.3", "blurhash": "2.0.5", "body-parser": "1.20.3", - "bullmq": "5.53.0", + "bullmq": "5.53.2", "cacheable-lookup": "7.0.0", "cbor": "9.0.2", "chalk": "5.4.1", @@ -117,7 +117,7 @@ "feed": "4.2.2", "file-type": "19.6.0", "fluent-ffmpeg": "2.1.3", - "form-data": "4.0.2", + "form-data": "4.0.3", "got": "14.4.7", "happy-dom": "16.8.1", "hpagent": "1.2.0", @@ -133,9 +133,9 @@ "jsonld": "8.3.3", "jsrsasign": "11.1.0", "juice": "11.0.1", - "meilisearch": "0.50.0", + "meilisearch": "0.51.0", "mfm-js": "0.24.0", - "microformats-parser": "2.0.2", + "microformats-parser": "2.0.3", "mime-types": "2.1.35", "misskey-js": "workspace:*", "misskey-reversi": "workspace:*", @@ -188,16 +188,16 @@ }, "devDependencies": { "@jest/globals": "29.7.0", - "@nestjs/platform-express": "10.4.18", - "@sentry/vue": "9.22.0", + "@nestjs/platform-express": "10.4.19", + "@sentry/vue": "9.28.0", "@simplewebauthn/types": "12.0.0", "@swc/jest": "0.2.38", "@types/accepts": "1.3.7", "@types/archiver": "6.0.3", "@types/bcryptjs": "2.4.6", - "@types/body-parser": "1.19.5", + "@types/body-parser": "1.19.6", "@types/color-convert": "2.0.4", - "@types/content-disposition": "0.5.8", + "@types/content-disposition": "0.5.9", "@types/fluent-ffmpeg": "2.1.27", "@types/htmlescape": "1.1.3", "@types/http-link-header": "1.0.7", @@ -208,12 +208,12 @@ "@types/jsrsasign": "10.5.15", "@types/mime-types": "2.1.4", "@types/ms": "0.7.34", - "@types/node": "22.15.21", + "@types/node": "22.15.31", "@types/nodemailer": "6.4.17", "@types/oauth": "0.9.6", "@types/oauth2orize": "1.11.5", "@types/oauth2orize-pkce": "0.1.2", - "@types/pg": "8.15.2", + "@types/pg": "8.15.4", "@types/pug": "2.0.10", "@types/qrcode": "1.5.5", "@types/random-seed": "0.3.5", @@ -229,8 +229,8 @@ "@types/vary": "1.1.3", "@types/web-push": "3.6.4", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "8.32.1", - "@typescript-eslint/parser": "8.32.1", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", "aws-sdk-client-mock": "4.1.0", "cross-env": "7.0.3", "eslint-plugin-import": "2.31.0", diff --git a/packages/backend/src/core/ChatService.ts b/packages/backend/src/core/ChatService.ts index 4e81847a52..5cd336a097 100644 --- a/packages/backend/src/core/ChatService.ts +++ b/packages/backend/src/core/ChatService.ts @@ -332,6 +332,16 @@ export class ChatService { } @bindThis + public async readAllChatMessages( + readerId: MiUser['id'], + ): Promise<void> { + const redisPipeline = this.redisClient.pipeline(); + // TODO: newUserChatMessageExists ã¨ã‹ newRoomChatMessageExists も消ã—ãŸã„(ã‘ã©ã‚ーã®åˆ—挙ãŒå¿…è¦ã«ãªã£ã¦é¢å€’) + redisPipeline.del(`newChatMessagesExists:${readerId}`); + await redisPipeline.exec(); + } + + @bindThis public findMessageById(messageId: MiChatMessage['id']) { return this.chatMessagesRepository.findOneBy({ id: messageId }); } diff --git a/packages/backend/src/core/DriveService.ts b/packages/backend/src/core/DriveService.ts index 1945c58e5b..567bad2a2d 100644 --- a/packages/backend/src/core/DriveService.ts +++ b/packages/backend/src/core/DriveService.ts @@ -803,14 +803,14 @@ export class DriveService { await Promise.all(promises); } - this.deletePostProcess(file, isExpired, deleter); + await this.deletePostProcess(file, isExpired, deleter); } @bindThis private async deletePostProcess(file: MiDriveFile, isExpired = false, deleter?: MiUser) { // リモートファイル期é™åˆ‡ã‚Œå‰Šé™¤å¾Œã¯ç›´ãƒªãƒ³ã‚¯ã«ã™ã‚‹ if (isExpired && file.userHost !== null && file.uri != null) { - this.driveFilesRepository.update(file.id, { + await this.driveFilesRepository.update(file.id, { isLink: true, url: file.uri, thumbnailUrl: null, @@ -822,7 +822,7 @@ export class DriveService { webpublicAccessKey: 'webpublic-' + randomUUID(), }); } else { - this.driveFilesRepository.delete(file.id); + await this.driveFilesRepository.delete(file.id); } this.driveChart.update(file, false); diff --git a/packages/backend/src/server/ActivityPubServerService.ts b/packages/backend/src/server/ActivityPubServerService.ts index f7b22c44c4..a5fb5b82e3 100644 --- a/packages/backend/src/server/ActivityPubServerService.ts +++ b/packages/backend/src/server/ActivityPubServerService.ts @@ -482,9 +482,19 @@ export class ActivityPubServerService { return true; }, dbFallback: async (untilId, sinceId, limit) => { - return await this.getUserNotesFromDb(sinceId, untilId, limit, user.id); + return await this.getUserNotesFromDb({ + untilId, + sinceId, + limit, + userId: user.id, + }); }, - }) : await this.getUserNotesFromDb(sinceId ?? null, untilId ?? null, limit, user.id); + }) : await this.getUserNotesFromDb({ + untilId: untilId ?? null, + sinceId: sinceId ?? null, + limit, + userId: user.id, + }); if (sinceId) notes.reverse(); @@ -523,16 +533,21 @@ export class ActivityPubServerService { } @bindThis - private async getUserNotesFromDb(untilId: string | null, sinceId: string | null, limit: number, userId: MiUser['id']) { - return await this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), sinceId, untilId) - .andWhere('note.userId = :userId', { userId }) + private async getUserNotesFromDb(ps: { + untilId: string | null, + sinceId: string | null, + limit: number, + userId: MiUser['id'], + }) { + return await this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) + .andWhere('note.userId = :userId', { userId: ps.userId }) .andWhere(new Brackets(qb => { qb .where('note.visibility = \'public\'') .orWhere('note.visibility = \'home\''); })) .andWhere('note.localOnly = FALSE') - .limit(limit) + .limit(ps.limit) .getMany(); } diff --git a/packages/backend/src/server/api/endpoint-list.ts b/packages/backend/src/server/api/endpoint-list.ts index 1fdd000fdf..092d296bd3 100644 --- a/packages/backend/src/server/api/endpoint-list.ts +++ b/packages/backend/src/server/api/endpoint-list.ts @@ -428,4 +428,5 @@ export * as 'chat/rooms/invitations/ignore' from './endpoints/chat/rooms/invitat export * as 'chat/rooms/invitations/inbox' from './endpoints/chat/rooms/invitations/inbox.js'; export * as 'chat/rooms/invitations/outbox' from './endpoints/chat/rooms/invitations/outbox.js'; export * as 'chat/history' from './endpoints/chat/history.js'; +export * as 'chat/read-all' from './endpoints/chat/read-all.js'; export * as 'v2/admin/emoji/list' from './endpoints/v2/admin/emoji/list.js'; diff --git a/packages/backend/src/server/api/endpoints/chat/read-all.ts b/packages/backend/src/server/api/endpoints/chat/read-all.ts new file mode 100644 index 0000000000..2ed9497eef --- /dev/null +++ b/packages/backend/src/server/api/endpoints/chat/read-all.ts @@ -0,0 +1,38 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { Inject, Injectable } from '@nestjs/common'; +import { Endpoint } from '@/server/api/endpoint-base.js'; +import { DI } from '@/di-symbols.js'; +import { ChatService } from '@/core/ChatService.js'; +import { ApiError } from '@/server/api/error.js'; + +export const meta = { + tags: ['chat'], + + requireCredential: true, + + kind: 'write:chat', + + errors: { + }, +} as const; + +export const paramDef = { + type: 'object', + properties: { + }, +} as const; + +@Injectable() +export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export + constructor( + private chatService: ChatService, + ) { + super(meta, paramDef, async (ps, me) => { + await this.chatService.readAllChatMessages(me.id); + }); + } +} diff --git a/packages/backend/test-federation/test/user.test.ts b/packages/backend/test-federation/test/user.test.ts index ee69e857bc..ebbe9ff5ba 100644 --- a/packages/backend/test-federation/test/user.test.ts +++ b/packages/backend/test-federation/test/user.test.ts @@ -380,9 +380,7 @@ describe('User', () => { strictEqual(followers.length, 1); // followed by Bob await alice.client.request('i/delete-account', { password: alice.password }); - // NOTE: user deletion query is slow - // FIXME: ensure user is removed successfully - await sleep(10000); + await sleep(); const following = await bob.client.request('users/following', { userId: bob.id }); strictEqual(following.length, 0); // no following relation @@ -480,9 +478,7 @@ describe('User', () => { strictEqual(followers.length, 1); // followed by Bob await aAdmin.client.request('admin/suspend-user', { userId: alice.id }); - // NOTE: user deletion query is slow - // FIXME: ensure user is removed successfully - await sleep(10000); + await sleep(); const following = await bob.client.request('users/following', { userId: bob.id }); strictEqual(following.length, 0); // no following relation diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index f2489f1b80..5e73c26daf 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -26,9 +26,9 @@ "mfm-js": "0.24.0", "misskey-js": "workspace:*", "punycode.js": "2.3.1", - "rollup": "4.41.1", - "sass": "1.89.0", - "shiki": "3.4.2", + "rollup": "4.42.0", + "sass": "1.89.2", + "shiki": "3.6.0", "tinycolor2": "1.6.0", "tsc-alias": "1.8.16", "tsconfig-paths": "4.2.0", @@ -39,27 +39,27 @@ }, "devDependencies": { "@misskey-dev/summaly": "5.2.1", - "@tabler/icons-webfont": "3.33.0", + "@tabler/icons-webfont": "3.34.0", "@testing-library/vue": "8.1.0", - "@types/estree": "1.0.7", + "@types/estree": "1.0.8", "@types/micromatch": "4.0.9", - "@types/node": "22.15.28", + "@types/node": "22.15.31", "@types/punycode.js": "npm:@types/punycode@2.1.4", "@types/tinycolor2": "1.4.6", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "8.33.0", - "@typescript-eslint/parser": "8.33.0", - "@vitest/coverage-v8": "3.1.4", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", + "@vitest/coverage-v8": "3.2.3", "@vue/runtime-core": "3.5.16", - "acorn": "8.14.1", + "acorn": "8.15.0", "cross-env": "7.0.3", "eslint-plugin-import": "2.31.0", - "eslint-plugin-vue": "10.1.0", + "eslint-plugin-vue": "10.2.0", "fast-glob": "3.3.3", - "happy-dom": "17.5.6", + "happy-dom": "17.6.3", "intersection-observer": "0.12.2", "micromatch": "4.0.8", - "msw": "2.8.6", + "msw": "2.10.2", "nodemon": "3.1.10", "prettier": "3.5.3", "start-server-and-test": "2.0.12", diff --git a/packages/frontend-shared/js/emojilist.ts b/packages/frontend-shared/js/emojilist.ts index f8bbf39177..09bea06719 100644 --- a/packages/frontend-shared/js/emojilist.ts +++ b/packages/frontend-shared/js/emojilist.ts @@ -48,6 +48,10 @@ export function getUnicodeEmoji(char: string): UnicodeEmojiDef | string { ?? char; } +export function isSupportedEmoji(char: string): boolean { + return unicodeEmojisMap.has(colorizeEmoji(char)) || unicodeEmojisMap.has(char); +} + export function getEmojiName(char: string): string { // Colorize it because emojilist.json assumes that const idx = _indexByChar.get(colorizeEmoji(char)) ?? _indexByChar.get(char); diff --git a/packages/frontend-shared/package.json b/packages/frontend-shared/package.json index 63aef63beb..bd9bbbe7b6 100644 --- a/packages/frontend-shared/package.json +++ b/packages/frontend-shared/package.json @@ -21,11 +21,11 @@ "lint": "pnpm typecheck && pnpm eslint" }, "devDependencies": { - "@types/node": "22.15.28", - "@typescript-eslint/eslint-plugin": "8.33.0", - "@typescript-eslint/parser": "8.33.0", + "@types/node": "22.15.31", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", "esbuild": "0.25.5", - "eslint-plugin-vue": "10.1.0", + "eslint-plugin-vue": "10.2.0", "nodemon": "3.1.10", "typescript": "5.8.3", "vue-eslint-parser": "10.1.3" diff --git a/packages/frontend/assets/sample/2-3.jpg b/packages/frontend/assets/sample/2-3.jpg Binary files differnew file mode 100644 index 0000000000..ee9bff6527 --- /dev/null +++ b/packages/frontend/assets/sample/2-3.jpg diff --git a/packages/frontend/assets/sample/3-2.jpg b/packages/frontend/assets/sample/3-2.jpg Binary files differnew file mode 100644 index 0000000000..400de1649d --- /dev/null +++ b/packages/frontend/assets/sample/3-2.jpg diff --git a/packages/frontend/package.json b/packages/frontend/package.json index b2b807dbc7..0dbd94362b 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -24,7 +24,7 @@ "@rollup/plugin-json": "6.1.0", "@rollup/plugin-replace": "6.0.2", "@rollup/pluginutils": "5.1.4", - "@sentry/vue": "9.24.0", + "@sentry/vue": "9.27.0", "@syuilo/aiscript": "0.19.0", "@twemoji/parser": "15.1.1", "@vitejs/plugin-vue": "5.2.4", @@ -60,10 +60,10 @@ "misskey-reversi": "workspace:*", "photoswipe": "5.4.4", "punycode.js": "2.3.1", - "rollup": "4.41.1", + "rollup": "4.42.0", "sanitize-html": "2.17.0", - "sass": "1.89.0", - "shiki": "3.4.2", + "sass": "1.89.2", + "shiki": "3.6.0", "strict-event-emitter-types": "2.0.0", "textarea-caret": "3.1.0", "three": "0.177.0", @@ -72,7 +72,6 @@ "tsc-alias": "1.8.16", "tsconfig-paths": "4.2.0", "typescript": "5.8.3", - "uuid": "11.1.0", "v-code-diff": "1.13.1", "vite": "6.3.5", "vue": "3.5.16", @@ -99,36 +98,36 @@ "@storybook/types": "8.6.14", "@storybook/vue3": "8.6.14", "@storybook/vue3-vite": "8.6.14", - "@tabler/icons-webfont": "3.33.0", + "@tabler/icons-webfont": "3.34.0", "@testing-library/vue": "8.1.0", "@types/canvas-confetti": "1.9.0", - "@types/estree": "1.0.7", + "@types/estree": "1.0.8", "@types/matter-js": "0.19.8", "@types/micromatch": "4.0.9", - "@types/node": "22.15.28", + "@types/node": "22.15.31", "@types/punycode.js": "npm:@types/punycode@2.1.4", "@types/sanitize-html": "2.16.0", "@types/seedrandom": "3.0.8", "@types/throttle-debounce": "5.0.2", "@types/tinycolor2": "1.4.6", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "8.33.0", - "@typescript-eslint/parser": "8.33.0", - "@vitest/coverage-v8": "3.1.4", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", + "@vitest/coverage-v8": "3.2.3", "@vue/compiler-core": "3.5.16", "@vue/runtime-core": "3.5.16", - "acorn": "8.14.1", + "acorn": "8.15.0", "cross-env": "7.0.3", - "cypress": "14.4.0", + "cypress": "14.4.1", "eslint-plugin-import": "2.31.0", - "eslint-plugin-vue": "10.1.0", + "eslint-plugin-vue": "10.2.0", "fast-glob": "3.3.3", - "happy-dom": "17.5.6", + "happy-dom": "17.6.3", "intersection-observer": "0.12.2", "micromatch": "4.0.8", "minimatch": "10.0.1", - "msw": "2.8.6", - "msw-storybook-addon": "2.0.4", + "msw": "2.10.2", + "msw-storybook-addon": "2.0.5", "nodemon": "3.1.10", "prettier": "3.5.3", "react": "19.1.0", @@ -138,7 +137,7 @@ "storybook": "8.6.14", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "vite-plugin-turbosnap": "1.0.3", - "vitest": "3.1.4", + "vitest": "3.2.3", "vitest-fetch-mock": "0.4.5", "vue-component-type-helpers": "2.2.10", "vue-eslint-parser": "10.1.3", diff --git a/packages/frontend/src/aiscript/ui.ts b/packages/frontend/src/aiscript/ui.ts index 46e193f7c1..a27ece512e 100644 --- a/packages/frontend/src/aiscript/ui.ts +++ b/packages/frontend/src/aiscript/ui.ts @@ -4,7 +4,7 @@ */ import { utils, values } from '@syuilo/aiscript'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import { ref } from 'vue'; import type { Ref } from 'vue'; import * as Misskey from 'misskey-js'; @@ -543,7 +543,7 @@ export function registerAsUiLib(components: Ref<AsUiComponent>[], done: (root: R call: C, ) { if (id) utils.assertString(id); - const _id = id?.value ?? uuid(); + const _id = id?.value ?? genId(); const component = ref({ ...getOptions(def, call), type, diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue index 4daba779d4..9d89c2f846 100644 --- a/packages/frontend/src/components/MkDrive.vue +++ b/packages/frontend/src/components/MkDrive.vue @@ -185,7 +185,7 @@ const isRootSelected = ref(false); watch(selectedFiles, () => { emit('changeSelectedFiles', selectedFiles.value); -}); +}, { deep: true }); watch([selectedFolders, isRootSelected], () => { emit('changeSelectedFolders', isRootSelected.value ? [null, ...selectedFolders.value] : selectedFolders.value); diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index d4367f6ee8..86f019c95c 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -64,6 +64,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkCustomEmoji v-if="!emoji.hasOwnProperty('char')" class="emoji" :name="getKey(emoji)" :normal="true"/> <MkEmoji v-else class="emoji" :emoji="getKey(emoji)" :normal="true"/> </button> + <button v-tooltip="i18n.ts.settings" class="_button config" @click="settings"><i class="ti ti-settings"></i></button> </div> </section> @@ -139,6 +140,9 @@ import { customEmojiCategories, customEmojis, customEmojisMap } from '@/custom-e import { $i } from '@/i.js'; import { checkReactionPermissions } from '@/utility/check-reaction-permissions.js'; import { prefer } from '@/preferences.js'; +import { useRouter } from '@/router.js'; + +const router = useRouter(); const props = withDefaults(defineProps<{ showPinned?: boolean; @@ -489,6 +493,11 @@ function done(query?: string): boolean | void { } } +function settings() { + emit('esc'); + router.push('settings/emoji-palette'); +} + onMounted(() => { focus(); }); @@ -720,6 +729,15 @@ defineExpose({ position: relative; padding: $pad; + > .config { + position: relative; + padding: 0 3px; + width: var(--eachSize); + height: var(--eachSize); + contain: strict; + opacity: 0.5; + } + > .item { position: relative; padding: 0 3px; diff --git a/packages/frontend/src/components/MkFileListForAdmin.vue b/packages/frontend/src/components/MkFileListForAdmin.vue index d5d32ebb28..3b495c2807 100644 --- a/packages/frontend/src/components/MkFileListForAdmin.vue +++ b/packages/frontend/src/components/MkFileListForAdmin.vue @@ -5,33 +5,35 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <div> - <MkPagination v-slot="{items}" :pagination="pagination" class="urempief" :class="{ grid: viewMode === 'grid' }"> - <MkA - v-for="file in (items as Misskey.entities.DriveFile[])" - :key="file.id" - v-tooltip.mfm="`${file.type}\n${bytes(file.size)}\n${dateString(file.createdAt)}\nby ${file.user ? '@' + Misskey.acct.toString(file.user) : 'system'}`" - :to="`/admin/file/${file.id}`" - class="file _button" - > - <div v-if="file.isSensitive" class="sensitive-label">{{ i18n.ts.sensitive }}</div> - <MkDriveFileThumbnail class="thumbnail" :file="file" fit="contain" :highlightWhenSensitive="true"/> - <div v-if="viewMode === 'list'" class="body"> - <div> - <small style="opacity: 0.7;">{{ file.name }}</small> + <MkPagination v-slot="{ items }" :pagination="pagination"> + <div :class="[$style.fileList, { [$style.grid]: viewMode === 'grid', [$style.list]: viewMode === 'list', '_gaps_s': viewMode === 'list' }]"> + <MkA + v-for="file in items" + :key="file.id" + v-tooltip.mfm="`${file.type}\n${bytes(file.size)}\n${dateString(file.createdAt)}\nby ${file.user ? '@' + Misskey.acct.toString(file.user) : 'system'}`" + :to="`/admin/file/${file.id}`" + :class="[$style.file, '_button']" + > + <div v-if="file.isSensitive" :class="$style.sensitiveLabel">{{ i18n.ts.sensitive }}</div> + <MkDriveFileThumbnail :class="$style.thumbnail" :file="file" fit="contain" :highlightWhenSensitive="true"/> + <div v-if="viewMode === 'list'" :class="$style.body"> + <div> + <small style="opacity: 0.7;">{{ file.name }}</small> + </div> + <div> + <MkAcct v-if="file.user" :user="file.user"/> + <div v-else>{{ i18n.ts.system }}</div> + </div> + <div> + <span style="margin-right: 1em;">{{ file.type }}</span> + <span>{{ bytes(file.size) }}</span> + </div> + <div> + <span>{{ i18n.ts.registeredDate }}: <MkTime :time="file.createdAt" mode="detail"/></span> + </div> </div> - <div> - <MkAcct v-if="file.user" :user="file.user"/> - <div v-else>{{ i18n.ts.system }}</div> - </div> - <div> - <span style="margin-right: 1em;">{{ file.type }}</span> - <span>{{ bytes(file.size) }}</span> - </div> - <div> - <span>{{ i18n.ts.registeredDate }}: <MkTime :time="file.createdAt" mode="detail"/></span> - </div> - </div> - </MkA> + </MkA> + </div> </MkPagination> </div> </template> @@ -43,76 +45,76 @@ import MkDriveFileThumbnail from '@/components/MkDriveFileThumbnail.vue'; import bytes from '@/filters/bytes.js'; import { i18n } from '@/i18n.js'; import { dateString } from '@/filters/date.js'; +import type { PagingCtx } from '@/composables/use-pagination.js'; -const props = defineProps<{ - pagination: any; +defineProps<{ + pagination: PagingCtx<'admin/drive/files'>; viewMode: 'grid' | 'list'; }>(); </script> -<style lang="scss" scoped> +<style lang="scss" module> @keyframes sensitive-blink { 0% { opacity: 1; } 50% { opacity: 0; } } -.urempief { - &.list { - > .file { - display: flex; - width: 100%; - box-sizing: border-box; - text-align: left; - align-items: center; +.list { + > .file { + display: flex; + width: 100%; + height: auto; + box-sizing: border-box; + text-align: left; + align-items: center; + } - &:hover { - color: var(--MI_THEME-accent); - } + > .file:hover { + color: var(--MI_THEME-accent); + } - > .thumbnail { - width: 128px; - height: 128px; - } + > .file > .thumbnail { + width: 128px; + height: 128px; + } - > .body { - margin-left: 0.3em; - padding: 8px; - flex: 1; + > .file > .body { + margin-left: 0.3em; + padding: 8px; + flex: 1; - @media (max-width: 500px) { - font-size: 14px; - } - } + @media (max-width: 500px) { + font-size: 14px; } } +} - &.grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); - grid-gap: 12px; - - > .file { - position: relative; - aspect-ratio: 1; +.grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); + grid-gap: 12px; - > .thumbnail { - width: 100%; - height: 100%; - } + > .file { + position: relative; + aspect-ratio: 1; + } - > .sensitive-label { - position: absolute; - z-index: 10; - top: 8px; - left: 8px; - padding: 2px 4px; - background: #ff0000bf; - color: #fff; - border-radius: 4px; - font-size: 85%; - animation: sensitive-blink 1s infinite; - } - } + .thumbnail { + width: 100%; + height: 100%; } } + +.sensitiveLabel { + position: absolute; + z-index: 10; + top: 8px; + left: 8px; + padding: 2px 4px; + background: #ff0000bf; + color: #fff; + border-radius: 4px; + font-size: 85%; + animation: sensitive-blink 1s infinite; +} </style> diff --git a/packages/frontend/src/components/MkFormDialog.file.vue b/packages/frontend/src/components/MkFormDialog.file.vue index a11075c342..182ff3ccf5 100644 --- a/packages/frontend/src/components/MkFormDialog.file.vue +++ b/packages/frontend/src/components/MkFormDialog.file.vue @@ -51,7 +51,10 @@ if (props.fileId) { } function selectButton(ev: MouseEvent) { - selectFile(ev.currentTarget ?? ev.target).then(async (file) => { + selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }).then(async (file) => { if (!file) return; if (props.validate && !await props.validate(file)) return; diff --git a/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue b/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue new file mode 100644 index 0000000000..d8466fa7ca --- /dev/null +++ b/packages/frontend/src/components/MkImageEffectorDialog.Layer.vue @@ -0,0 +1,121 @@ +<!-- +SPDX-FileCopyrightText: syuilo and misskey-project +SPDX-License-Identifier: AGPL-3.0-only +--> + +<template> +<MkFolder :defaultOpen="true" :canPage="false"> + <template #label>{{ fx.name }}</template> + <template #footer> + <div class="_buttons"> + <MkButton iconOnly @click="emit('del')"><i class="ti ti-trash"></i></MkButton> + <MkButton iconOnly @click="emit('swapUp')"><i class="ti ti-arrow-up"></i></MkButton> + <MkButton iconOnly @click="emit('swapDown')"><i class="ti ti-arrow-down"></i></MkButton> + </div> + </template> + + <div :class="$style.root" class="_gaps"> + <div v-for="[k, v] in Object.entries(fx.params)" :key="k"> + <MkSwitch + v-if="v.type === 'boolean'" + v-model="layer.params[k]" + > + <template #label>{{ fx.params[k].label ?? k }}</template> + </MkSwitch> + <MkRange + v-else-if="v.type === 'number'" + v-model="layer.params[k]" + continuousUpdate + :min="v.min" + :max="v.max" + :step="v.step" + :textConverter="fx.params[k].toViewValue" + @thumbDoubleClicked="() => { + if (fx.params[k].default != null) { + layer.params[k] = fx.params[k].default; + } else { + layer.params[k] = v.min; + } + }" + > + <template #label>{{ fx.params[k].label ?? k }}</template> + </MkRange> + <MkRadios + v-else-if="v.type === 'number:enum'" + v-model="layer.params[k]" + > + <template #label>{{ fx.params[k].label ?? k }}</template> + <option v-for="item in v.enum" :value="item.value">{{ item.label }}</option> + </MkRadios> + <div v-else-if="v.type === 'seed'"> + <MkRange + v-model="layer.params[k]" + continuousUpdate + type="number" + :min="0" + :max="10000" + :step="1" + > + <template #label>{{ fx.params[k].label ?? k }}</template> + </MkRange> + </div> + <MkInput + v-else-if="v.type === 'color'" + :modelValue="getHex(layer.params[k])" + type="color" + @update:modelValue="v => { const c = getRgb(v); if (c != null) layer.params[k] = c; }" + > + <template #label>{{ fx.params[k].label ?? k }}</template> + </MkInput> + </div> + </div> +</MkFolder> +</template> + +<script setup lang="ts"> +import type { ImageEffectorLayer } from '@/utility/image-effector/ImageEffector.js'; +import { i18n } from '@/i18n.js'; +import MkFolder from '@/components/MkFolder.vue'; +import MkButton from '@/components/MkButton.vue'; +import MkInput from '@/components/MkInput.vue'; +import MkRadios from '@/components/MkRadios.vue'; +import MkSwitch from '@/components/MkSwitch.vue'; +import MkRange from '@/components/MkRange.vue'; +import { FXS } from '@/utility/image-effector/fxs.js'; + +const layer = defineModel<ImageEffectorLayer>('layer', { required: true }); +const fx = FXS.find((fx) => fx.id === layer.value.fxId); +if (fx == null) { + throw new Error(`Unrecognized effect: ${layer.value.fxId}`); +} + +const emit = defineEmits<{ + (e: 'del'): void; + (e: 'swapUp'): void; + (e: 'swapDown'): void; +}>(); + +function getHex(c: [number, number, number]) { + return `#${c.map(x => (x * 255).toString(16).padStart(2, '0')).join('')}`; +} + +function getRgb(hex: string | number): [number, number, number] | null { + if ( + typeof hex === 'number' || + typeof hex !== 'string' || + !/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(hex) + ) { + return null; + } + + const m = hex.slice(1).match(/[0-9a-fA-F]{2}/g); + if (m == null) return [0, 0, 0]; + return m.map(x => parseInt(x, 16) / 255) as [number, number, number]; +} +</script> + +<style module> +.root { + +} +</style> diff --git a/packages/frontend/src/components/MkImageEffectorDialog.vue b/packages/frontend/src/components/MkImageEffectorDialog.vue new file mode 100644 index 0000000000..2c6185fd33 --- /dev/null +++ b/packages/frontend/src/components/MkImageEffectorDialog.vue @@ -0,0 +1,303 @@ +<!-- +SPDX-FileCopyrightText: syuilo and misskey-project +SPDX-License-Identifier: AGPL-3.0-only +--> + +<template> +<MkModalWindow + ref="dialog" + :width="1000" + :height="600" + :scroll="false" + :withOkButton="true" + @close="cancel()" + @ok="save()" + @closed="emit('closed')" +> + <template #header><i class="ti ti-sparkles"></i> {{ i18n.ts._imageEffector.title }}</template> + + <div :class="$style.root"> + <div :class="$style.container"> + <div :class="$style.preview"> + <canvas ref="canvasEl" :class="$style.previewCanvas"></canvas> + <div :class="$style.previewContainer"> + <div class="_acrylic" :class="$style.previewTitle">{{ i18n.ts.preview }}</div> + <div class="_acrylic" :class="$style.previewControls"> + <button class="_button" :class="[$style.previewControlsButton, !enabled ? $style.active : null]" @click="enabled = false">Before</button> + <button class="_button" :class="[$style.previewControlsButton, enabled ? $style.active : null]" @click="enabled = true">After</button> + </div> + </div> + </div> + <div :class="$style.controls"> + <div class="_spacer _gaps"> + <XLayer + v-for="(layer, i) in layers" + :key="layer.id" + v-model:layer="layers[i]" + @del="onLayerDelete(layer)" + @swapUp="onLayerSwapUp(layer)" + @swapDown="onLayerSwapDown(layer)" + ></XLayer> + + <MkButton rounded primary style="margin: 0 auto;" @click="addEffect"><i class="ti ti-plus"></i> {{ i18n.ts._imageEffector.addEffect }}</MkButton> + </div> + </div> + </div> + </div> +</MkModalWindow> +</template> + +<script setup lang="ts"> +import { ref, useTemplateRef, watch, onMounted, onUnmounted, reactive, nextTick } from 'vue'; +import type { ImageEffectorLayer } from '@/utility/image-effector/ImageEffector.js'; +import { i18n } from '@/i18n.js'; +import { ImageEffector } from '@/utility/image-effector/ImageEffector.js'; +import MkModalWindow from '@/components/MkModalWindow.vue'; +import MkSelect from '@/components/MkSelect.vue'; +import MkButton from '@/components/MkButton.vue'; +import MkInput from '@/components/MkInput.vue'; +import XLayer from '@/components/MkImageEffectorDialog.Layer.vue'; +import * as os from '@/os.js'; +import { deepClone } from '@/utility/clone.js'; +import { FXS } from '@/utility/image-effector/fxs.js'; +import { genId } from '@/utility/id.js'; + +const props = defineProps<{ + image: File; +}>(); + +const emit = defineEmits<{ + (ev: 'ok', image: File): void; + (ev: 'cancel'): void; + (ev: 'closed'): void; +}>(); + +const dialog = useTemplateRef('dialog'); + +async function cancel() { + if (layers.length > 0) { + const { canceled } = await os.confirm({ + type: 'warning', + text: i18n.ts._imageEffector.discardChangesConfirm, + }); + if (canceled) return; + } + + emit('cancel'); + dialog.value?.close(); +} + +const layers = reactive<ImageEffectorLayer[]>([]); + +watch(layers, async () => { + if (renderer != null) { + renderer.setLayers(layers); + } +}, { deep: true }); + +function addEffect(ev: MouseEvent) { + os.popupMenu(FXS.map((fx) => ({ + text: fx.name, + action: () => { + layers.push({ + id: genId(), + fxId: fx.id, + params: Object.fromEntries(Object.entries(fx.params).map(([k, v]) => [k, v.default])), + }); + }, + })), ev.currentTarget ?? ev.target); +} + +function onLayerSwapUp(layer: ImageEffectorLayer) { + const index = layers.indexOf(layer); + if (index > 0) { + layers.splice(index, 1); + layers.splice(index - 1, 0, layer); + } +} + +function onLayerSwapDown(layer: ImageEffectorLayer) { + const index = layers.indexOf(layer); + if (index < layers.length - 1) { + layers.splice(index, 1); + layers.splice(index + 1, 0, layer); + } +} + +function onLayerDelete(layer: ImageEffectorLayer) { + const index = layers.indexOf(layer); + if (index !== -1) { + layers.splice(index, 1); + } +} + +const canvasEl = useTemplateRef('canvasEl'); + +let renderer: ImageEffector<typeof FXS> | null = null; +let imageBitmap: ImageBitmap | null = null; + +onMounted(async () => { + if (canvasEl.value == null) return; + + const closeWaiting = os.waiting(); + + await nextTick(); // waitingãŒãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れるã¾ã§å¾…㤠+ + imageBitmap = await window.createImageBitmap(props.image); + + const MAX_W = 1000; + const MAX_H = 1000; + let w = imageBitmap.width; + let h = imageBitmap.height; + + if (w > MAX_W || h > MAX_H) { + const scale = Math.min(MAX_W / w, MAX_H / h); + w *= scale; + h *= scale; + } + + renderer = new ImageEffector({ + canvas: canvasEl.value, + renderWidth: w, + renderHeight: h, + image: imageBitmap, + fxs: FXS, + }); + + await renderer.setLayers(layers); + + renderer.render(); + + closeWaiting(); +}); + +onUnmounted(() => { + if (renderer != null) { + renderer.destroy(); + renderer = null; + } + if (imageBitmap != null) { + imageBitmap.close(); + imageBitmap = null; + } +}); + +async function save() { + if (layers.length === 0 || renderer == null || imageBitmap == null || canvasEl.value == null) { + cancel(); + return; + } + + const closeWaiting = os.waiting(); + + await nextTick(); // waitingãŒãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れるã¾ã§å¾…㤠+ + renderer.changeResolution(imageBitmap.width, imageBitmap.height); // 本番レンダリングã®ãŸã‚ã‚ªãƒªã‚¸ãƒŠãƒ«ç”»è³ªã«æˆ»ã™ + renderer.render(); // toBlobã®ç›´å‰ã«ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã—ãªã„ã¨ä½•æ•…ã‹å£Šã‚Œã‚‹ + canvasEl.value.toBlob((blob) => { + emit('ok', new File([blob!], `image-${Date.now()}.png`, { type: 'image/png' })); + dialog.value?.close(); + closeWaiting(); + }, 'image/png'); +} + +const enabled = ref(true); +watch(enabled, () => { + if (renderer != null) { + if (enabled.value) { + renderer.setLayers(layers); + } else { + renderer.setLayers([]); + } + renderer.render(); + } +}); +</script> + +<style module> +.root { + container-type: inline-size; + height: 100%; +} + +.container { + height: 100%; + display: grid; + grid-template-columns: 1fr 400px; +} + +.preview { + position: relative; + background-color: var(--MI_THEME-bg); + background-size: auto auto; + background-image: repeating-linear-gradient(135deg, transparent, transparent 6px, var(--MI_THEME-panel) 6px, var(--MI_THEME-panel) 12px); +} + +.previewContainer { + display: flex; + flex-direction: column; + height: 100%; + user-select: none; + -webkit-user-drag: none; +} + +.previewTitle { + position: absolute; + z-index: 100; + top: 8px; + left: 8px; + padding: 6px 10px; + border-radius: 6px; + font-size: 85%; +} + +.previewControls { + position: absolute; + z-index: 100; + bottom: 8px; + right: 8px; + display: flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + border-radius: 6px; +} + +.previewControlsButton { + &.active { + color: var(--MI_THEME-accent); + } +} + +.previewSpinner { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + pointer-events: none; + user-select: none; + -webkit-user-drag: none; +} + +.previewCanvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 20px; + box-sizing: border-box; + object-fit: contain; +} + +.controls { + overflow-y: scroll; +} + +@container (max-width: 800px) { + .container { + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr; + } +} +</style> diff --git a/packages/frontend/src/components/MkImgWithBlurhash.vue b/packages/frontend/src/components/MkImgWithBlurhash.vue index e3a0a371b4..361aeff4d0 100644 --- a/packages/frontend/src/components/MkImgWithBlurhash.vue +++ b/packages/frontend/src/components/MkImgWithBlurhash.vue @@ -82,7 +82,7 @@ const canvasPromise = new Promise<WorkerMultiDispatch | HTMLCanvasElement>(resol <script lang="ts" setup> import { computed, nextTick, onMounted, onUnmounted, useTemplateRef, watch, ref } from 'vue'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import { render } from 'buraha'; import { prefer } from '@/preferences.js'; @@ -117,7 +117,7 @@ const props = withDefaults(defineProps<{ onlyAvgColor: false, }); -const viewId = uuid(); +const viewId = genId(); const canvas = useTemplateRef('canvas'); const root = useTemplateRef('root'); const img = useTemplateRef('img'); diff --git a/packages/frontend/src/components/MkInput.vue b/packages/frontend/src/components/MkInput.vue index b34b7aaf60..cc7ad8bb78 100644 --- a/packages/frontend/src/components/MkInput.vue +++ b/packages/frontend/src/components/MkInput.vue @@ -52,6 +52,7 @@ import type { SuggestionType } from '@/utility/autocomplete.js'; import MkButton from '@/components/MkButton.vue'; import { i18n } from '@/i18n.js'; import { Autocomplete } from '@/utility/autocomplete.js'; +import { genId } from '@/utility/id.js'; const props = defineProps<{ modelValue: string | number | null; @@ -87,7 +88,7 @@ const emit = defineEmits<{ const { modelValue, type, autofocus } = toRefs(props); const v = ref(modelValue.value); -const id = Math.random().toString(); // TODO: uuid? +const id = genId(); const focused = ref(false); const changed = ref(false); const invalid = ref(false); diff --git a/packages/frontend/src/components/MkMiniChart.vue b/packages/frontend/src/components/MkMiniChart.vue index 98bd471438..582073b878 100644 --- a/packages/frontend/src/components/MkMiniChart.vue +++ b/packages/frontend/src/components/MkMiniChart.vue @@ -32,7 +32,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { watch, ref } from 'vue'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import tinycolor from 'tinycolor2'; import { useInterval } from '@@/js/use-interval.js'; @@ -42,7 +42,7 @@ const props = defineProps<{ const viewBoxX = 50; const viewBoxY = 50; -const gradientId = uuid(); +const gradientId = genId(); const polylinePoints = ref(''); const polygonPoints = ref(''); const headX = ref<number | null>(null); diff --git a/packages/frontend/src/components/MkModalWindow.vue b/packages/frontend/src/components/MkModalWindow.vue index fd4262c17d..b8d9da0a13 100644 --- a/packages/frontend/src/components/MkModalWindow.vue +++ b/packages/frontend/src/components/MkModalWindow.vue @@ -4,15 +4,16 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<MkModal ref="modal" :preferType="'dialog'" @click="onBgClick" @closed="emit('closed')" @esc="emit('esc')"> - <div ref="rootEl" :class="$style.root" :style="{ width: `${width}px`, height: `min(${height}px, 100%)` }"> +<MkModal ref="modal" v-slot="{ type }" :preferType="deviceKind === 'smartphone' ? 'drawer' : 'dialog'" @click="onBgClick" @closed="emit('closed')" @esc="emit('esc')"> + <div ref="rootEl" :class="[$style.root, type === 'drawer' ? $style.asDrawer : null]" :style="{ width: type === 'drawer' ? '' : `${width}px`, height: type === 'drawer' ? '' : `min(${height}px, 100%)` }"> <div :class="$style.header"> - <button v-if="withOkButton && withCloseButton" :class="$style.headerButton" class="_button" @click="emit('close')"><i class="ti ti-x"></i></button> + <button v-if="withCloseButton" :class="$style.headerButton" class="_button" data-cy-modal-window-close @click="emit('close')"><i class="ti ti-x"></i></button> <span :class="$style.title"> <slot name="header"></slot> </span> - <button v-if="!withOkButton && withCloseButton" :class="$style.headerButton" class="_button" data-cy-modal-window-close @click="emit('close')"><i class="ti ti-x"></i></button> - <button v-if="withOkButton" :class="$style.headerButton" class="_button" :disabled="okButtonDisabled" @click="emit('ok')"><i class="ti ti-check"></i></button> + <div v-if="withOkButton" style="padding: 0 16px; place-content: center;"> + <MkButton primary gradate small rounded :disabled="okButtonDisabled" @click="emit('ok')">{{ i18n.ts.done }} <i class="ti ti-check"></i></MkButton> + </div> </div> <div :class="$style.body"> <slot></slot> @@ -26,7 +27,10 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { onMounted, onUnmounted, useTemplateRef, ref } from 'vue'; -import MkModal from './MkModal.vue'; +import MkModal from '@/components/MkModal.vue'; +import MkButton from '@/components/MkButton.vue'; +import { i18n } from '@/i18n'; +import { deviceKind } from '@/utility/device-kind.js'; const props = withDefaults(defineProps<{ withOkButton?: boolean; @@ -82,6 +86,19 @@ defineExpose({ @media (max-width: 500px) { --root-margin: 16px; } + + &.asDrawer { + height: calc(100dvh - 30px); + border-radius: 0; + + .body { + padding-bottom: env(safe-area-inset-bottom, 0px); + } + + .footer { + padding-bottom: max(12px, env(safe-area-inset-bottom, 0px)); + } + } } .header { diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 4a78d00665..794a091f30 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -265,21 +265,21 @@ const currentClip = inject<Ref<Misskey.entities.Clip> | null>('currentClip', nul let note = deepClone(props.note); -// plugin -const noteViewInterruptors = getPluginHandlers('note_view_interruptor'); -if (noteViewInterruptors.length > 0) { - onMounted(async () => { - let result: Misskey.entities.Note | null = deepClone(note); - for (const interruptor of noteViewInterruptors) { - try { - result = await interruptor.handler(result!) as Misskey.entities.Note | null; - } catch (err) { - console.error(err); - } - } - note = result as Misskey.entities.Note; - }); -} +// コンãƒãƒ¼ãƒãƒ³ãƒˆåˆæœŸåŒ–ã«éžåŒæœŸçš„ãªå‡¦ç†ã‚’行ã†ã¨Transitionã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ãŒãƒã‚°ã‚‹ãŸã‚åŒæœŸçš„ã«å®Ÿè¡Œã§ãるメソッドãŒå®Ÿè£…ã•れるã®ã‚’å¾…ã¤å¿…è¦ãŒã‚ã‚‹ +// https://github.com/aiscript-dev/aiscript/issues/937 +//// plugin +//const noteViewInterruptors = getPluginHandlers('note_view_interruptor'); +//if (noteViewInterruptors.length > 0) { +// let result: Misskey.entities.Note | null = deepClone(note); +// for (const interruptor of noteViewInterruptors) { +// try { +// result = await interruptor.handler(result!) as Misskey.entities.Note | null; +// } catch (err) { +// console.error(err); +// } +// } +// note = result as Misskey.entities.Note; +//} const isRenote = Misskey.note.isPureRenote(note); const appearNote = getAppearNote(note); @@ -321,20 +321,27 @@ const pleaseLoginContext = computed<OpenOnRemoteOptions>(() => ({ url: `https://${host}/notes/${appearNote.id}`, })); -/* Overload Functionã«LintãŒå¯¾å¿œã—ã¦ã„ãªã„ã®ã§ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆ +/* eslint-disable no-redeclare */ +/** checkOnlyã§ã¯ç´”粋ãªãƒ¯ãƒ¼ãƒ‰ãƒŸãƒ¥ãƒ¼ãƒˆçµæžœã‚’booleanã§è¿”å´ã™ã‚‹ */ function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly: true): boolean; -function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly: false): Array<string | string[]> | false | 'sensitiveMute'; -*/ -function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly = false): Array<string | string[]> | false | 'sensitiveMute' { +function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly?: false): Array<string | string[]> | false | 'sensitiveMute'; + +function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly = false): Array<string | string[]> | boolean | 'sensitiveMute' { if (mutedWords != null) { const result = checkWordMute(noteToCheck, $i, mutedWords); - if (Array.isArray(result)) return result; + if (Array.isArray(result)) { + return checkOnly ? (result.length > 0) : result; + } const replyResult = noteToCheck.reply && checkWordMute(noteToCheck.reply, $i, mutedWords); - if (Array.isArray(replyResult)) return replyResult; + if (Array.isArray(replyResult)) { + return checkOnly ? (replyResult.length > 0) : replyResult; + } const renoteResult = noteToCheck.renote && checkWordMute(noteToCheck.renote, $i, mutedWords); - if (Array.isArray(renoteResult)) return renoteResult; + if (Array.isArray(renoteResult)) { + return checkOnly ? (renoteResult.length > 0) : renoteResult; + } } if (checkOnly) return false; @@ -345,6 +352,7 @@ function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string return false; } +/* eslint-enable no-redeclare */ const keymap = { 'r': () => { @@ -417,7 +425,7 @@ if (!props.mock) { const users = renotes.map(x => x.user); - if (users.length < 1) return; + if (users.length < 1 || renoteButton.value == null) return; const { dispose } = os.popup(MkUsersTooltip, { showing, diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index e090901875..cc26b0d0dc 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -286,21 +286,20 @@ const inChannel = inject('inChannel', null); let note = deepClone(props.note); -// plugin -const noteViewInterruptors = getPluginHandlers('note_view_interruptor'); -if (noteViewInterruptors.length > 0) { - onMounted(async () => { - let result: Misskey.entities.Note | null = deepClone(note); - for (const interruptor of noteViewInterruptors) { - try { - result = await interruptor.handler(result!) as Misskey.entities.Note | null; - } catch (err) { - console.error(err); - } - } - note = result as Misskey.entities.Note; - }); -} +// コンãƒãƒ¼ãƒãƒ³ãƒˆåˆæœŸåŒ–ã«éžåŒæœŸçš„ãªå‡¦ç†ã‚’行ã†ã¨Transitionã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ãŒãƒã‚°ã‚‹ãŸã‚åŒæœŸçš„ã«å®Ÿè¡Œã§ãるメソッドãŒå®Ÿè£…ã•れるã®ã‚’å¾…ã¤å¿…è¦ãŒã‚ã‚‹ +//// plugin +//const noteViewInterruptors = getPluginHandlers('note_view_interruptor'); +//if (noteViewInterruptors.length > 0) { +// let result: Misskey.entities.Note | null = deepClone(note); +// for (const interruptor of noteViewInterruptors) { +// try { +// result = await interruptor.handler(result!) as Misskey.entities.Note | null; +// } catch (err) { +// console.error(err); +// } +// } +// note = result as Misskey.entities.Note; +//} const isRenote = Misskey.note.isPureRenote(note); const appearNote = getAppearNote(note); diff --git a/packages/frontend/src/components/MkPositionSelector.vue b/packages/frontend/src/components/MkPositionSelector.vue new file mode 100644 index 0000000000..002950cdf1 --- /dev/null +++ b/packages/frontend/src/components/MkPositionSelector.vue @@ -0,0 +1,53 @@ +<!-- +SPDX-FileCopyrightText: syuilo and misskey-project +SPDX-License-Identifier: AGPL-3.0-only +--> + +<template> +<div :class="[$style.root]"> + <div :class="$style.items"> + <button class="_button" :class="[$style.item, x === 'left' && y === 'top' ? $style.active : null]" @click="() => { x = 'left'; y = 'top'; }"><i class="ti ti-align-box-left-top"></i></button> + <button class="_button" :class="[$style.item, x === 'center' && y === 'top' ? $style.active : null]" @click="() => { x = 'center'; y = 'top'; }"><i class="ti ti-align-box-center-top"></i></button> + <button class="_button" :class="[$style.item, x === 'right' && y === 'top' ? $style.active : null]" @click="() => { x = 'right'; y = 'top'; }"><i class="ti ti-align-box-right-top"></i></button> + <button class="_button" :class="[$style.item, x === 'left' && y === 'center' ? $style.active : null]" @click="() => { x = 'left'; y = 'center'; }"><i class="ti ti-align-box-left-middle"></i></button> + <button class="_button" :class="[$style.item, x === 'center' && y === 'center' ? $style.active : null]" @click="() => { x = 'center'; y = 'center'; }"><i class="ti ti-align-box-center-middle"></i></button> + <button class="_button" :class="[$style.item, x === 'right' && y === 'center' ? $style.active : null]" @click="() => { x = 'right'; y = 'center'; }"><i class="ti ti-align-box-right-middle"></i></button> + <button class="_button" :class="[$style.item, x === 'left' && y === 'bottom' ? $style.active : null]" @click="() => { x = 'left'; y = 'bottom'; }"><i class="ti ti-align-box-left-bottom"></i></button> + <button class="_button" :class="[$style.item, x === 'center' && y === 'bottom' ? $style.active : null]" @click="() => { x = 'center'; y = 'bottom'; }"><i class="ti ti-align-box-center-bottom"></i></button> + <button class="_button" :class="[$style.item, x === 'right' && y === 'bottom' ? $style.active : null]" @click="() => { x = 'right'; y = 'bottom'; }"><i class="ti ti-align-box-right-bottom"></i></button> + </div> +</div> +</template> + +<script lang="ts" setup> +import { } from 'vue'; + +const x = defineModel<string>('x', { default: 'center' }); +const y = defineModel<string>('y', { default: 'center' }); +</script> + +<style lang="scss" module> +.root { + position: relative; +} + +.items { + display: grid; + grid-template-columns: repeat(3, 1fr); + grid-template-rows: repeat(3, 1fr); + gap: 4px; + border-radius: 8px; + overflow: clip; +} + +.item { + height: 32px; + background: var(--MI_THEME-panel); + border-radius: 4px; + + &.active { + background: var(--MI_THEME-accentedBg); + color: var(--MI_THEME-accent); + } +} +</style> diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index 982ed88003..e319c9bacb 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -72,24 +72,29 @@ SPDX-License-Identifier: AGPL-3.0-only </div> <input v-show="withHashtags" ref="hashtagsInputEl" v-model="hashtags" :class="$style.hashtags" :placeholder="i18n.ts.hashtags" list="hashtags"> <XPostFormAttaches v-model="files" @detach="detachFile" @changeSensitive="updateFileSensitive" @changeName="updateFileName"/> + <div v-if="uploader.items.value.length > 0" style="padding: 12px;"> + <MkTip k="postFormUploader"> + {{ i18n.ts._postForm.uploaderTip }} + </MkTip> + <MkUploaderItems :items="uploader.items.value" @showMenu="(item, ev) => showPerUploadItemMenu(item, ev)" @showMenuViaContextmenu="(item, ev) => showPerUploadItemMenuViaContextmenu(item, ev)"/> + </div> <MkPollEditor v-if="poll" v-model="poll" @destroyed="poll = null"/> <MkNotePreview v-if="showPreview" :class="$style.preview" :text="text" :files="files" :poll="poll ?? undefined" :useCw="useCw" :cw="cw" :user="postAccount ?? $i"/> <div v-if="showingOptions" style="padding: 8px 16px;"> </div> <footer :class="$style.footer"> <div :class="$style.footerLeft"> - <button v-tooltip="i18n.ts.attachFile" class="_button" :class="$style.footerButton" @click="chooseFileFrom"><i class="ti ti-photo-plus"></i></button> + <button v-tooltip="i18n.ts.attachFile + ' (' + i18n.ts.upload + ')'" class="_button" :class="$style.footerButton" @click="chooseFileFromPc"><i class="ti ti-photo-plus"></i></button> + <button v-tooltip="i18n.ts.attachFile + ' (' + i18n.ts.fromDrive + ')'" class="_button" :class="$style.footerButton" @click="chooseFileFromDrive"><i class="ti ti-cloud-download"></i></button> <button v-tooltip="i18n.ts.poll" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: poll }]" @click="togglePoll"><i class="ti ti-chart-arrows"></i></button> <button v-tooltip="i18n.ts.useCw" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: useCw }]" @click="useCw = !useCw"><i class="ti ti-eye-off"></i></button> - <button v-tooltip="i18n.ts.mention" class="_button" :class="$style.footerButton" @click="insertMention"><i class="ti ti-at"></i></button> <button v-tooltip="i18n.ts.hashtags" class="_button" :class="[$style.footerButton, { [$style.footerButtonActive]: withHashtags }]" @click="withHashtags = !withHashtags"><i class="ti ti-hash"></i></button> - <button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugins" class="_button" :class="$style.footerButton" @click="showActions"><i class="ti ti-plug"></i></button> - <button v-tooltip="i18n.ts.emoji" :class="['_button', $style.footerButton]" @click="insertEmoji"><i class="ti ti-mood-happy"></i></button> + <button v-tooltip="i18n.ts.mention" class="_button" :class="$style.footerButton" @click="insertMention"><i class="ti ti-at"></i></button> <button v-if="showAddMfmFunction" v-tooltip="i18n.ts.addMfmFunction" :class="['_button', $style.footerButton]" @click="insertMfmFunction"><i class="ti ti-palette"></i></button> + <button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugins" class="_button" :class="$style.footerButton" @click="showActions"><i class="ti ti-plug"></i></button> </div> <div :class="$style.footerRight"> - <button v-tooltip="i18n.ts.previewNoteText" class="_button" :class="[$style.footerButton, { [$style.previewButtonActive]: showPreview }]" @click="showPreview = !showPreview"><i class="ti ti-eye"></i></button> - <!--<button v-tooltip="i18n.ts.more" class="_button" :class="$style.footerButton" @click="showingOptions = !showingOptions"><i class="ti ti-dots"></i></button>--> + <button v-tooltip="i18n.ts.emoji" :class="['_button', $style.footerButton]" @click="insertEmoji"><i class="ti ti-mood-happy"></i></button> </div> </footer> <datalist id="hashtags"> @@ -105,10 +110,12 @@ import * as Misskey from 'misskey-js'; import insertTextAtCursor from 'insert-text-at-cursor'; import { toASCII } from 'punycode.js'; import { host, url } from '@@/js/config.js'; +import MkUploaderItems from './MkUploaderItems.vue'; import type { ShallowRef } from 'vue'; import type { PostFormProps } from '@/types/post-form.js'; import type { MenuItem } from '@/types/menu.js'; import type { PollEditorModelValue } from '@/components/MkPollEditor.vue'; +import type { UploaderItem } from '@/composables/use-uploader.js'; import MkNotePreview from '@/components/MkNotePreview.vue'; import XPostFormAttaches from '@/components/MkPostFormAttaches.vue'; import XTextCounter from '@/components/MkPostForm.TextCounter.vue'; @@ -120,7 +127,7 @@ import { formatTimeString } from '@/utility/format-time-string.js'; import { Autocomplete } from '@/utility/autocomplete.js'; import * as os from '@/os.js'; import { misskeyApi } from '@/utility/misskey-api.js'; -import { selectFiles } from '@/utility/drive.js'; +import { chooseDriveFile } from '@/utility/drive.js'; import { store } from '@/store.js'; import MkInfo from '@/components/MkInfo.vue'; import { i18n } from '@/i18n.js'; @@ -138,6 +145,7 @@ import { getPluginHandlers } from '@/plugin.js'; import { DI } from '@/di.js'; import { globalEvents } from '@/events.js'; import { checkDragDataType, getDragData } from '@/drag-and-drop.js'; +import { useUploader } from '@/composables/use-uploader.js'; const $i = ensureSignin(); @@ -201,6 +209,15 @@ const justEndedComposition = ref(false); const renoteTargetNote: ShallowRef<PostFormProps['renote'] | null> = shallowRef(props.renote); const postFormActions = getPluginHandlers('post_form_action'); +const uploader = useUploader({ + multiple: true, +}); + +uploader.events.on('itemUploaded', ctx => { + files.value.push(ctx.item.uploaded!); + uploader.removeItem(ctx.item); +}); + const draftKey = computed((): string => { let key = props.channel ? `channel:${props.channel.id}` : ''; @@ -258,10 +275,11 @@ const cwTextLength = computed((): number => { const maxCwTextLength = 100; const canPost = computed((): boolean => { - return !props.mock && !posting.value && !posted.value && + return !props.mock && !posting.value && !posted.value && !uploader.uploading.value && (uploader.items.value.length === 0 || uploader.readyForUpload.value) && ( 1 <= textLength.value || 1 <= files.value.length || + 1 <= uploader.items.value.length || poll.value != null || renoteTargetNote.value != null || quoteId.value != null @@ -434,13 +452,20 @@ function focus() { } } -function chooseFileFrom(ev) { +function chooseFileFromPc(ev: MouseEvent) { if (props.mock) return; - selectFiles(ev.currentTarget ?? ev.target, i18n.ts.attachFile).then(files_ => { - for (const file of files_) { - files.value.push(file); - } + os.chooseFileFromPc({ multiple: true }).then(files => { + if (files.length === 0) return; + uploader.addFiles(files); + }); +} + +function chooseFileFromDrive(ev: MouseEvent) { + if (props.mock) return; + + chooseDriveFile({ multiple: true }).then(driveFiles => { + files.value.push(...driveFiles); }); } @@ -567,6 +592,11 @@ function showOtherSettings() { toggleReactionAcceptance(); }, }, { type: 'divider' }, { + type: 'switch', + icon: 'ti ti-eye', + text: i18n.ts.preview, + ref: showPreview, + }, { icon: 'ti ti-trash', text: i18n.ts.reset, danger: true, @@ -793,6 +823,15 @@ function isAnnoying(text: string): boolean { text.includes('$[position'); } +async function uploadFiles() { + await uploader.upload(); + + for (const uploadedItem of uploader.items.value.filter(x => x.uploaded != null)) { + files.value.push(uploadedItem.uploaded!); + uploader.removeItem(uploadedItem); + } +} + async function post(ev?: MouseEvent) { if (ev) { const el = (ev.currentTarget ?? ev.target) as HTMLElement | null; @@ -836,6 +875,10 @@ async function post(ev?: MouseEvent) { } } + if (uploader.items.value.some(x => x.uploaded == null)) { + await uploadFiles(); + } + let postData = { text: text.value === '' ? null : text.value, fileIds: files.value.length > 0 ? files.value.map(f => f.id) : undefined, @@ -1039,6 +1082,16 @@ function openAccountMenu(ev: MouseEvent) { }, ev); } +function showPerUploadItemMenu(item: UploaderItem, ev: MouseEvent) { + const menu = uploader.getMenu(item); + os.popupMenu(menu, ev.currentTarget ?? ev.target); +} + +function showPerUploadItemMenuViaContextmenu(item: UploaderItem, ev: MouseEvent) { + const menu = uploader.getMenu(item); + os.contextMenu(menu, ev); +} + onMounted(() => { if (props.autofocus) { focus(); @@ -1107,8 +1160,23 @@ onMounted(() => { }); }); +async function canClose() { + if (!uploader.allItemsUploaded.value) { + const { canceled } = await os.confirm({ + type: 'question', + text: i18n.ts._postForm.quitInspiteOfThereAreUnuploadedFilesConfirm, + okText: i18n.ts.yes, + cancelText: i18n.ts.no, + }); + if (canceled) return false; + } + + return true; +} + defineExpose({ clear, + canClose, }); </script> diff --git a/packages/frontend/src/components/MkPostFormDialog.vue b/packages/frontend/src/components/MkPostFormDialog.vue index c467e29df6..0a655bab99 100644 --- a/packages/frontend/src/components/MkPostFormDialog.vue +++ b/packages/frontend/src/components/MkPostFormDialog.vue @@ -7,9 +7,9 @@ SPDX-License-Identifier: AGPL-3.0-only <MkModal ref="modal" :preferType="'dialog'" - @click="modal?.close()" + @click="_close()" @closed="onModalClosed()" - @esc="modal?.close()" + @esc="_close()" > <MkPostForm ref="form" @@ -18,8 +18,8 @@ SPDX-License-Identifier: AGPL-3.0-only autofocus freezeAfterPosted @posted="onPosted" - @cancel="modal?.close()" - @esc="modal?.close()" + @cancel="_close()" + @esc="_close()" /> </MkModal> </template> @@ -43,6 +43,7 @@ const emit = defineEmits<{ }>(); const modal = useTemplateRef('modal'); +const form = useTemplateRef('form'); function onPosted() { modal.value?.close({ @@ -50,6 +51,12 @@ function onPosted() { }); } +async function _close() { + const canClose = await form.value?.canClose(); + if (!canClose) return; + modal.value?.close(); +} + function onModalClosed() { emit('closed'); } diff --git a/packages/frontend/src/components/MkRange.vue b/packages/frontend/src/components/MkRange.vue index f36e68b687..7a5848de48 100644 --- a/packages/frontend/src/components/MkRange.vue +++ b/packages/frontend/src/components/MkRange.vue @@ -12,7 +12,12 @@ SPDX-License-Identifier: AGPL-3.0-only <slot name="prefix"></slot> <div ref="containerEl" class="container"> <div class="track"> - <div class="highlight" :style="{ width: (steppedRawValue * 100) + '%' }"></div> + <div class="highlight right" :style="{ width: rightTrackWidth, left: rightTrackPosition }"> + <div class="shine right"></div> + </div> + <div class="highlight left" :style="{ width: leftTrackWidth, left: leftTrackPosition }"> + <div class="shine left"></div> + </div> </div> <div v-if="steps && showTicks" class="ticks"> <div v-for="i in (steps + 1)" class="tick" :style="{ left: (((i - 1) / steps) * 100) + '%' }"></div> @@ -24,7 +29,9 @@ SPDX-License-Identifier: AGPL-3.0-only @mouseenter.passive="onMouseenter" @mousedown="onMousedown" @touchstart="onMousedown" - ></div> + > + <div class="thumbInner"></div> + </div> </div> <slot name="suffix"></slot> </div> @@ -35,7 +42,7 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <script lang="ts" setup> -import { computed, defineAsyncComponent, onMounted, onUnmounted, ref, useTemplateRef, watch } from 'vue'; +import { computed, defineAsyncComponent, onMounted, onUnmounted, onBeforeUnmount, ref, useTemplateRef, watch } from 'vue'; import { isTouchUsing } from '@/utility/touch.js'; import * as os from '@/os.js'; @@ -51,19 +58,40 @@ const props = withDefaults(defineProps<{ continuousUpdate?: boolean; }>(), { step: 1, - textConverter: (v) => v.toString(), + textConverter: (v: number) => (Math.round(v * 1000) / 1000).toString(), easing: false, }); const emit = defineEmits<{ (ev: 'update:modelValue', value: number): void; (ev: 'dragEnded', value: number): void; + (ev: 'thumbDoubleClicked'): void; }>(); const containerEl = useTemplateRef('containerEl'); const thumbEl = useTemplateRef('thumbEl'); -const rawValue = ref((props.modelValue - props.min) / (props.max - props.min)); +const maxRatio = computed(() => Math.abs(props.max) / (props.max + Math.abs(Math.min(0, props.min)))); +const minRatio = computed(() => Math.abs(Math.min(0, props.min)) / (props.max + Math.abs(Math.min(0, props.min)))); + +const rightTrackWidth = computed(() => { + return Math.max(0, (steppedRawValue.value - minRatio.value) * 100) + '%'; +}); +const leftTrackWidth = computed(() => { + return Math.max(0, (minRatio.value - steppedRawValue.value) * 100) + '%'; +}); +const rightTrackPosition = computed(() => { + return (Math.abs(Math.min(0, props.min)) / (props.max + Math.abs(Math.min(0, props.min)))) * 100 + '%'; +}); +const leftTrackPosition = computed(() => { + return (Math.min(minRatio.value, steppedRawValue.value) * 100) + '%'; +}); + +const calcRawValue = (value: number) => { + return (value - props.min) / (props.max - props.min); +}; + +const rawValue = ref(calcRawValue(props.modelValue)); const steppedRawValue = computed(() => { if (props.step) { const step = props.step / (props.max - props.min); @@ -93,6 +121,11 @@ const calcThumbPosition = () => { } }; watch([steppedRawValue, containerEl], calcThumbPosition); +watch(() => props.modelValue, (newVal) => { + const newRawValue = calcRawValue(newVal); + if (rawValue.value === newRawValue) return; + rawValue.value = newRawValue; +}); let ro: ResizeObserver | undefined; @@ -118,6 +151,12 @@ const steps = computed(() => { const tooltipForDragShowing = ref(false); const tooltipForHoverShowing = ref(false); +onBeforeUnmount(() => { + // 何らã‹ã®å•題ã§è¡¨ç¤ºã•れã£ã±ãªã—ã§ã‚‚コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’離れãŸã‚‰æ¶ˆãˆã‚‹ã‚ˆã†ã« + tooltipForDragShowing.value = false; + tooltipForHoverShowing.value = false; +}); + function onMouseenter() { if (isTouchUsing) return; @@ -128,7 +167,7 @@ function onMouseenter() { text: computed(() => { return props.textConverter(finalValue.value); }), - targetElement: thumbEl, + targetElement: thumbEl.value ?? undefined, }, { closed: () => dispose(), }); @@ -138,6 +177,8 @@ function onMouseenter() { }, { once: true, passive: true }); } +let lastClickTime: number | null = null; + function onMousedown(ev: MouseEvent | TouchEvent) { ev.preventDefault(); @@ -148,7 +189,7 @@ function onMousedown(ev: MouseEvent | TouchEvent) { text: computed(() => { return props.textConverter(finalValue.value); }), - targetElement: thumbEl, + targetElement: thumbEl.value ?? undefined, }, { closed: () => dispose(), }); @@ -193,6 +234,20 @@ function onMousedown(ev: MouseEvent | TouchEvent) { window.addEventListener('touchmove', onDrag); window.addEventListener('mouseup', onMouseup, { once: true }); window.addEventListener('touchend', onMouseup, { once: true }); + + if (lastClickTime == null) { + lastClickTime = Date.now(); + return; + } else { + const now = Date.now(); + if (now - lastClickTime < 300) { // 300ms以内ã®ã‚¯ãƒªãƒƒã‚¯ã¯ãƒ€ãƒ–ルクリックã¨ã¿ãªã™ + lastClickTime = null; + emit('thumbDoubleClicked'); + return; + } else { + lastClickTime = now; + } + } } </script> @@ -222,15 +277,17 @@ function onMousedown(ev: MouseEvent | TouchEvent) { } } - $thumbHeight: 20px; - $thumbWidth: 20px; + $thumbHeight: 32px; + $thumbWidth: 32px; + $thumbInnerHeight: 19px; + $thumbInnerWidth: 19px; > .body { display: flex; align-items: center; justify-content: center; gap: 8px; - padding: 7px 12px; + padding: 0px 4px; background: var(--MI_THEME-panel); border: solid 1px var(--MI_THEME-panel); border-radius: 6px; @@ -256,10 +313,30 @@ function onMousedown(ev: MouseEvent | TouchEvent) { > .highlight { position: absolute; top: 0; - left: 0; height: 100%; - background: var(--MI_THEME-accent); - opacity: 0.5; + background: color(from var(--MI_THEME-buttonGradateA) srgb r g b / 0.5); + overflow: clip; + + > .shine { + position: absolute; + top: 0; + width: 64px; + height: 100%; + } + } + + > .highlight.right { + > .shine.right { + right: calc(#{$thumbInnerWidth} / 2); + background: linear-gradient(-90deg, var(--MI_THEME-buttonGradateB), color(from var(--MI_THEME-buttonGradateA) srgb r g b / 0)); + } + } + + > .highlight.left { + > .shine.left { + left: calc(#{$thumbInnerWidth} / 2); + background: linear-gradient(90deg, var(--MI_THEME-buttonGradateB), color(from var(--MI_THEME-buttonGradateA) srgb r g b / 0)); + } } } @@ -290,11 +367,25 @@ function onMousedown(ev: MouseEvent | TouchEvent) { width: $thumbWidth; height: $thumbHeight; cursor: grab; - background: var(--MI_THEME-accent); - border-radius: 999px; &:hover { - background: hsl(from var(--MI_THEME-accent) h s calc(l + 10)); + > .thumbInner { + background: hsl(from var(--MI_THEME-accent) h s calc(l + 10)); + } + } + + > .thumbInner { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + width: $thumbInnerWidth; + height: $thumbInnerHeight; + background: var(--MI_THEME-accent); + border-radius: 999px; + pointer-events: none; } } } diff --git a/packages/frontend/src/components/MkReactionsViewer.vue b/packages/frontend/src/components/MkReactionsViewer.vue index 725978179e..bd9ef50157 100644 --- a/packages/frontend/src/components/MkReactionsViewer.vue +++ b/packages/frontend/src/components/MkReactionsViewer.vue @@ -33,7 +33,10 @@ import * as Misskey from 'misskey-js'; import { inject, watch, ref } from 'vue'; import { TransitionGroup } from 'vue'; import XReaction from '@/components/MkReactionsViewer.reaction.vue'; +import { $i } from '@/i.js'; import { prefer } from '@/preferences.js'; +import { customEmojisMap } from '@/custom-emojis.js'; +import { isSupportedEmoji } from '@@/js/emojilist.js'; import { DI } from '@/di.js'; const props = withDefaults(defineProps<{ @@ -70,6 +73,12 @@ function onMockToggleReaction(emoji: string, count: number) { emit('mockUpdateMyReaction', emoji, (count - _reactions.value[i][1])); } +function canReact(reaction: string) { + if (!$i) return false; + // TODO: CheckPermissions + return !reaction.match(/@\w/) && (customEmojisMap.has(reaction) || isSupportedEmoji(reaction)); +} + watch([() => props.reactions, () => props.maxNumber], ([newSource, maxNumber]) => { let newReactions: [string, number][] = []; hasMoreReactions.value = Object.keys(newSource).length > maxNumber; @@ -86,7 +95,15 @@ watch([() => props.reactions, () => props.maxNumber], ([newSource, maxNumber]) = newReactions = [ ...newReactions, ...Object.entries(newSource) - .sort(([, a], [, b]) => b - a) + .sort(([emojiA, countA], [emojiB, countB]) => { + if (prefer.s.showAvailableReactionsFirstInNote) { + if (!canReact(emojiA) && canReact(emojiB)) return 1; + if (canReact(emojiA) && !canReact(emojiB)) return -1; + return countB - countA; + } else { + return countB - countA; + } + }) .filter(([y], i) => i < maxNumber && !newReactionsNames.includes(y)), ]; diff --git a/packages/frontend/src/components/MkSparkle.vue b/packages/frontend/src/components/MkSparkle.vue index 2400c5ec7f..47955a7fd7 100644 --- a/packages/frontend/src/components/MkSparkle.vue +++ b/packages/frontend/src/components/MkSparkle.vue @@ -57,6 +57,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { onMounted, onUnmounted, ref, useTemplateRef } from 'vue'; +import { genId } from '@/utility/id.js'; const particles = ref<{ id: string, @@ -86,7 +87,7 @@ onMounted(() => { const y = (Math.random() * (height.value - 64)); const sizeFactor = Math.random(); const particle = { - id: Math.random().toString(), + id: genId(), x, y, size: 0.2 + ((sizeFactor / 10) * 3), diff --git a/packages/frontend/src/components/MkStreamingNotesTimeline.vue b/packages/frontend/src/components/MkStreamingNotesTimeline.vue index 576a0cf8cc..7e72840b7b 100644 --- a/packages/frontend/src/components/MkStreamingNotesTimeline.vue +++ b/packages/frontend/src/components/MkStreamingNotesTimeline.vue @@ -62,6 +62,7 @@ import { useInterval } from '@@/js/use-interval.js'; import { getScrollContainer, scrollToTop } from '@@/js/scroll.js'; import type { BasicTimelineType } from '@/timelines.js'; import type { PagingCtx } from '@/composables/use-pagination.js'; +import type { SoundStore } from '@/preferences/def.js'; import { usePagination } from '@/composables/use-pagination.js'; import MkPullToRefresh from '@/components/MkPullToRefresh.vue'; import { useStream } from '@/stream.js'; @@ -83,6 +84,7 @@ const props = withDefaults(defineProps<{ channel?: string; role?: string; sound?: boolean; + customSound?: SoundStore | null; withRenotes?: boolean; withReplies?: boolean; withSensitive?: boolean; @@ -92,6 +94,8 @@ const props = withDefaults(defineProps<{ withReplies: false, withSensitive: true, onlyFiles: false, + sound: false, + customSound: null, }); provide('inTimeline', true); @@ -190,7 +194,11 @@ function prepend(note: Misskey.entities.Note) { } if (props.sound) { - sound.playMisskeySfx($i && (note.userId === $i.id) ? 'noteMy' : 'note'); + if (props.customSound) { + sound.playMisskeySfxFile(props.customSound); + } else { + sound.playMisskeySfx($i && (note.userId === $i.id) ? 'noteMy' : 'note'); + } } } @@ -420,7 +428,7 @@ defineExpose({ background: var(--MI_THEME-panel); } -.note { +.note:not(:empty) { border-bottom: solid 0.5px var(--MI_THEME-divider); } diff --git a/packages/frontend/src/components/MkTutorialDialog.Note.vue b/packages/frontend/src/components/MkTutorialDialog.Note.vue index 95f53e7635..b77e67e9c6 100644 --- a/packages/frontend/src/components/MkTutorialDialog.Note.vue +++ b/packages/frontend/src/components/MkTutorialDialog.Note.vue @@ -29,6 +29,7 @@ import { i18n } from '@/i18n.js'; import { globalEvents } from '@/events.js'; import { $i } from '@/i.js'; import MkNote from '@/components/MkNote.vue'; +import { genId } from '@/utility/id.js'; const props = defineProps<{ phase: 'aboutNote' | 'howToReact'; @@ -83,7 +84,7 @@ function doNotification(emoji: string): void { if (!$i || !emoji) return; const notification: Misskey.entities.Notification = { - id: Math.random().toString(), + id: genId(), createdAt: new Date().toUTCString(), type: 'reaction', reaction: emoji, diff --git a/packages/frontend/src/components/MkUploaderDialog.vue b/packages/frontend/src/components/MkUploaderDialog.vue index 3f5f0776a8..ce098d71e4 100644 --- a/packages/frontend/src/components/MkUploaderDialog.vue +++ b/packages/frontend/src/components/MkUploaderDialog.vue @@ -23,55 +23,12 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts._uploader.tip }} </MkTip> - <div class="_gaps_s"> - <div - v-for="ctx in items" - :key="ctx.id" - v-panel - :class="[$style.item, ctx.waiting ? $style.itemWaiting : null, ctx.uploaded ? $style.itemCompleted : null, ctx.uploadFailed ? $style.itemFailed : null]" - :style="{ '--p': ctx.progress != null ? `${ctx.progress.value / ctx.progress.max * 100}%` : '0%' }" - > - <div :class="$style.itemInner"> - <div :class="$style.itemActionWrapper"> - <MkButton :iconOnly="true" rounded @click="showMenu($event, ctx)"><i class="ti ti-dots"></i></MkButton> - </div> - <div :class="$style.itemThumbnail" :style="{ backgroundImage: `url(${ ctx.thumbnail })` }"></div> - <div :class="$style.itemBody"> - <div><MkCondensedLine :minScale="2 / 3">{{ ctx.name }}</MkCondensedLine></div> - <div :class="$style.itemInfo"> - <span>{{ ctx.file.type }}</span> - <span>{{ bytes(ctx.file.size) }}</span> - <span v-if="ctx.compressedSize">({{ i18n.tsx._uploader.compressedToX({ x: bytes(ctx.compressedSize) }) }} = {{ i18n.tsx._uploader.savedXPercent({ x: Math.round((1 - ctx.compressedSize / ctx.file.size) * 100) }) }})</span> - </div> - <div> - </div> - </div> - <div :class="$style.itemIconWrapper"> - <MkSystemIcon v-if="ctx.uploading" :class="$style.itemIcon" type="waiting"/> - <MkSystemIcon v-else-if="ctx.uploaded" :class="$style.itemIcon" type="success"/> - <MkSystemIcon v-else-if="ctx.uploadFailed" :class="$style.itemIcon" type="error"/> - </div> - </div> - </div> - </div> + <MkUploaderItems :items="items" @showMenu="(item, ev) => showPerItemMenu(item, ev)" @showMenuViaContextmenu="(item, ev) => showPerItemMenuViaContextmenu(item, ev)"/> <div v-if="props.multiple"> <MkButton style="margin: auto;" :iconOnly="true" rounded @click="chooseFile($event)"><i class="ti ti-plus"></i></MkButton> </div> - <MkSelect - v-if="items.length > 0" - v-model="compressionLevel" - :items="[ - { value: 0, label: i18n.ts.none }, - { value: 1, label: i18n.ts.low }, - { value: 2, label: i18n.ts.middle }, - { value: 3, label: i18n.ts.high }, - ]" - > - <template #label>{{ i18n.ts.compress }}</template> - </MkSelect> - <div>{{ i18n.tsx._uploader.maxFileSizeIsX({ x: $i.policies.maxFileSizeMb + 'MB' }) }}</div> <!-- ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§æ¤œå‡ºã™ã‚‹MIME typeã¨ã‚µãƒ¼ãƒãƒ¼ã§æ¤œå‡ºã™ã‚‹MIME typeãŒç•°ãªã‚‹å ´åˆãŒã‚ã‚Šã€æ··ä¹±ã®å…ƒã«ãªã‚‹ã®ã§ã¨ã‚Šã‚ãˆãšéš ã—ã¨ã --> @@ -82,8 +39,8 @@ SPDX-License-Identifier: AGPL-3.0-only <template #footer> <div class="_buttonsCenter"> - <MkButton v-if="isUploading" rounded @click="abortWithConfirm()"><i class="ti ti-x"></i> {{ i18n.ts.abort }}</MkButton> - <MkButton v-else-if="!firstUploadAttempted" primary rounded @click="upload()"><i class="ti ti-upload"></i> {{ i18n.ts.upload }}</MkButton> + <MkButton v-if="uploader.uploading.value" rounded @click="abortWithConfirm()"><i class="ti ti-x"></i> {{ i18n.ts.abort }}</MkButton> + <MkButton v-else-if="!firstUploadAttempted" primary rounded :disabled="!uploader.readyForUpload.value" @click="upload()"><i class="ti ti-upload"></i> {{ i18n.ts.upload }}</MkButton> <MkButton v-if="canRetry" rounded @click="upload()"><i class="ti ti-reload"></i> {{ i18n.ts.retry }}</MkButton> <MkButton v-if="canDone" rounded @click="done()"><i class="ti ti-arrow-right"></i> {{ i18n.ts.done }}</MkButton> @@ -93,48 +50,24 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <script lang="ts" setup> -import { computed, markRaw, onMounted, ref, useTemplateRef, watch } from 'vue'; +import { computed, onMounted, ref, useTemplateRef, watch } from 'vue'; import * as Misskey from 'misskey-js'; -import { v4 as uuid } from 'uuid'; -import { readAndCompressImage } from '@misskey-dev/browser-image-resizer'; -import isAnimated from 'is-file-animated'; -import type { MenuItem } from '@/types/menu.js'; +import type { UploaderFeatures, UploaderItem } from '@/composables/use-uploader.js'; import MkModalWindow from '@/components/MkModalWindow.vue'; import { i18n } from '@/i18n.js'; -import { prefer } from '@/preferences.js'; import MkButton from '@/components/MkButton.vue'; -import bytes from '@/filters/bytes.js'; -import MkSelect from '@/components/MkSelect.vue'; -import { isWebpSupported } from '@/utility/isWebpSupported.js'; -import { uploadFile, UploadAbortedError } from '@/utility/drive.js'; import * as os from '@/os.js'; import { ensureSignin } from '@/i.js'; +import { useUploader } from '@/composables/use-uploader.js'; +import MkUploaderItems from '@/components/MkUploaderItems.vue'; const $i = ensureSignin(); -const COMPRESSION_SUPPORTED_TYPES = [ - 'image/jpeg', - 'image/png', - 'image/webp', - 'image/svg+xml', -]; - -const CROPPING_SUPPORTED_TYPES = [ - 'image/jpeg', - 'image/png', - 'image/webp', -]; - -const mimeTypeMap = { - 'image/webp': 'webp', - 'image/jpeg': 'jpg', - 'image/png': 'png', -} as const; - const props = withDefaults(defineProps<{ files: File[]; folderId?: string | null; multiple?: boolean; + features?: UploaderFeatures; }>(), { multiple: true, }); @@ -145,27 +78,22 @@ const emit = defineEmits<{ (ev: 'closed'): void; }>(); -const items = ref<{ - id: string; - name: string; - progress: { max: number; value: number } | null; - thumbnail: string; - waiting: boolean; - uploading: boolean; - uploaded: Misskey.entities.DriveFile | null; - uploadFailed: boolean; - aborted: boolean; - compressedSize?: number | null; - compressedImage?: Blob | null; - file: File; - abort?: (() => void) | null; -}[]>([]); - const dialog = useTemplateRef('dialog'); +const uploader = useUploader({ + multiple: props.multiple, + folderId: props.folderId, + features: props.features, +}); + +onMounted(() => { + uploader.addFiles(props.files); +}); + +const items = uploader.items; + const firstUploadAttempted = ref(false); -const isUploading = computed(() => items.value.some(item => item.uploading)); -const canRetry = computed(() => firstUploadAttempted.value && !items.value.some(item => item.uploading || item.waiting) && items.value.some(item => item.uploaded == null)); +const canRetry = computed(() => firstUploadAttempted.value && uploader.readyForUpload.value); const canDone = computed(() => items.value.some(item => item.uploaded != null)); const overallProgress = computed(() => { const max = items.value.length; @@ -178,28 +106,6 @@ const overallProgress = computed(() => { return Math.round((v / max) * 100); }); -const compressionLevel = ref<0 | 1 | 2 | 3>(2); -const compressionSettings = computed(() => { - if (compressionLevel.value === 1) { - return { - maxWidth: 2000, - maxHeight: 2000, - }; - } else if (compressionLevel.value === 2) { - return { - maxWidth: 2000 * 0.75, // =1500 - maxHeight: 2000 * 0.75, // =1500 - }; - } else if (compressionLevel.value === 3) { - return { - maxWidth: 2000 * 0.75 * 0.75, // =1125 - maxHeight: 2000 * 0.75 * 0.75, // =1125 - }; - } else { - return null; - } -}); - watch(items, () => { if (items.value.length === 0) { emit('canceled'); @@ -222,11 +128,16 @@ async function cancel() { }); if (canceled) return; - abortAll(); + uploader.abortAll(); emit('canceled'); dialog.value?.close(); } +function upload() { + firstUploadAttempted.value = true; + uploader.upload(); +} + async function abortWithConfirm() { const { canceled } = await os.confirm({ type: 'question', @@ -236,11 +147,11 @@ async function abortWithConfirm() { }); if (canceled) return; - abortAll(); + uploader.abortAll(); } async function done() { - if (items.value.some(item => item.uploaded == null)) { + if (!uploader.allItemsUploaded.value) { const { canceled } = await os.confirm({ type: 'question', text: i18n.ts._uploader.doneConfirm, @@ -254,194 +165,20 @@ async function done() { dialog.value?.close(); } -function showMenu(ev: MouseEvent, item: typeof items.value[0]) { - const menu: MenuItem[] = []; - - menu.push({ - icon: 'ti ti-cursor-text', - text: i18n.ts.rename, - action: async () => { - const { result, canceled } = await os.inputText({ - type: 'text', - title: i18n.ts.rename, - placeholder: item.name, - default: item.name, - }); - if (canceled) return; - if (result.trim() === '') return; - - item.name = result; - }, - }); - - if (CROPPING_SUPPORTED_TYPES.includes(item.file.type) && !item.waiting && !item.uploading && !item.uploaded) { - menu.push({ - icon: 'ti ti-crop', - text: i18n.ts.cropImage, - action: async () => { - const cropped = await os.cropImageFile(item.file, { aspectRatio: null }); - items.value.splice(items.value.indexOf(item), 1, { - ...item, - file: markRaw(cropped), - thumbnail: window.URL.createObjectURL(cropped), - }); - }, - }); - } - - if (!item.waiting && !item.uploading && !item.uploaded) { - menu.push({ - icon: 'ti ti-x', - text: i18n.ts.remove, - action: () => { - items.value.splice(items.value.indexOf(item), 1); - }, - }); - } else if (item.uploading) { - menu.push({ - icon: 'ti ti-cloud-pause', - text: i18n.ts.abort, - danger: true, - action: () => { - if (item.abort != null) { - item.abort(); - } - }, - }); - } - - os.popupMenu(menu, ev.currentTarget ?? ev.target); -} - -async function upload() { // エラーãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ãªã©ã‚’考慮ã—ã¦ã‚·ãƒ¼ã‚±ãƒ³ã‚·ãƒ£ãƒ«ã«ã‚„ã‚‹ - firstUploadAttempted.value = true; - - items.value = items.value.map(item => ({ - ...item, - aborted: false, - uploadFailed: false, - waiting: false, - uploading: false, - })); - - for (const item of items.value.filter(item => item.uploaded == null)) { - // アップãƒãƒ¼ãƒ‰å‡¦ç†é€”ä¸ã§å€¤ãŒå¤‰ã‚ã‚‹å ´åˆï¼ˆé€”ä¸ã§å…¨ã‚ャンセルã•れãŸã‚Šãªã©ï¼‰ã‚‚ã‚ã‚‹ã®ã§ã€Array filterã§ã¯ãªãã“ã“ã§ãƒã‚§ãƒƒã‚¯ - if (item.aborted) { - continue; - } - - item.waiting = true; - item.uploadFailed = false; - - const shouldCompress = item.compressedImage == null && compressionLevel.value !== 0 && compressionSettings.value && COMPRESSION_SUPPORTED_TYPES.includes(item.file.type) && !(await isAnimated(item.file)); - - if (shouldCompress) { - const config = { - mimeType: isWebpSupported() ? 'image/webp' : 'image/jpeg', - maxWidth: compressionSettings.value.maxWidth, - maxHeight: compressionSettings.value.maxHeight, - quality: isWebpSupported() ? 0.85 : 0.8, - }; - - try { - const result = await readAndCompressImage(item.file, config); - if (result.size < item.file.size || item.file.type === 'image/webp') { - // The compression may not always reduce the file size - // (and WebP is not browser safe yet) - item.compressedImage = markRaw(result); - item.compressedSize = result.size; - item.name = item.file.type !== config.mimeType ? `${item.name}.${mimeTypeMap[config.mimeType]}` : item.name; - } - } catch (err) { - console.error('Failed to resize image', err); - } - } - - item.uploading = true; - - const { filePromise, abort } = uploadFile(item.compressedImage ?? item.file, { - name: item.name, - folderId: props.folderId, - onProgress: (progress) => { - item.waiting = false; - if (item.progress == null) { - item.progress = { max: progress.total, value: progress.loaded }; - } else { - item.progress.value = progress.loaded; - item.progress.max = progress.total; - } - }, - }); - - item.abort = () => { - item.abort = null; - abort(); - item.uploading = false; - item.waiting = false; - item.uploadFailed = true; - }; - - await filePromise.then((file) => { - item.uploaded = file; - item.abort = null; - }).catch(err => { - item.uploadFailed = true; - item.progress = null; - if (!(err instanceof UploadAbortedError)) { - throw err; - } - }).finally(() => { - item.uploading = false; - item.waiting = false; - }); - } -} - -function abortAll() { - for (const item of items.value) { - if (item.uploaded != null) { - continue; - } - - if (item.abort != null) { - item.abort(); - } - item.aborted = true; - item.uploadFailed = true; - } -} - async function chooseFile(ev: MouseEvent) { const newFiles = await os.chooseFileFromPc({ multiple: true }); - - for (const file of newFiles) { - initializeFile(file); - } + uploader.addFiles(newFiles); } -function initializeFile(file: File) { - const id = uuid(); - const filename = file.name ?? 'untitled'; - const extension = filename.split('.').length > 1 ? '.' + filename.split('.').pop() : ''; - items.value.push({ - id, - name: prefer.s.keepOriginalFilename ? filename : id + extension, - progress: null, - thumbnail: window.URL.createObjectURL(file), - waiting: false, - uploading: false, - aborted: false, - uploaded: null, - uploadFailed: false, - file: markRaw(file), - }); +function showPerItemMenu(item: UploaderItem, ev: MouseEvent) { + const menu = uploader.getMenu(item); + os.popupMenu(menu, ev.currentTarget ?? ev.target); } -onMounted(() => { - for (const file of props.files) { - initializeFile(file); - } -}); +function showPerItemMenuViaContextmenu(item: UploaderItem, ev: MouseEvent) { + const menu = uploader.getMenu(item); + os.contextMenu(menu, ev); +} </script> <style lang="scss" module> @@ -463,127 +200,4 @@ onMounted(() => { background: var(--MI_THEME-warn); } } - -.item { - position: relative; - border-radius: 10px; - overflow: clip; - - &::before { - content: ''; - display: block; - position: absolute; - top: 0; - left: 0; - width: var(--p); - height: 100%; - background: color(from var(--MI_THEME-accent) srgb r g b / 0.5); - transition: width 0.2s ease, left 0.2s ease; - } - - &.itemWaiting { - &::after { - --c: color(from var(--MI_THEME-accent) srgb r g b / 0.25); - - content: ''; - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: linear-gradient(-45deg, transparent 25%, var(--c) 25%,var(--c) 50%, transparent 50%, transparent 75%, var(--c) 75%, var(--c)); - background-size: 25px 25px; - animation: stripe .8s infinite linear; - } - } - - &.itemCompleted { - &::before { - left: 100%; - width: var(--p); - } - - .itemBody { - color: var(--MI_THEME-accent); - } - } - - &.itemFailed { - .itemBody { - color: var(--MI_THEME-error); - } - } -} - -@keyframes stripe { - 0% { background-position-x: 0; } - 100% { background-position-x: -25px; } -} - -.itemInner { - position: relative; - z-index: 1; - padding: 8px 16px; - display: flex; - align-items: center; - gap: 12px; -} - -.itemThumbnail { - width: 70px; - height: 70px; - background-color: var(--MI_THEME-bg); - background-size: contain; - background-position: center; - background-repeat: no-repeat; - border-radius: 6px; -} - -.itemBody { - flex: 1; - min-width: 0; -} - -.itemInfo { - opacity: 0.7; - margin-top: 4px; - font-size: 90%; - display: flex; - gap: 8px; -} - -.itemIcon { - width: 35px; -} - -@container (max-width: 500px) { - .itemInner { - flex-direction: column; - gap: 8px; - } - - .itemBody { - font-size: 90%; - text-align: center; - width: 100%; - min-width: 0; - } - - .itemActionWrapper { - position: absolute; - top: 8px; - left: 8px; - } - - .itemInfo { - justify-content: center; - } - - .itemIconWrapper { - position: absolute; - top: 8px; - right: 8px; - } -} </style> diff --git a/packages/frontend/src/components/MkUploaderItems.vue b/packages/frontend/src/components/MkUploaderItems.vue new file mode 100644 index 0000000000..2d624cf344 --- /dev/null +++ b/packages/frontend/src/components/MkUploaderItems.vue @@ -0,0 +1,196 @@ +<!-- +SPDX-FileCopyrightText: syuilo and misskey-project +SPDX-License-Identifier: AGPL-3.0-only +--> + +<template> +<div :class="$style.root" class="_gaps_s"> + <div + v-for="item in props.items" + :key="item.id" + v-panel + :class="[$style.item, { [$style.itemWaiting]: item.preprocessing, [$style.itemCompleted]: item.uploaded, [$style.itemFailed]: item.uploadFailed }]" + :style="{ '--p': item.progress != null ? `${item.progress.value / item.progress.max * 100}%` : '0%' }" + @contextmenu.prevent.stop="onContextmenu(item, $event)" + > + <div :class="$style.itemInner"> + <div :class="$style.itemActionWrapper"> + <MkButton :iconOnly="true" rounded @click="emit('showMenu', item, $event)"><i class="ti ti-dots"></i></MkButton> + </div> + <div :class="$style.itemThumbnail" :style="{ backgroundImage: `url(${ item.thumbnail })` }" @click="onThumbnailClick(item, $event)"></div> + <div :class="$style.itemBody"> + <div><MkCondensedLine :minScale="2 / 3">{{ item.name }}</MkCondensedLine></div> + <div :class="$style.itemInfo"> + <span>{{ item.file.type }}</span> + <span v-if="item.compressedSize">({{ i18n.tsx._uploader.compressedToX({ x: bytes(item.compressedSize) }) }} = {{ i18n.tsx._uploader.savedXPercent({ x: Math.round((1 - item.compressedSize / item.file.size) * 100) }) }})</span> + <span v-else>{{ bytes(item.file.size) }}</span> + </div> + <div> + </div> + </div> + <div :class="$style.itemIconWrapper"> + <MkSystemIcon v-if="item.uploading" :class="$style.itemIcon" type="waiting"/> + <MkSystemIcon v-else-if="item.uploaded" :class="$style.itemIcon" type="success"/> + <MkSystemIcon v-else-if="item.uploadFailed" :class="$style.itemIcon" type="error"/> + </div> + </div> + </div> +</div> +</template> + +<script lang="ts" setup> +import { isLink } from '@@/js/is-link.js'; +import type { UploaderItem } from '@/composables/use-uploader.js'; +import { i18n } from '@/i18n.js'; +import MkButton from '@/components/MkButton.vue'; +import bytes from '@/filters/bytes.js'; + +const props = defineProps<{ + items: UploaderItem[]; +}>(); + +const emit = defineEmits<{ + (ev: 'showMenu', item: UploaderItem, event: MouseEvent): void; + (ev: 'showMenuViaContextmenu', item: UploaderItem, event: MouseEvent): void; +}>(); + +function onContextmenu(item: UploaderItem, ev: MouseEvent) { + if (ev.target && isLink(ev.target as HTMLElement)) return; + if (window.getSelection()?.toString() !== '') return; + + emit('showMenuViaContextmenu', item, ev); +} + +function onThumbnailClick(item: UploaderItem, ev: MouseEvent) { + // TODO: preview when item is image +} +</script> + +<style lang="scss" module> +.root { + position: relative; +} + +.item { + position: relative; + border-radius: 10px; + overflow: clip; + + &::before { + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: var(--p); + height: 100%; + background: color(from var(--MI_THEME-accent) srgb r g b / 0.5); + transition: width 0.2s ease, left 0.2s ease; + } + + &.itemWaiting { + &::after { + --c: color(from var(--MI_THEME-accent) srgb r g b / 0.25); + + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: linear-gradient(-45deg, transparent 25%, var(--c) 25%,var(--c) 50%, transparent 50%, transparent 75%, var(--c) 75%, var(--c)); + background-size: 25px 25px; + animation: stripe .8s infinite linear; + } + } + + &.itemCompleted { + &::before { + left: 100%; + width: var(--p); + } + + .itemBody { + color: var(--MI_THEME-accent); + } + } + + &.itemFailed { + .itemBody { + color: var(--MI_THEME-error); + } + } +} + +@keyframes stripe { + 0% { background-position-x: 0; } + 100% { background-position-x: -25px; } +} + +.itemInner { + position: relative; + z-index: 1; + padding: 8px 16px; + display: flex; + align-items: center; + gap: 12px; +} + +.itemThumbnail { + width: 70px; + height: 70px; + background-color: var(--MI_THEME-bg); + background-size: contain; + background-position: center; + background-repeat: no-repeat; + border-radius: 6px; +} + +.itemBody { + flex: 1; + min-width: 0; +} + +.itemInfo { + opacity: 0.7; + margin-top: 4px; + font-size: 90%; + display: flex; + gap: 8px; +} + +.itemIcon { + width: 35px; +} + +@container (max-width: 500px) { + .itemInner { + flex-direction: column; + gap: 8px; + } + + .itemBody { + font-size: 90%; + text-align: center; + width: 100%; + min-width: 0; + } + + .itemActionWrapper { + position: absolute; + top: 8px; + left: 8px; + } + + .itemInfo { + justify-content: center; + } + + .itemIconWrapper { + position: absolute; + top: 8px; + right: 8px; + } +} +</style> diff --git a/packages/frontend/src/components/MkWatermarkEditorDialog.Layer.vue b/packages/frontend/src/components/MkWatermarkEditorDialog.Layer.vue new file mode 100644 index 0000000000..11ae091d90 --- /dev/null +++ b/packages/frontend/src/components/MkWatermarkEditorDialog.Layer.vue @@ -0,0 +1,325 @@ +<!-- +SPDX-FileCopyrightText: syuilo and misskey-project +SPDX-License-Identifier: AGPL-3.0-only +--> + +<template> +<div :class="$style.root" class="_gaps"> + <template v-if="layer.type === 'text'"> + <MkInput v-model="layer.text"> + <template #label>{{ i18n.ts._watermarkEditor.text }}</template> + </MkInput> + + <FormSlot> + <template #label>{{ i18n.ts._watermarkEditor.position }}</template> + <MkPositionSelector + v-model:x="layer.align.x" + v-model:y="layer.align.y" + ></MkPositionSelector> + </FormSlot> + + <MkRange + v-model="layer.scale" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.scale }}</template> + </MkRange> + + <MkRange + v-model="layer.angle" + :min="-1" + :max="1" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.angle }}</template> + </MkRange> + + <MkRange + v-model="layer.opacity" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.opacity }}</template> + </MkRange> + + <MkSwitch v-model="layer.repeat"> + <template #label>{{ i18n.ts._watermarkEditor.repeat }}</template> + </MkSwitch> + </template> + + <template v-else-if="layer.type === 'image'"> + <MkButton inline rounded primary @click="chooseFile">{{ i18n.ts.selectFile }}</MkButton> + + <FormSlot> + <template #label>{{ i18n.ts._watermarkEditor.position }}</template> + <MkPositionSelector + v-model:x="layer.align.x" + v-model:y="layer.align.y" + ></MkPositionSelector> + </FormSlot> + + <MkRange + v-model="layer.scale" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.scale }}</template> + </MkRange> + + <MkRange + v-model="layer.angle" + :min="-1" + :max="1" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.angle }}</template> + </MkRange> + + <MkRange + v-model="layer.opacity" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.opacity }}</template> + </MkRange> + + <MkSwitch v-model="layer.repeat"> + <template #label>{{ i18n.ts._watermarkEditor.repeat }}</template> + </MkSwitch> + + <MkSwitch v-model="layer.cover"> + <template #label>{{ i18n.ts._watermarkEditor.cover }}</template> + </MkSwitch> + </template> + + <template v-else-if="layer.type === 'stripe'"> + <MkRange + v-model="layer.frequency" + :min="1" + :max="30" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.stripeFrequency }}</template> + </MkRange> + + <MkRange + v-model="layer.threshold" + :min="0" + :max="1" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.stripeWidth }}</template> + </MkRange> + + <MkRange + v-model="layer.angle" + :min="-1" + :max="1" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.angle }}</template> + </MkRange> + + <MkRange + v-model="layer.opacity" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.opacity }}</template> + </MkRange> + </template> + + <template v-else-if="layer.type === 'polkadot'"> + <MkRange + v-model="layer.angle" + :min="-1" + :max="1" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.angle }}</template> + </MkRange> + + <MkRange + v-model="layer.scale" + :min="0" + :max="10" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.scale }}</template> + </MkRange> + + <MkRange + v-model="layer.majorRadius" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.polkadotMainDotRadius }}</template> + </MkRange> + + <MkRange + v-model="layer.majorOpacity" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.polkadotMainDotOpacity }}</template> + </MkRange> + + <MkRange + v-model="layer.minorDivisions" + :min="0" + :max="16" + :step="1" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.polkadotSubDotDivisions }}</template> + </MkRange> + + <MkRange + v-model="layer.minorRadius" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.polkadotSubDotRadius }}</template> + </MkRange> + + <MkRange + v-model="layer.minorOpacity" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.polkadotSubDotOpacity }}</template> + </MkRange> + </template> + + <template v-else-if="layer.type === 'checker'"> + <MkRange + v-model="layer.angle" + :min="-1" + :max="1" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.angle }}</template> + </MkRange> + + <MkRange + v-model="layer.scale" + :min="0" + :max="10" + :step="0.01" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.scale }}</template> + </MkRange> + + <MkRange + v-model="layer.opacity" + :min="0" + :max="1" + :step="0.01" + :textConverter="(v) => (v * 100).toFixed(1) + '%'" + continuousUpdate + > + <template #label>{{ i18n.ts._watermarkEditor.opacity }}</template> + </MkRange> + </template> +</div> +</template> + +<script setup lang="ts"> +import { ref, onMounted } from 'vue'; +import * as Misskey from 'misskey-js'; +import type { WatermarkPreset } from '@/utility/watermark.js'; +import { i18n } from '@/i18n.js'; +import MkButton from '@/components/MkButton.vue'; +import MkInput from '@/components/MkInput.vue'; +import MkSwitch from '@/components/MkSwitch.vue'; +import MkRange from '@/components/MkRange.vue'; +import FormSlot from '@/components/form/slot.vue'; +import MkPositionSelector from '@/components/MkPositionSelector.vue'; +import * as os from '@/os.js'; +import { selectFile } from '@/utility/drive.js'; +import { misskeyApi } from '@/utility/misskey-api.js'; + +const layer = defineModel<WatermarkPreset['layers'][number]>('layer', { required: true }); + +const driveFile = ref<Misskey.entities.DriveFile | null>(null); +const driveFileError = ref(false); +onMounted(async () => { + if (layer.value.type === 'image' && layer.value.imageId != null) { + await misskeyApi('drive/files/show', { + fileId: layer.value.imageId, + }).then((res) => { + driveFile.value = res; + }).catch((err) => { + driveFileError.value = true; + }); + } +}); + +function chooseFile(ev: MouseEvent) { + selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + label: i18n.ts.selectFile, + features: { + watermark: false, + }, + }).then((file) => { + if (layer.value.type !== 'image') return; + if (!file.type.startsWith('image')) { + os.alert({ + type: 'warning', + title: i18n.ts._watermarkEditor.driveFileTypeWarn, + text: i18n.ts._watermarkEditor.driveFileTypeWarnDescription, + }); + return; + } + + layer.value.imageId = file.id; + layer.value.imageUrl = file.url; + driveFileError.value = false; + }); +} +</script> + +<style module> +.root { + +} +</style> diff --git a/packages/frontend/src/components/MkWatermarkEditorDialog.vue b/packages/frontend/src/components/MkWatermarkEditorDialog.vue new file mode 100644 index 0000000000..206298b194 --- /dev/null +++ b/packages/frontend/src/components/MkWatermarkEditorDialog.vue @@ -0,0 +1,456 @@ +<!-- +SPDX-FileCopyrightText: syuilo and misskey-project +SPDX-License-Identifier: AGPL-3.0-only +--> + +<template> +<MkModalWindow + ref="dialog" + :width="1000" + :height="600" + :scroll="false" + :withOkButton="true" + @close="cancel()" + @ok="save()" + @closed="emit('closed')" +> + <template #header><i class="ti ti-copyright"></i> {{ i18n.ts._watermarkEditor.title }}</template> + + <div :class="$style.root"> + <div :class="$style.container"> + <div :class="$style.preview"> + <canvas ref="canvasEl" :class="$style.previewCanvas"></canvas> + <div :class="$style.previewContainer"> + <div class="_acrylic" :class="$style.previewTitle">{{ i18n.ts.preview }}</div> + <div v-if="props.image == null" class="_acrylic" :class="$style.previewControls"> + <button class="_button" :class="[$style.previewControlsButton, sampleImageType === '3_2' ? $style.active : null]" @click="sampleImageType = '3_2'"><i class="ti ti-crop-landscape"></i></button> + <button class="_button" :class="[$style.previewControlsButton, sampleImageType === '2_3' ? $style.active : null]" @click="sampleImageType = '2_3'"><i class="ti ti-crop-portrait"></i></button> + </div> + </div> + </div> + <div :class="$style.controls"> + <div class="_spacer _gaps"> + <MkSelect v-model="type" :items="[{ label: i18n.ts._watermarkEditor.text, value: 'text' }, { label: i18n.ts._watermarkEditor.image, value: 'image' }, { label: i18n.ts._watermarkEditor.advanced, value: 'advanced' }]"> + <template #label>{{ i18n.ts._watermarkEditor.type }}</template> + </MkSelect> + + <div v-if="type === 'text' || type === 'image'"> + <XLayer + v-for="(layer, i) in preset.layers" + :key="layer.id" + v-model:layer="preset.layers[i]" + ></XLayer> + </div> + <div v-else-if="type === 'advanced'" class="_gaps_s"> + <MkFolder v-for="(layer, i) in preset.layers" :key="layer.id" :defaultOpen="false" :canPage="false"> + <template #label> + <div v-if="layer.type === 'text'">{{ i18n.ts._watermarkEditor.text }}</div> + <div v-if="layer.type === 'image'">{{ i18n.ts._watermarkEditor.image }}</div> + <div v-if="layer.type === 'stripe'">{{ i18n.ts._watermarkEditor.stripe }}</div> + <div v-if="layer.type === 'polkadot'">{{ i18n.ts._watermarkEditor.polkadot }}</div> + <div v-if="layer.type === 'checker'">{{ i18n.ts._watermarkEditor.checker }}</div> + </template> + <template #footer> + <div class="_buttons"> + <MkButton iconOnly @click="removeLayer(layer)"><i class="ti ti-trash"></i></MkButton> + <MkButton iconOnly @click="swapUpLayer(layer)"><i class="ti ti-arrow-up"></i></MkButton> + <MkButton iconOnly @click="swapDownLayer(layer)"><i class="ti ti-arrow-down"></i></MkButton> + </div> + </template> + + <XLayer + v-model:layer="preset.layers[i]" + ></XLayer> + </MkFolder> + + <MkButton rounded primary style="margin: 0 auto;" @click="addLayer"><i class="ti ti-plus"></i></MkButton> + </div> + </div> + </div> + </div> + </div> +</MkModalWindow> +</template> + +<script setup lang="ts"> +import { ref, useTemplateRef, watch, onMounted, onUnmounted, reactive, nextTick } from 'vue'; +import type { WatermarkPreset } from '@/utility/watermark.js'; +import { WatermarkRenderer } from '@/utility/watermark.js'; +import { i18n } from '@/i18n.js'; +import MkModalWindow from '@/components/MkModalWindow.vue'; +import MkSelect from '@/components/MkSelect.vue'; +import MkButton from '@/components/MkButton.vue'; +import MkFolder from '@/components/MkFolder.vue'; +import XLayer from '@/components/MkWatermarkEditorDialog.Layer.vue'; +import * as os from '@/os.js'; +import { deepClone } from '@/utility/clone.js'; +import { ensureSignin } from '@/i.js'; +import { genId } from '@/utility/id.js'; + +const $i = ensureSignin(); + +function createTextLayer(): WatermarkPreset['layers'][number] { + return { + id: genId(), + type: 'text', + text: `(c) @${$i.username}`, + align: { x: 'right', y: 'bottom' }, + scale: 0.3, + angle: 0, + opacity: 0.75, + repeat: false, + }; +} + +function createImageLayer(): WatermarkPreset['layers'][number] { + return { + id: genId(), + type: 'image', + imageId: null, + imageUrl: null, + align: { x: 'right', y: 'bottom' }, + scale: 0.3, + angle: 0, + opacity: 0.75, + repeat: false, + cover: false, + }; +} + +function createStripeLayer(): WatermarkPreset['layers'][number] { + return { + id: genId(), + type: 'stripe', + angle: 0.5, + frequency: 10, + threshold: 0.1, + color: [1, 1, 1], + opacity: 0.75, + }; +} + +function createPolkadotLayer(): WatermarkPreset['layers'][number] { + return { + id: genId(), + type: 'polkadot', + angle: 0.5, + scale: 3, + majorRadius: 0.1, + minorRadius: 0.25, + majorOpacity: 0.75, + minorOpacity: 0.5, + minorDivisions: 4, + color: [1, 1, 1], + opacity: 0.75, + }; +} + +function createCheckerLayer(): WatermarkPreset['layers'][number] { + return { + id: genId(), + type: 'checker', + angle: 0.5, + scale: 3, + color: [1, 1, 1], + opacity: 0.75, + }; +} + +const props = defineProps<{ + preset?: WatermarkPreset | null; + image?: File | null; +}>(); + +const preset = reactive<WatermarkPreset>(deepClone(props.preset) ?? { + id: genId(), + name: '', + layers: [createTextLayer()], +}); + +const emit = defineEmits<{ + (ev: 'ok', preset: WatermarkPreset): void; + (ev: 'cancel'): void; + (ev: 'closed'): void; +}>(); + +const dialog = useTemplateRef('dialog'); + +async function cancel() { + const { canceled } = await os.confirm({ + type: 'question', + text: i18n.ts._watermarkEditor.quitWithoutSaveConfirm, + }); + if (canceled) return; + + emit('cancel'); + dialog.value?.close(); +} + +const type = ref(preset.layers.length > 1 ? 'advanced' : preset.layers[0].type); +watch(type, () => { + if (type.value === 'text') { + preset.layers = [createTextLayer()]; + } else if (type.value === 'image') { + preset.layers = [createImageLayer()]; + } else if (type.value === 'advanced') { + // nop + } +}); + +watch(preset, async (newValue, oldValue) => { + if (renderer != null) { + renderer.setLayers(preset.layers); + } +}, { deep: true }); + +const canvasEl = useTemplateRef('canvasEl'); + +const sampleImage_3_2 = new Image(); +sampleImage_3_2.src = '/client-assets/sample/3-2.jpg'; +const sampleImage_3_2_loading = new Promise<void>(resolve => { + sampleImage_3_2.onload = () => resolve(); +}); + +const sampleImage_2_3 = new Image(); +sampleImage_2_3.src = '/client-assets/sample/2-3.jpg'; +const sampleImage_2_3_loading = new Promise<void>(resolve => { + sampleImage_2_3.onload = () => resolve(); +}); + +const sampleImageType = ref(props.image != null ? 'provided' : '3_2'); +watch(sampleImageType, async () => { + if (renderer != null) { + renderer.destroy(false); + renderer = null; + initRenderer(); + } +}); + +let renderer: WatermarkRenderer | null = null; +let imageBitmap: ImageBitmap | null = null; + +async function initRenderer() { + if (canvasEl.value == null) return; + + if (sampleImageType.value === '3_2') { + renderer = new WatermarkRenderer({ + canvas: canvasEl.value, + renderWidth: 1500, + renderHeight: 1000, + image: sampleImage_3_2, + }); + } else if (sampleImageType.value === '2_3') { + renderer = new WatermarkRenderer({ + canvas: canvasEl.value, + renderWidth: 1000, + renderHeight: 1500, + image: sampleImage_2_3, + }); + } else if (props.image != null) { + imageBitmap = await window.createImageBitmap(props.image); + + const MAX_W = 1000; + const MAX_H = 1000; + let w = imageBitmap.width; + let h = imageBitmap.height; + + if (w > MAX_W || h > MAX_H) { + const scale = Math.min(MAX_W / w, MAX_H / h); + w *= scale; + h *= scale; + } + + renderer = new WatermarkRenderer({ + canvas: canvasEl.value, + renderWidth: w, + renderHeight: h, + image: imageBitmap, + }); + } + + await renderer!.setLayers(preset.layers); + + renderer!.render(); +} + +onMounted(async () => { + const closeWaiting = os.waiting(); + + await nextTick(); // waitingãŒãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れるã¾ã§å¾…㤠+ + await sampleImage_3_2_loading; + await sampleImage_2_3_loading; + + await initRenderer(); + + closeWaiting(); +}); + +onUnmounted(() => { + if (renderer != null) { + renderer.destroy(); + renderer = null; + } + if (imageBitmap != null) { + imageBitmap.close(); + imageBitmap = null; + } +}); + +async function save() { + const { canceled, result: name } = await os.inputText({ + title: i18n.ts.name, + default: preset.name, + }); + if (canceled) return; + + preset.name = name || ''; + + dialog.value?.close(); + if (renderer != null) { + renderer.destroy(); + renderer = null; + } + + emit('ok', preset); +} + +function addLayer(ev: MouseEvent) { + os.popupMenu([{ + text: i18n.ts._watermarkEditor.text, + action: () => { + preset.layers.push(createTextLayer()); + }, + }, { + text: i18n.ts._watermarkEditor.image, + action: () => { + preset.layers.push(createImageLayer()); + }, + }, { + text: i18n.ts._watermarkEditor.stripe, + action: () => { + preset.layers.push(createStripeLayer()); + }, + }, { + text: i18n.ts._watermarkEditor.polkadot, + action: () => { + preset.layers.push(createPolkadotLayer()); + }, + }, { + text: i18n.ts._watermarkEditor.checker, + action: () => { + preset.layers.push(createCheckerLayer()); + }, + }], ev.currentTarget ?? ev.target); +} + +function swapUpLayer(layer: WatermarkPreset['layers'][number]) { + const index = preset.layers.findIndex(l => l.id === layer.id); + if (index > 0) { + const tmp = preset.layers[index - 1]; + preset.layers[index - 1] = preset.layers[index]; + preset.layers[index] = tmp; + } +} + +function swapDownLayer(layer: WatermarkPreset['layers'][number]) { + const index = preset.layers.findIndex(l => l.id === layer.id); + if (index < preset.layers.length - 1) { + const tmp = preset.layers[index + 1]; + preset.layers[index + 1] = preset.layers[index]; + preset.layers[index] = tmp; + } +} + +function removeLayer(layer: WatermarkPreset['layers'][number]) { + preset.layers = preset.layers.filter(l => l.id !== layer.id); +} +</script> + +<style module> +.root { + container-type: inline-size; + height: 100%; +} + +.container { + height: 100%; + display: grid; + grid-template-columns: 1fr 400px; +} + +.preview { + position: relative; + background-color: var(--MI_THEME-bg); + background-size: auto auto; + background-image: repeating-linear-gradient(135deg, transparent, transparent 6px, var(--MI_THEME-panel) 6px, var(--MI_THEME-panel) 12px); +} + +.previewContainer { + display: flex; + flex-direction: column; + height: 100%; + user-select: none; + -webkit-user-drag: none; +} + +.previewTitle { + position: absolute; + z-index: 100; + top: 8px; + left: 8px; + padding: 6px 10px; + border-radius: 6px; + font-size: 85%; +} + +.previewControls { + position: absolute; + z-index: 100; + bottom: 8px; + right: 8px; + display: flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + border-radius: 6px; +} + +.previewControlsButton { + &.active { + color: var(--MI_THEME-accent); + } +} + +.previewSpinner { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + pointer-events: none; + user-select: none; + -webkit-user-drag: none; +} + +.previewCanvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 20px; + box-sizing: border-box; + object-fit: contain; +} + +.controls { + overflow-y: scroll; +} + +@container (max-width: 800px) { + .container { + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr; + } +} +</style> diff --git a/packages/frontend/src/components/MkWidgets.vue b/packages/frontend/src/components/MkWidgets.vue index 44f6921a85..f606b0b001 100644 --- a/packages/frontend/src/components/MkWidgets.vue +++ b/packages/frontend/src/components/MkWidgets.vue @@ -51,7 +51,7 @@ export type DefaultStoredWidget = { <script lang="ts" setup> import { defineAsyncComponent, ref, computed } from 'vue'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import MkSelect from '@/components/MkSelect.vue'; import MkButton from '@/components/MkButton.vue'; import { widgets as widgetDefs, federationWidgets } from '@/widgets/index.js'; @@ -95,7 +95,7 @@ const addWidget = () => { emit('addWidget', { name: widgetAdderSelected.value, - id: uuid(), + id: genId(), data: {}, }); diff --git a/packages/frontend/src/components/global/MkTip.vue b/packages/frontend/src/components/global/MkTip.vue index 384511a0ed..231957a232 100644 --- a/packages/frontend/src/components/global/MkTip.vue +++ b/packages/frontend/src/components/global/MkTip.vue @@ -7,7 +7,10 @@ SPDX-License-Identifier: AGPL-3.0-only <div v-if="!store.r.tips.value[props.k]" :class="[$style.root, { [$style.warn]: warn }]" class="_selectable _gaps_s"> <div style="font-weight: bold;"><i class="ti ti-bulb"></i> {{ i18n.ts.tip }}:</div> <div><slot></slot></div> - <MkButton primary rounded small @click="closeTip()"><i class="ti ti-check"></i> {{ i18n.ts.gotIt }}</MkButton> + <div> + <MkButton inline primary rounded small @click="_closeTip()"><i class="ti ti-check"></i> {{ i18n.ts.gotIt }}</MkButton> + <button class="_button" style="padding: 8px; margin-left: 4px;" @click="showMenu"><i class="ti ti-dots"></i></button> + </div> </div> </template> @@ -15,19 +18,30 @@ SPDX-License-Identifier: AGPL-3.0-only import { i18n } from '@/i18n.js'; import { store } from '@/store.js'; import MkButton from '@/components/MkButton.vue'; +import * as os from '@/os.js'; +import { TIPS, hideAllTips, closeTip } from '@/tips.js'; const props = withDefaults(defineProps<{ - k: keyof (typeof store['s']['tips']); + k: typeof TIPS[number]; warn?: boolean; }>(), { warn: false, }); -function closeTip() { - store.set('tips', { - ...store.r.tips.value, - [props.k]: true, - }); +function _closeTip() { + closeTip(props.k); +} + +function showMenu(ev: MouseEvent) { + os.popupMenu([{ + icon: 'ti ti-bulb-off', + text: i18n.ts.hideAllTips, + danger: true, + action: () => { + hideAllTips(); + os.success(); + }, + }], ev.currentTarget ?? ev.target); } </script> diff --git a/packages/frontend/src/composables/use-chart-tooltip.ts b/packages/frontend/src/composables/use-chart-tooltip.ts index bba64fc6ee..a42f70ba02 100644 --- a/packages/frontend/src/composables/use-chart-tooltip.ts +++ b/packages/frontend/src/composables/use-chart-tooltip.ts @@ -25,7 +25,14 @@ export function useChartTooltip(opts: { position: 'top' | 'middle' } = { positio series: tooltipSeries, }, {}); + function windowTouchendHandler() { + tooltipShowing.value = false; + } + + window.addEventListener('touchend', windowTouchendHandler, { passive: true }); + onUnmounted(() => { + window.removeEventListener('touchend', windowTouchendHandler); disposeTooltipComponent(); }); diff --git a/packages/frontend/src/composables/use-uploader.ts b/packages/frontend/src/composables/use-uploader.ts new file mode 100644 index 0000000000..aadbc9eb41 --- /dev/null +++ b/packages/frontend/src/composables/use-uploader.ts @@ -0,0 +1,576 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import * as Misskey from 'misskey-js'; +import { readAndCompressImage } from '@misskey-dev/browser-image-resizer'; +import isAnimated from 'is-file-animated'; +import { EventEmitter } from 'eventemitter3'; +import { computed, markRaw, onMounted, onUnmounted, ref, triggerRef } from 'vue'; +import type { MenuItem } from '@/types/menu.js'; +import { genId } from '@/utility/id.js'; +import { i18n } from '@/i18n.js'; +import { prefer } from '@/preferences.js'; +import { isWebpSupported } from '@/utility/isWebpSupported.js'; +import { uploadFile, UploadAbortedError } from '@/utility/drive.js'; +import * as os from '@/os.js'; +import { ensureSignin } from '@/i.js'; +import { WatermarkRenderer } from '@/utility/watermark.js'; + +export type UploaderFeatures = { + effect?: boolean; + watermark?: boolean; + crop?: boolean; +}; + +const THUMBNAIL_SUPPORTED_TYPES = [ + 'image/jpeg', + 'image/png', + 'image/webp', + 'image/svg+xml', +]; + +const IMAGE_COMPRESSION_SUPPORTED_TYPES = [ + 'image/jpeg', + 'image/png', + 'image/webp', + 'image/svg+xml', +]; + +const CROPPING_SUPPORTED_TYPES = [ + 'image/jpeg', + 'image/png', + 'image/webp', +]; + +const IMAGE_EDITING_SUPPORTED_TYPES = [ + 'image/jpeg', + 'image/png', + 'image/webp', +]; + +const WATERMARK_SUPPORTED_TYPES = IMAGE_EDITING_SUPPORTED_TYPES; + +const IMAGE_PREPROCESS_NEEDED_TYPES = [ + ...WATERMARK_SUPPORTED_TYPES, + ...IMAGE_COMPRESSION_SUPPORTED_TYPES, + ...CROPPING_SUPPORTED_TYPES, + ...IMAGE_EDITING_SUPPORTED_TYPES, +]; + +const mimeTypeMap = { + 'image/webp': 'webp', + 'image/jpeg': 'jpg', + 'image/png': 'png', +} as const; + +export type UploaderItem = { + id: string; + name: string; + uploadName?: string; + progress: { max: number; value: number } | null; + thumbnail: string | null; + preprocessing: boolean; + uploading: boolean; + uploaded: Misskey.entities.DriveFile | null; + uploadFailed: boolean; + aborted: boolean; + compressionLevel: 0 | 1 | 2 | 3; + compressedSize?: number | null; + preprocessedFile?: Blob | null; + file: File; + watermarkPresetId: string | null; + isSensitive?: boolean; + abort?: (() => void) | null; +}; + +function getCompressionSettings(level: 0 | 1 | 2 | 3) { + if (level === 1) { + return { + maxWidth: 2000, + maxHeight: 2000, + }; + } else if (level === 2) { + return { + maxWidth: 2000 * 0.75, // =1500 + maxHeight: 2000 * 0.75, // =1500 + }; + } else if (level === 3) { + return { + maxWidth: 2000 * 0.75 * 0.75, // =1125 + maxHeight: 2000 * 0.75 * 0.75, // =1125 + }; + } else { + return null; + } +} + +export function useUploader(options: { + folderId?: string | null; + multiple?: boolean; + features?: UploaderFeatures; +} = {}) { + const $i = ensureSignin(); + + const events = new EventEmitter<{ + 'itemUploaded': (ctx: { item: UploaderItem; }) => void; + }>(); + + const uploaderFeatures = computed<Required<UploaderFeatures>>(() => { + return { + effect: options.features?.effect ?? true, + watermark: options.features?.watermark ?? true, + crop: options.features?.crop ?? true, + }; + }); + + const items = ref<UploaderItem[]>([]); + + function initializeFile(file: File) { + const id = genId(); + const filename = file.name ?? 'untitled'; + const extension = filename.split('.').length > 1 ? '.' + filename.split('.').pop() : ''; + items.value.push({ + id, + name: prefer.s.keepOriginalFilename ? filename : id + extension, + progress: null, + thumbnail: THUMBNAIL_SUPPORTED_TYPES.includes(file.type) ? window.URL.createObjectURL(file) : null, + preprocessing: false, + uploading: false, + aborted: false, + uploaded: null, + uploadFailed: false, + compressionLevel: prefer.s.defaultImageCompressionLevel, + watermarkPresetId: uploaderFeatures.value.watermark ? prefer.s.defaultWatermarkPresetId : null, + file: markRaw(file), + }); + const reactiveItem = items.value.at(-1)!; + preprocess(reactiveItem).then(() => { + triggerRef(items); + }); + } + + function addFiles(newFiles: File[]) { + for (const file of newFiles) { + initializeFile(file); + } + } + + function removeItem(item: UploaderItem) { + if (item.thumbnail != null) URL.revokeObjectURL(item.thumbnail); + items.value.splice(items.value.indexOf(item), 1); + } + + function getMenu(item: UploaderItem): MenuItem[] { + const menu: MenuItem[] = []; + + if ( + !item.preprocessing && + !item.uploading && + !item.uploaded + ) { + menu.push({ + icon: 'ti ti-forms', + text: i18n.ts.rename, + action: async () => { + const { result, canceled } = await os.inputText({ + type: 'text', + title: i18n.ts.rename, + placeholder: item.name, + default: item.name, + }); + if (canceled) return; + if (result.trim() === '') return; + + item.name = result; + }, + }, { + type: 'switch', + text: i18n.ts.sensitive, + icon: 'ti ti-eye-exclamation', + ref: computed({ + get: () => item.isSensitive ?? false, + set: (value) => item.isSensitive = value, + }), + }, { + type: 'divider', + }); + } + + if ( + uploaderFeatures.value.crop && + CROPPING_SUPPORTED_TYPES.includes(item.file.type) && + !item.preprocessing && + !item.uploading && + !item.uploaded + ) { + menu.push({ + icon: 'ti ti-crop', + text: i18n.ts.cropImage, + action: async () => { + const cropped = await os.cropImageFile(item.file, { aspectRatio: null }); + if (item.thumbnail != null) URL.revokeObjectURL(item.thumbnail); + items.value.splice(items.value.indexOf(item), 1, { + ...item, + file: markRaw(cropped), + thumbnail: window.URL.createObjectURL(cropped), + }); + const reactiveItem = items.value.find(x => x.id === item.id)!; + preprocess(reactiveItem).then(() => { + triggerRef(items); + }); + }, + }); + } + + if ( + uploaderFeatures.value.effect && + IMAGE_EDITING_SUPPORTED_TYPES.includes(item.file.type) && + !item.preprocessing && + !item.uploading && + !item.uploaded + ) { + menu.push({ + icon: 'ti ti-sparkles', + text: i18n.ts._imageEffector.title + ' (BETA)', + action: async () => { + const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkImageEffectorDialog.vue').then(x => x.default), { + image: item.file, + }, { + ok: (file) => { + if (item.thumbnail != null) URL.revokeObjectURL(item.thumbnail); + items.value.splice(items.value.indexOf(item), 1, { + ...item, + file: markRaw(file), + thumbnail: window.URL.createObjectURL(file), + }); + const reactiveItem = items.value.find(x => x.id === item.id)!; + preprocess(reactiveItem).then(() => { + triggerRef(items); + }); + }, + closed: () => dispose(), + }); + }, + }); + } + + if ( + uploaderFeatures.value.watermark && + WATERMARK_SUPPORTED_TYPES.includes(item.file.type) && + !item.preprocessing && + !item.uploading && + !item.uploaded + ) { + function changeWatermarkPreset(presetId: string | null) { + item.watermarkPresetId = presetId; + preprocess(item).then(() => { + triggerRef(items); + }); + } + + menu.push({ + icon: 'ti ti-copyright', + text: i18n.ts.watermark, + caption: computed(() => item.watermarkPresetId == null ? null : prefer.s.watermarkPresets.find(p => p.id === item.watermarkPresetId)?.name), + type: 'parent', + children: [{ + type: 'radioOption', + text: i18n.ts.none, + active: computed(() => item.watermarkPresetId == null), + action: () => changeWatermarkPreset(null), + }, { + type: 'divider', + }, ...prefer.s.watermarkPresets.map(preset => ({ + type: 'radioOption' as const, + text: preset.name, + active: computed(() => item.watermarkPresetId === preset.id), + action: () => changeWatermarkPreset(preset.id), + })), ...(prefer.s.watermarkPresets.length > 0 ? [{ + type: 'divider' as const, + }] : []), { + type: 'button', + icon: 'ti ti-plus', + text: i18n.ts.add, + action: async () => { + const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkWatermarkEditorDialog.vue').then(x => x.default), { + image: item.file, + }, { + ok: (preset) => { + prefer.commit('watermarkPresets', [...prefer.s.watermarkPresets, preset]); + changeWatermarkPreset(preset.id); + }, + closed: () => dispose(), + }); + }, + }], + }); + } + + if ( + IMAGE_COMPRESSION_SUPPORTED_TYPES.includes(item.file.type) && + !item.preprocessing && + !item.uploading && + !item.uploaded + ) { + function changeCompressionLevel(level: 0 | 1 | 2 | 3) { + item.compressionLevel = level; + preprocess(item).then(() => { + triggerRef(items); + }); + } + + menu.push({ + icon: 'ti ti-leaf', + text: computed(() => { + let text = i18n.ts.compress; + + if (item.compressionLevel === 0 || item.compressionLevel == null) { + text += `: ${i18n.ts.none}`; + } else if (item.compressionLevel === 1) { + text += `: ${i18n.ts.low}`; + } else if (item.compressionLevel === 2) { + text += `: ${i18n.ts.medium}`; + } else if (item.compressionLevel === 3) { + text += `: ${i18n.ts.high}`; + } + + return text; + }), + type: 'parent', + children: [{ + type: 'radioOption', + text: i18n.ts.none, + active: computed(() => item.compressionLevel === 0 || item.compressionLevel == null), + action: () => changeCompressionLevel(0), + }, { + type: 'divider', + }, { + type: 'radioOption', + text: i18n.ts.low, + active: computed(() => item.compressionLevel === 1), + action: () => changeCompressionLevel(1), + }, { + type: 'radioOption', + text: i18n.ts.medium, + active: computed(() => item.compressionLevel === 2), + action: () => changeCompressionLevel(2), + }, { + type: 'radioOption', + text: i18n.ts.high, + active: computed(() => item.compressionLevel === 3), + action: () => changeCompressionLevel(3), + }], + }); + } + + if (!item.preprocessing && !item.uploading && !item.uploaded) { + menu.push({ + type: 'divider', + }, { + icon: 'ti ti-upload', + text: i18n.ts.upload, + action: () => { + uploadOne(item); + }, + }, { + icon: 'ti ti-x', + text: i18n.ts.remove, + danger: true, + action: () => { + removeItem(item); + }, + }); + } else if (item.uploading) { + menu.push({ + type: 'divider', + }, { + icon: 'ti ti-cloud-pause', + text: i18n.ts.abort, + danger: true, + action: () => { + if (item.abort != null) { + item.abort(); + } + }, + }); + } + + return menu; + } + + async function uploadOne(item: UploaderItem): Promise<void> { + item.uploadFailed = false; + item.uploading = true; + + const { filePromise, abort } = uploadFile(item.preprocessedFile ?? item.file, { + name: item.uploadName ?? item.name, + folderId: options.folderId, + isSensitive: item.isSensitive ?? false, + onProgress: (progress) => { + if (item.progress == null) { + item.progress = { max: progress.total, value: progress.loaded }; + } else { + item.progress.value = progress.loaded; + item.progress.max = progress.total; + } + }, + }); + + item.abort = () => { + item.abort = null; + abort(); + item.uploading = false; + item.uploadFailed = true; + }; + + await filePromise.then((file) => { + item.uploaded = file; + item.abort = null; + events.emit('itemUploaded', { item }); + }).catch(err => { + item.uploadFailed = true; + item.progress = null; + if (!(err instanceof UploadAbortedError)) { + throw err; + } + }).finally(() => { + item.uploading = false; + }); + } + + async function upload() { // エラーãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ãªã©ã‚’考慮ã—ã¦ã‚·ãƒ¼ã‚±ãƒ³ã‚·ãƒ£ãƒ«ã«ã‚„ã‚‹ + items.value = items.value.map(item => ({ + ...item, + aborted: false, + uploadFailed: false, + uploading: false, + })); + + for (const item of items.value.filter(item => item.uploaded == null)) { + // アップãƒãƒ¼ãƒ‰å‡¦ç†é€”ä¸ã§å€¤ãŒå¤‰ã‚ã‚‹å ´åˆï¼ˆé€”ä¸ã§å…¨ã‚ャンセルã•れãŸã‚Šãªã©ï¼‰ã‚‚ã‚ã‚‹ã®ã§ã€Array filterã§ã¯ãªãã“ã“ã§ãƒã‚§ãƒƒã‚¯ + if (item.aborted) { + continue; + } + + await uploadOne(item); + } + } + + function abortAll() { + for (const item of items.value) { + if (item.uploaded != null) { + continue; + } + + if (item.abort != null) { + item.abort(); + } + item.aborted = true; + item.uploadFailed = true; + } + } + + async function preprocess(item: UploaderItem): Promise<void> { + item.preprocessing = true; + + try { + if (IMAGE_PREPROCESS_NEEDED_TYPES.includes(item.file.type)) { + await preprocessForImage(item); + } + } catch (err) { + console.error('Failed to preprocess image', err); + + // nop + } + + item.preprocessing = false; + } + + async function preprocessForImage(item: UploaderItem): Promise<void> { + const imageBitmap = await window.createImageBitmap(item.file); + + let preprocessedFile: Blob | File = item.file; + + const needsWatermark = item.watermarkPresetId != null && WATERMARK_SUPPORTED_TYPES.includes(preprocessedFile.type); + const preset = prefer.s.watermarkPresets.find(p => p.id === item.watermarkPresetId); + if (needsWatermark && preset != null) { + const canvas = window.document.createElement('canvas'); + const renderer = new WatermarkRenderer({ + canvas: canvas, + renderWidth: imageBitmap.width, + renderHeight: imageBitmap.height, + image: imageBitmap, + }); + + await renderer.setLayers(preset.layers); + + renderer.render(); + + preprocessedFile = await new Promise<Blob>((resolve) => { + canvas.toBlob((blob) => { + if (blob == null) { + throw new Error('Failed to convert canvas to blob'); + } + resolve(blob); + renderer.destroy(); + }, 'image/png'); + }); + } + + const compressionSettings = getCompressionSettings(item.compressionLevel); + const needsCompress = item.compressionLevel !== 0 && compressionSettings && IMAGE_COMPRESSION_SUPPORTED_TYPES.includes(preprocessedFile.type) && !(await isAnimated(preprocessedFile)); + + if (needsCompress) { + const config = { + mimeType: isWebpSupported() ? 'image/webp' : 'image/jpeg', + maxWidth: compressionSettings.maxWidth, + maxHeight: compressionSettings.maxHeight, + quality: isWebpSupported() ? 0.85 : 0.8, + }; + + try { + const result = await readAndCompressImage(preprocessedFile, config); + if (result.size < preprocessedFile.size || preprocessedFile.type === 'image/webp') { + // The compression may not always reduce the file size + // (and WebP is not browser safe yet) + preprocessedFile = result; + item.compressedSize = result.size; + item.uploadName = preprocessedFile.type !== config.mimeType ? `${item.name}.${mimeTypeMap[config.mimeType]}` : item.name; + } + } catch (err) { + console.error('Failed to resize image', err); + } + } else { + item.compressedSize = null; + item.uploadName = item.name; + } + + imageBitmap.close(); + + if (item.thumbnail != null) URL.revokeObjectURL(item.thumbnail); + item.thumbnail = THUMBNAIL_SUPPORTED_TYPES.includes(preprocessedFile.type) ? window.URL.createObjectURL(preprocessedFile) : null; + item.preprocessedFile = markRaw(preprocessedFile); + } + + onUnmounted(() => { + for (const item of items.value) { + if (item.thumbnail != null) URL.revokeObjectURL(item.thumbnail); + } + }); + + return { + items, + addFiles, + removeItem, + abortAll, + upload, + getMenu, + uploading: computed(() => items.value.some(item => item.uploading)), + readyForUpload: computed(() => items.value.length > 0 && items.value.some(item => item.uploaded == null) && !items.value.some(item => item.uploading || item.preprocessing)), + allItemsUploaded: computed(() => items.value.every(item => item.uploaded != null)), + events, + }; +} + diff --git a/packages/frontend/src/deck.ts b/packages/frontend/src/deck.ts index c108a365b6..73a3cecd3b 100644 --- a/packages/frontend/src/deck.ts +++ b/packages/frontend/src/deck.ts @@ -5,11 +5,11 @@ import { notificationTypes } from 'misskey-js'; import { ref } from 'vue'; -import { v4 as uuid } from 'uuid'; import { i18n } from './i18n.js'; import type { BasicTimelineType } from '@/timelines.js'; import type { SoundStore } from '@/preferences/def.js'; import type { MenuItem } from '@/types/menu.js'; +import { genId } from '@/utility/id.js'; import { deepClone } from '@/utility/clone.js'; import { prefer } from '@/preferences.js'; import * as os from '@/os.js'; @@ -103,7 +103,7 @@ function addProfile(name: string) { if (prefer.s['deck.profiles'].find(p => p.name === name)) return; const newProfile: DeckProfile = { - id: uuid(), + id: genId(), name, columns: [], layout: [], diff --git a/packages/frontend/src/os.ts b/packages/frontend/src/os.ts index be247f96c4..83ad0ebdf9 100644 --- a/packages/frontend/src/os.ts +++ b/packages/frontend/src/os.ts @@ -13,6 +13,7 @@ import type { ComponentProps as CP } from 'vue-component-type-helpers'; import type { Form, GetFormResultType } from '@/utility/form.js'; import type { MenuItem } from '@/types/menu.js'; import type { PostFormProps } from '@/types/post-form.js'; +import type { UploaderDialogFeatures } from '@/components/MkUploaderDialog.vue'; import type MkRoleSelectDialog_TypeReferenceOnly from '@/components/MkRoleSelectDialog.vue'; import type MkEmojiPickerDialog_TypeReferenceOnly from '@/components/MkEmojiPickerDialog.vue'; import { misskeyApi } from '@/utility/misskey-api.js'; @@ -836,6 +837,7 @@ export function launchUploader( options?: { folderId?: string | null; multiple?: boolean; + features?: UploaderDialogFeatures; }, ): Promise<Misskey.entities.DriveFile[]> { return new Promise(async (res, rej) => { @@ -844,6 +846,7 @@ export function launchUploader( files: markRaw(files), folderId: options?.folderId, multiple: options?.multiple, + features: options?.features, }, { done: driveFiles => { if (driveFiles.length === 0) return rej(); diff --git a/packages/frontend/src/pages/admin/RolesEditorFormula.vue b/packages/frontend/src/pages/admin/RolesEditorFormula.vue index 6c47e6397f..89ecc155b2 100644 --- a/packages/frontend/src/pages/admin/RolesEditorFormula.vue +++ b/packages/frontend/src/pages/admin/RolesEditorFormula.vue @@ -66,7 +66,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { computed, defineAsyncComponent, ref, watch } from 'vue'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import MkInput from '@/components/MkInput.vue'; import MkSelect from '@/components/MkSelect.vue'; import MkButton from '@/components/MkButton.vue'; @@ -104,7 +104,7 @@ const type = computed({ set: (t) => { if (t === 'and') v.value.values = []; if (t === 'or') v.value.values = []; - if (t === 'not') v.value.value = { id: uuid(), type: 'isRemote' }; + if (t === 'not') v.value.value = { id: genId(), type: 'isRemote' }; if (t === 'roleAssignedTo') v.value.roleId = ''; if (t === 'createdLessThan') v.value.sec = 86400; if (t === 'createdMoreThan') v.value.sec = 86400; @@ -119,7 +119,7 @@ const type = computed({ }); function addValue() { - v.value.values.push({ id: uuid(), type: 'isRemote' }); + v.value.values.push({ id: genId(), type: 'isRemote' }); } function valuesItemUpdated(item) { diff --git a/packages/frontend/src/pages/admin/announcements.vue b/packages/frontend/src/pages/admin/announcements.vue index b2d7b4889a..e5903d6257 100644 --- a/packages/frontend/src/pages/admin/announcements.vue +++ b/packages/frontend/src/pages/admin/announcements.vue @@ -97,6 +97,7 @@ import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; import MkFolder from '@/components/MkFolder.vue'; import MkTextarea from '@/components/MkTextarea.vue'; +import { genId } from '@/utility/id.js'; const announcementsStatus = ref<'active' | 'archived'>('active'); @@ -117,7 +118,7 @@ watch(announcementsStatus, (to) => { function add() { announcements.value.unshift({ - _id: Math.random().toString(36), + _id: genId(), id: null, title: 'New announcement', text: '', diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue index 4c2c26ec45..a380bd133e 100644 --- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue +++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue @@ -174,7 +174,10 @@ function setupGrid(): GridSetting { { bindTo: 'url', icon: 'ti-icons', type: 'image', editable: true, width: 'auto', validators: [required], async customValueEditor(row, col, value, cellElement) { - const file = await selectFile(cellElement); + const file = await selectFile({ + anchorElement: cellElement, + multiple: false, + }); gridItems.value[row.index].url = file.url; gridItems.value[row.index].fileId = file.id; diff --git a/packages/frontend/src/pages/admin/federation-job-queue.chart.vue b/packages/frontend/src/pages/admin/federation-job-queue.chart.vue index 4b10d682a5..b17eceadde 100644 --- a/packages/frontend/src/pages/admin/federation-job-queue.chart.vue +++ b/packages/frontend/src/pages/admin/federation-job-queue.chart.vue @@ -57,6 +57,7 @@ import { misskeyApi } from '@/utility/misskey-api.js'; import { useStream } from '@/stream.js'; import { i18n } from '@/i18n.js'; import MkFolder from '@/components/MkFolder.vue'; +import { genId } from '@/utility/id.js'; const connection = markRaw(useStream().useChannel('queueStats')); @@ -113,7 +114,7 @@ onMounted(() => { connection.on('stats', onStats); connection.on('statsLog', onStatsLog); connection.send('requestLog', { - id: Math.random().toString().substring(2, 10), + id: genId(), length: 200, }); }); diff --git a/packages/frontend/src/pages/admin/files.vue b/packages/frontend/src/pages/admin/files.vue index 87595a820b..4ea5756284 100644 --- a/packages/frontend/src/pages/admin/files.vue +++ b/packages/frontend/src/pages/admin/files.vue @@ -34,6 +34,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { computed, ref } from 'vue'; +import * as Misskey from 'misskey-js'; import MkInput from '@/components/MkInput.vue'; import MkSelect from '@/components/MkSelect.vue'; import MkFileListForAdmin from '@/components/MkFileListForAdmin.vue'; @@ -41,12 +42,13 @@ import * as os from '@/os.js'; import { lookupFile } from '@/utility/admin-lookup.js'; import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; +import type { PagingCtx } from '@/composables/use-pagination.js'; -const origin = ref('local'); +const origin = ref<Misskey.entities.AdminDriveFilesRequest['origin']>('local'); const type = ref<string | null>(null); const searchHost = ref(''); const userId = ref(''); -const viewMode = ref('grid'); +const viewMode = ref<'grid' | 'list'>('grid'); const pagination = { endpoint: 'admin/drive/files' as const, limit: 10, @@ -56,7 +58,7 @@ const pagination = { origin: origin.value, hostname: (searchHost.value && searchHost.value !== '') ? searchHost.value : null, })), -}; +} satisfies PagingCtx<'admin/drive/files'>; function clear() { os.confirm({ diff --git a/packages/frontend/src/pages/admin/overview.queue.vue b/packages/frontend/src/pages/admin/overview.queue.vue index cf07cddced..e7e139b74d 100644 --- a/packages/frontend/src/pages/admin/overview.queue.vue +++ b/packages/frontend/src/pages/admin/overview.queue.vue @@ -41,6 +41,7 @@ import XChart from './overview.queue.chart.vue'; import type { ApQueueDomain } from '@/pages/admin/queue.vue'; import number from '@/filters/number.js'; import { useStream } from '@/stream.js'; +import { genId } from '@/utility/id.js'; const connection = markRaw(useStream().useChannel('queueStats')); @@ -92,7 +93,7 @@ onMounted(() => { connection.on('stats', onStats); connection.on('statsLog', onStatsLog); connection.send('requestLog', { - id: Math.random().toString().substring(2, 10), + id: genId(), length: 100, }); }); diff --git a/packages/frontend/src/pages/admin/overview.vue b/packages/frontend/src/pages/admin/overview.vue index caa888b51d..2ad5173618 100644 --- a/packages/frontend/src/pages/admin/overview.vue +++ b/packages/frontend/src/pages/admin/overview.vue @@ -84,6 +84,7 @@ import { useStream } from '@/stream.js'; import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; import MkFoldableSection from '@/components/MkFoldableSection.vue'; +import { genId } from '@/utility/id.js'; const rootEl = useTemplateRef('rootEl'); const serverInfo = ref<Misskey.entities.ServerInfoResponse | null>(null); @@ -170,7 +171,7 @@ onMounted(async () => { nextTick(() => { queueStatsConnection.send('requestLog', { - id: Math.random().toString().substring(2, 10), + id: genId(), length: 100, }); }); diff --git a/packages/frontend/src/pages/admin/roles.edit.vue b/packages/frontend/src/pages/admin/roles.edit.vue index 7790fe3925..1a903eedb9 100644 --- a/packages/frontend/src/pages/admin/roles.edit.vue +++ b/packages/frontend/src/pages/admin/roles.edit.vue @@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { computed, ref } from 'vue'; import * as Misskey from 'misskey-js'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import XEditor from './roles.editor.vue'; import * as os from '@/os.js'; import { misskeyApi } from '@/utility/misskey-api.js'; @@ -55,7 +55,7 @@ if (props.id) { color: null, iconUrl: null, target: 'manual', - condFormula: { id: uuid(), type: 'isRemote' }, + condFormula: { id: genId(), type: 'isRemote' }, isPublic: false, isExplorable: false, asBadge: false, diff --git a/packages/frontend/src/pages/channel-editor.vue b/packages/frontend/src/pages/channel-editor.vue index 355b5464a1..72281ea882 100644 --- a/packages/frontend/src/pages/channel-editor.vue +++ b/packages/frontend/src/pages/channel-editor.vue @@ -188,7 +188,10 @@ async function archive() { } function setBannerImage(evt) { - selectFile(evt.currentTarget ?? evt.target, null).then(file => { + selectFile({ + anchorElement: evt.currentTarget ?? evt.target, + multiple: false, + }).then(file => { bannerId.value = file.id; }); } diff --git a/packages/frontend/src/pages/chat/room.form.vue b/packages/frontend/src/pages/chat/room.form.vue index 7e3be67230..17b68d6eb9 100644 --- a/packages/frontend/src/pages/chat/room.form.vue +++ b/packages/frontend/src/pages/chat/room.form.vue @@ -168,7 +168,11 @@ function onKeydown(ev: KeyboardEvent) { } function chooseFile(ev: MouseEvent) { - selectFile(ev.currentTarget ?? ev.target, i18n.ts.selectFile).then(selectedFile => { + selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + label: i18n.ts.selectFile, + }).then(selectedFile => { file.value = selectedFile; }); } diff --git a/packages/frontend/src/pages/custom-emojis-manager.vue b/packages/frontend/src/pages/custom-emojis-manager.vue index 5aba0f68a3..36d638b210 100644 --- a/packages/frontend/src/pages/custom-emojis-manager.vue +++ b/packages/frontend/src/pages/custom-emojis-manager.vue @@ -214,7 +214,10 @@ const menu = (ev: MouseEvent) => { icon: 'ti ti-upload', text: i18n.ts.import, action: async () => { - const file = await selectFile(ev.currentTarget ?? ev.target); + const file = await selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }); misskeyApi('admin/emoji/import-zip', { fileId: file.id, }) diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue index 41de457427..b4fc4a46d9 100644 --- a/packages/frontend/src/pages/emoji-edit-dialog.vue +++ b/packages/frontend/src/pages/emoji-edit-dialog.vue @@ -121,7 +121,10 @@ watch(roleIdsThatCanBeUsedThisEmojiAsReaction, async () => { const imgUrl = computed(() => file.value ? file.value.url : props.emoji ? props.emoji.url : null); async function changeImage(ev: Event) { - file.value = await selectFile(ev.currentTarget ?? ev.target, null); + file.value = await selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }); const candidate = file.value.name.replace(/\.(.+)$/, ''); if (candidate.match(/^[a-z0-9_]+$/)) { name.value = candidate; diff --git a/packages/frontend/src/pages/gallery/edit.vue b/packages/frontend/src/pages/gallery/edit.vue index 1b8c14a156..9c0078e15a 100644 --- a/packages/frontend/src/pages/gallery/edit.vue +++ b/packages/frontend/src/pages/gallery/edit.vue @@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div class="name">{{ file.name }}</div> <button v-tooltip="i18n.ts.remove" class="remove _button" @click="remove(file)"><i class="ti ti-x"></i></button> </div> - <MkButton primary @click="selectFile"><i class="ti ti-plus"></i> {{ i18n.ts.attachFile }}</MkButton> + <MkButton primary @click="chooseFile"><i class="ti ti-plus"></i> {{ i18n.ts.attachFile }}</MkButton> </div> <MkSwitch v-model="isSensitive">{{ i18n.ts.markAsSensitive }}</MkSwitch> @@ -44,7 +44,7 @@ import MkInput from '@/components/MkInput.vue'; import MkTextarea from '@/components/MkTextarea.vue'; import MkSwitch from '@/components/MkSwitch.vue'; import FormSuspense from '@/components/form/suspense.vue'; -import { selectFiles } from '@/utility/drive.js'; +import { selectFile } from '@/utility/drive.js'; import * as os from '@/os.js'; import { misskeyApi } from '@/utility/misskey-api.js'; import { definePage } from '@/page.js'; @@ -63,8 +63,11 @@ const description = ref<string | null>(null); const title = ref<string | null>(null); const isSensitive = ref(false); -function selectFile(evt) { - selectFiles(evt.currentTarget ?? evt.target, null).then(selected => { +function chooseFile(evt) { + selectFile({ + anchorElement: evt.currentTarget ?? evt.target, + multiple: true, + }).then(selected => { files.value = files.value.concat(selected); }); } diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue index 0057106411..7c5191276d 100644 --- a/packages/frontend/src/pages/instance-info.vue +++ b/packages/frontend/src/pages/instance-info.vue @@ -7,9 +7,9 @@ SPDX-License-Identifier: AGPL-3.0-only <PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true"> <div v-if="instance" class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;"> <div v-if="tab === 'overview'" class="_gaps_m"> - <div class="fnfelxur"> - <img :src="faviconUrl" alt="" class="icon"/> - <span class="name">{{ instance.name || `(${i18n.ts.unknown})` }}</span> + <div :class="$style.faviconAndName"> + <img :src="faviconUrl" alt="" :class="$style.icon"/> + <span :class="$style.name">{{ instance.name || `(${i18n.ts.unknown})` }}</span> </div> <div style="display: flex; flex-direction: column; gap: 1em;"> <MkKeyValue :copy="host" oneline> @@ -90,8 +90,8 @@ SPDX-License-Identifier: AGPL-3.0-only </FormSection> </div> <div v-else-if="tab === 'chart'" class="_gaps_m"> - <div class="cmhjzshl"> - <div class="selects"> + <div> + <div :class="$style.selects"> <MkSelect v-model="chartSrc" style="margin: 0 10px 0 0; flex: 1;"> <option value="instance-requests">{{ i18n.ts._instanceCharts.requests }}</option> <option value="instance-users">{{ i18n.ts._instanceCharts.users }}</option> @@ -106,19 +106,21 @@ SPDX-License-Identifier: AGPL-3.0-only <option value="instance-drive-files-total">{{ i18n.ts._instanceCharts.filesTotal }}</option> </MkSelect> </div> - <div class="charts"> - <div class="label">{{ i18n.tsx.recentNHours({ n: 90 }) }}</div> - <MkChart class="chart" :src="chartSrc" span="hour" :limit="90" :args="{ host: host }" :detailed="true"></MkChart> - <div class="label">{{ i18n.tsx.recentNDays({ n: 90 }) }}</div> - <MkChart class="chart" :src="chartSrc" span="day" :limit="90" :args="{ host: host }" :detailed="true"></MkChart> + <div> + <div :class="$style.label">{{ i18n.tsx.recentNHours({ n: 90 }) }}</div> + <MkChart :src="chartSrc" span="hour" :limit="90" :args="{ host: host }" :detailed="true"></MkChart> + <div :class="$style.label">{{ i18n.tsx.recentNDays({ n: 90 }) }}</div> + <MkChart :src="chartSrc" span="day" :limit="90" :args="{ host: host }" :detailed="true"></MkChart> </div> </div> </div> <div v-else-if="tab === 'users'" class="_gaps_m"> - <MkPagination v-slot="{items}" :pagination="usersPagination" style="display: grid; grid-template-columns: repeat(auto-fill,minmax(270px,1fr)); grid-gap: 12px;"> - <MkA v-for="user in items" :key="user.id" v-tooltip.mfm="`Last posted: ${dateString(user.updatedAt)}`" class="user" :to="`/admin/user/${user.id}`"> - <MkUserCardMini :user="user"/> - </MkA> + <MkPagination v-slot="{ items }" :pagination="usersPagination"> + <div :class="$style.users"> + <MkA v-for="user in items" :key="user.id" v-tooltip.mfm="`Last posted: ${user.updatedAt ? dateString(user.updatedAt) : 'unknown'}`" :to="`/admin/user/${user.id}`"> + <MkUserCardMini :user="user"/> + </MkA> + </div> </MkPagination> </div> <div v-else-if="tab === 'raw'" class="_gaps_m"> @@ -180,7 +182,7 @@ const usersPagination = { hostname: props.host, }, offsetMode: true, -} satisfies PagingCtx; +} satisfies PagingCtx<'admin/show-users' | 'users'>; if (iAmModerator) { watch(moderationNote, async () => { @@ -281,7 +283,7 @@ const headerTabs = computed(() => [{ key: 'overview', title: i18n.ts.overview, icon: 'ti ti-info-circle', -}, { +}, ...(iAmModerator ? [{ key: 'chart', title: i18n.ts.charts, icon: 'ti ti-chart-line', @@ -289,7 +291,7 @@ const headerTabs = computed(() => [{ key: 'users', title: i18n.ts.users, icon: 'ti ti-users', -}, { +}] : []), { key: 'raw', title: 'Raw', icon: 'ti ti-code', @@ -301,34 +303,31 @@ definePage(() => ({ })); </script> -<style lang="scss" scoped> -.fnfelxur { +<style lang="scss" module> +.faviconAndName { display: flex; align-items: center; - - > .icon { - display: block; - margin: 0 16px 0 0; - height: 64px; - border-radius: 8px; - } - - > .name { - word-break: break-all; - } } - -.cmhjzshl { - > .selects { - display: flex; - margin: 0 0 16px 0; - } - - > .charts { - > .label { - margin-bottom: 12px; - font-weight: bold; - } - } +.icon { + display: block; + margin: 0 16px 0 0; + height: 64px; + border-radius: 8px; +} +.name { + word-break: break-all; +} +.selects { + display: flex; + margin: 0 0 16px 0; +} +.label { + margin-bottom: 12px; + font-weight: bold; +} +.users { + display: grid; + grid-template-columns: repeat(auto-fill,minmax(270px,1fr)); + grid-gap: 12px; } </style> diff --git a/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue b/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue index 4d1a3716e7..11f83b6ec6 100644 --- a/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue +++ b/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue @@ -24,7 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only import { defineAsyncComponent, inject, onMounted, watch, ref } from 'vue'; import * as Misskey from 'misskey-js'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import XContainer from '../page-editor.container.vue'; import * as os from '@/os.js'; import { i18n } from '@/i18n.js'; @@ -73,7 +73,7 @@ async function add() { }); if (canceled) return; - const id = uuid(); + const id = genId(); children.value.push({ id, type }); } diff --git a/packages/frontend/src/pages/page-editor/page-editor.vue b/packages/frontend/src/pages/page-editor/page-editor.vue index 49d9150852..8a9b9a9b08 100644 --- a/packages/frontend/src/pages/page-editor/page-editor.vue +++ b/packages/frontend/src/pages/page-editor/page-editor.vue @@ -62,7 +62,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { computed, provide, watch, ref } from 'vue'; import * as Misskey from 'misskey-js'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import { url } from '@@/js/config.js'; import XBlocks from './page-editor.blocks.vue'; import MkButton from '@/components/MkButton.vue'; @@ -200,12 +200,15 @@ async function add() { }); if (canceled) return; - const id = uuid(); + const id = genId(); content.value.push({ id, type }); } function setEyeCatchingImage(img: Event) { - selectFile(img.currentTarget ?? img.target, null).then(file => { + selectFile({ + anchorElement: img.currentTarget ?? img.target, + multiple: false, + }).then(file => { eyeCatchingImageId.value = file.id; }); } @@ -240,7 +243,7 @@ async function init() { content.value = page.value.content; eyeCatchingImageId.value = page.value.eyeCatchingImageId; } else { - const id = uuid(); + const id = genId(); content.value = [{ id, type: 'text', diff --git a/packages/frontend/src/pages/reversi/game.board.vue b/packages/frontend/src/pages/reversi/game.board.vue index c0c90cb993..69429728d0 100644 --- a/packages/frontend/src/pages/reversi/game.board.vue +++ b/packages/frontend/src/pages/reversi/game.board.vue @@ -158,6 +158,7 @@ import { userPage } from '@/filters/user.js'; import * as sound from '@/utility/sound.js'; import * as os from '@/os.js'; import { confetti } from '@/utility/confetti.js'; +import { genId } from '@/utility/id.js'; const $i = ensureSignin(); @@ -273,7 +274,7 @@ function putStone(pos: number) { playbackRate: 1, }); - const id = Math.random().toString(36).slice(2); + const id = genId(); props.connection!.send('putStone', { pos: pos, id, diff --git a/packages/frontend/src/pages/search.user.vue b/packages/frontend/src/pages/search.user.vue index d98b58c748..eaec043311 100644 --- a/packages/frontend/src/pages/search.user.vue +++ b/packages/frontend/src/pages/search.user.vue @@ -40,8 +40,8 @@ import { misskeyApi } from '@/utility/misskey-api.js'; import { useRouter } from '@/router.js'; const props = withDefaults(defineProps<{ - query?: string, - origin?: Endpoints['users/search']['req']['origin'], + query?: string, + origin?: Endpoints['users/search']['req']['origin'], }>(), { query: '', origin: 'combined', @@ -115,6 +115,7 @@ async function search() { userPagination.value = { endpoint: 'users/search', limit: 10, + offsetMode: true, params: { query: query, origin: instance.federation === 'none' ? 'local' : searchOrigin.value, diff --git a/packages/frontend/src/pages/settings/account-data.vue b/packages/frontend/src/pages/settings/account-data.vue index d175c0dc32..5a00d7a9d7 100644 --- a/packages/frontend/src/pages/settings/account-data.vue +++ b/packages/frontend/src/pages/settings/account-data.vue @@ -233,7 +233,10 @@ const exportAntennas = () => { }; const importFollowing = async (ev) => { - const file = await selectFile(ev.currentTarget ?? ev.target); + const file = await selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }); misskeyApi('i/import-following', { fileId: file.id, withReplies: withReplies.value, @@ -241,22 +244,34 @@ const importFollowing = async (ev) => { }; const importUserLists = async (ev) => { - const file = await selectFile(ev.currentTarget ?? ev.target); + const file = await selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }); misskeyApi('i/import-user-lists', { fileId: file.id }).then(onImportSuccess).catch(onError); }; const importMuting = async (ev) => { - const file = await selectFile(ev.currentTarget ?? ev.target); + const file = await selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }); misskeyApi('i/import-muting', { fileId: file.id }).then(onImportSuccess).catch(onError); }; const importBlocking = async (ev) => { - const file = await selectFile(ev.currentTarget ?? ev.target); + const file = await selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }); misskeyApi('i/import-blocking', { fileId: file.id }).then(onImportSuccess).catch(onError); }; const importAntennas = async (ev) => { - const file = await selectFile(ev.currentTarget ?? ev.target); + const file = await selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }); misskeyApi('i/import-antennas', { fileId: file.id }).then(onImportSuccess).catch(onError); }; diff --git a/packages/frontend/src/pages/settings/deck.vue b/packages/frontend/src/pages/settings/deck.vue index 22bd8cbc80..ae882d1ee2 100644 --- a/packages/frontend/src/pages/settings/deck.vue +++ b/packages/frontend/src/pages/settings/deck.vue @@ -114,7 +114,10 @@ watch(wallpaper, async () => { }); function setWallpaper(ev: MouseEvent) { - selectFile(ev.currentTarget ?? ev.target, null).then(file => { + selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + }).then(file => { wallpaper.value = file.url; }); } diff --git a/packages/frontend/src/pages/settings/drive.WatermarkItem.vue b/packages/frontend/src/pages/settings/drive.WatermarkItem.vue new file mode 100644 index 0000000000..b466f35fc5 --- /dev/null +++ b/packages/frontend/src/pages/settings/drive.WatermarkItem.vue @@ -0,0 +1,112 @@ +<!-- +SPDX-FileCopyrightText: syuilo and misskey-project +SPDX-License-Identifier: AGPL-3.0-only +--> + +<template> +<MkFolder :defaultOpen="false" :canPage="false"> + <template #icon><i class="ti ti-pencil"></i></template> + <template #label>{{ i18n.ts.preset }}: {{ preset.name === '' ? '(' + i18n.ts.noName + ')' : preset.name }}</template> + <template #footer> + <div class="_buttons"> + <MkButton @click="edit"><i class="ti ti-pencil"></i> {{ i18n.ts.edit }}</MkButton> + <MkButton danger iconOnly style="margin-left: auto;" @click="del"><i class="ti ti-trash"></i></MkButton> + </div> + </template> + + <div> + <canvas ref="canvasEl" :class="$style.previewCanvas"></canvas> + </div> +</MkFolder> +</template> + +<script lang="ts" setup> +import { defineAsyncComponent, onMounted, onUnmounted, ref, useTemplateRef, watch } from 'vue'; +import type { WatermarkPreset } from '@/utility/watermark.js'; +import { WatermarkRenderer } from '@/utility/watermark.js'; +import MkButton from '@/components/MkButton.vue'; +import * as os from '@/os.js'; +import { i18n } from '@/i18n.js'; +import { deepClone } from '@/utility/clone.js'; +import MkFolder from '@/components/MkFolder.vue'; + +const props = defineProps<{ + preset: WatermarkPreset; +}>(); + +const emit = defineEmits<{ + (ev: 'updatePreset', preset: WatermarkPreset): void, + (ev: 'del'): void, +}>(); + +async function edit() { + const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkWatermarkEditorDialog.vue')), { + preset: deepClone(props.preset), + }, { + ok: (preset: WatermarkPreset) => { + emit('updatePreset', preset); + }, + closed: () => dispose(), + }); +} + +function del(ev: MouseEvent) { + os.popupMenu([{ + text: i18n.ts.delete, + action: () => { + emit('del'); + }, + }], ev.currentTarget ?? ev.target); +} + +const canvasEl = useTemplateRef('canvasEl'); + +const sampleImage = new Image(); +sampleImage.src = '/client-assets/sample/3-2.jpg'; + +let renderer: WatermarkRenderer | null = null; + +onMounted(() => { + sampleImage.onload = async () => { + watch(canvasEl, async () => { + if (canvasEl.value == null) return; + + renderer = new WatermarkRenderer({ + canvas: canvasEl.value, + renderWidth: 1500, + renderHeight: 1000, + image: sampleImage, + }); + + await renderer.setLayers(props.preset.layers); + + renderer.render(); + }, { immediate: true }); + }; +}); + +onUnmounted(() => { + if (renderer != null) { + renderer.destroy(); + renderer = null; + } +}); + +watch(() => props.preset, async () => { + if (renderer != null) { + await renderer.setLayers(props.preset.layers); + renderer.render(); + } +}, { deep: true }); +</script> + +<style lang="scss" module> +.previewCanvas { + display: block; + width: 100%; + height: 100%; + max-height: 200px; + box-sizing: border-box; + object-fit: contain; +} +</style> diff --git a/packages/frontend/src/pages/settings/drive.vue b/packages/frontend/src/pages/settings/drive.vue index d62e487341..0614b1242b 100644 --- a/packages/frontend/src/pages/settings/drive.vue +++ b/packages/frontend/src/pages/settings/drive.vue @@ -39,53 +39,122 @@ SPDX-License-Identifier: AGPL-3.0-only </FormSection> </SearchMarker> - <FormSection> - <div class="_gaps_m"> - <SearchMarker :keywords="['default', 'upload', 'folder']"> - <FormLink @click="chooseUploadFolder()"> - <SearchLabel>{{ i18n.ts.uploadFolder }}</SearchLabel> - <template #suffix>{{ uploadFolder ? uploadFolder.name : '-' }}</template> - <template #suffixIcon><i class="ti ti-folder"></i></template> + <SearchMarker :keywords="['general']"> + <FormSection> + <template #label><SearchLabel>{{ i18n.ts.general }}</SearchLabel></template> + + <div class="_gaps_m"> + <SearchMarker :keywords="['default', 'upload', 'folder']"> + <FormLink @click="chooseUploadFolder()"> + <SearchLabel>{{ i18n.ts.uploadFolder }}</SearchLabel> + <template #suffix>{{ uploadFolder ? uploadFolder.name : '-' }}</template> + <template #suffixIcon><i class="ti ti-folder"></i></template> + </FormLink> + </SearchMarker> + + <FormLink to="/settings/drive/cleaner"> + {{ i18n.ts.drivecleaner }} </FormLink> - </SearchMarker> - <FormLink to="/settings/drive/cleaner"> - {{ i18n.ts.drivecleaner }} - </FormLink> + <SearchMarker :keywords="['keep', 'original', 'filename']"> + <MkPreferenceContainer k="keepOriginalFilename"> + <MkSwitch v-model="keepOriginalFilename"> + <template #label><SearchLabel>{{ i18n.ts.keepOriginalFilename }}</SearchLabel></template> + <template #caption><SearchKeyword>{{ i18n.ts.keepOriginalFilenameDescription }}</SearchKeyword></template> + </MkSwitch> + </MkPreferenceContainer> + </SearchMarker> + + <SearchMarker :keywords="['always', 'default', 'mark', 'nsfw', 'sensitive', 'media', 'file']"> + <MkSwitch v-model="alwaysMarkNsfw" @update:modelValue="saveProfile()"> + <template #label><SearchLabel>{{ i18n.ts.alwaysMarkSensitive }}</SearchLabel></template> + </MkSwitch> + </SearchMarker> - <SearchMarker :keywords="['keep', 'original', 'filename']"> - <MkPreferenceContainer k="keepOriginalFilename"> - <MkSwitch v-model="keepOriginalFilename"> - <template #label><SearchLabel>{{ i18n.ts.keepOriginalFilename }}</SearchLabel></template> - <template #caption><SearchKeyword>{{ i18n.ts.keepOriginalFilenameDescription }}</SearchKeyword></template> + <SearchMarker :keywords="['auto', 'nsfw', 'sensitive', 'media', 'file']"> + <MkSwitch v-model="autoSensitive" @update:modelValue="saveProfile()"> + <template #label><SearchLabel>{{ i18n.ts.enableAutoSensitive }}</SearchLabel><span class="_beta">{{ i18n.ts.beta }}</span></template> + <template #caption><SearchKeyword>{{ i18n.ts.enableAutoSensitiveDescription }}</SearchKeyword></template> </MkSwitch> - </MkPreferenceContainer> - </SearchMarker> + </SearchMarker> + </div> + </FormSection> + </SearchMarker> - <SearchMarker :keywords="['always', 'default', 'mark', 'nsfw', 'sensitive', 'media', 'file']"> - <MkSwitch v-model="alwaysMarkNsfw" @update:modelValue="saveProfile()"> - <template #label><SearchLabel>{{ i18n.ts.alwaysMarkSensitive }}</SearchLabel></template> - </MkSwitch> - </SearchMarker> + <SearchMarker :keywords="['image']"> + <FormSection> + <template #label><SearchLabel>{{ i18n.ts.image }}</SearchLabel></template> + + <div class="_gaps_m"> + <SearchMarker :keywords="['watermark', 'credit']"> + <MkFolder> + <template #icon><i class="ti ti-copyright"></i></template> + <template #label><SearchLabel>{{ i18n.ts.watermark }}</SearchLabel></template> + <template #caption>{{ i18n.ts._watermarkEditor.tip }}</template> + + <div class="_gaps"> + <div class="_gaps_s"> + <XWatermarkItem + v-for="(preset, i) in prefer.r.watermarkPresets.value" + :key="preset.id" + :preset="preset" + @updatePreset="onUpdateWatermarkPreset(preset.id, $event)" + @del="onDeleteWatermarkPreset(preset.id)" + /> + + <MkButton iconOnly rounded style="margin: 0 auto;" @click="addWatermarkPreset"><i class="ti ti-plus"></i></MkButton> - <SearchMarker :keywords="['auto', 'nsfw', 'sensitive', 'media', 'file']"> - <MkSwitch v-model="autoSensitive" @update:modelValue="saveProfile()"> - <template #label><SearchLabel>{{ i18n.ts.enableAutoSensitive }}</SearchLabel><span class="_beta">{{ i18n.ts.beta }}</span></template> - <template #caption><SearchKeyword>{{ i18n.ts.enableAutoSensitiveDescription }}</SearchKeyword></template> - </MkSwitch> - </SearchMarker> - </div> - </FormSection> + <SearchMarker :keywords="['sync', 'watermark', 'preset', 'devices']"> + <MkSwitch :modelValue="watermarkPresetsSyncEnabled" @update:modelValue="changeWatermarkPresetsSyncEnabled"> + <template #label><i class="ti ti-cloud-cog"></i> <SearchLabel>{{ i18n.ts.syncBetweenDevices }}</SearchLabel></template> + </MkSwitch> + </SearchMarker> + </div> + + <hr> + + <SearchMarker :keywords="['default', 'watermark', 'preset']"> + <MkPreferenceContainer k="defaultWatermarkPresetId"> + <MkSelect v-model="defaultWatermarkPresetId" :items="[{ label: i18n.ts.none, value: null }, ...prefer.r.watermarkPresets.value.map(p => ({ label: p.name || i18n.ts.noName, value: p.id }))]"> + <template #label><SearchLabel>{{ i18n.ts.defaultPreset }}</SearchLabel></template> + </MkSelect> + </MkPreferenceContainer> + </SearchMarker> + </div> + </MkFolder> + </SearchMarker> + + <SearchMarker :keywords="['default', 'image', 'compression']"> + <MkPreferenceContainer k="defaultImageCompressionLevel"> + <MkSelect + v-model="defaultImageCompressionLevel" :items="[ + { label: i18n.ts.none, value: 0 }, + { label: i18n.ts.low, value: 1 }, + { label: i18n.ts.medium, value: 2 }, + { label: i18n.ts.high, value: 3 }, + ]" + > + <template #label><SearchLabel>{{ i18n.ts.defaultImageCompressionLevel }}</SearchLabel></template> + <template #caption><div v-html="i18n.ts.defaultImageCompressionLevel_description"></div></template> + </MkSelect> + </MkPreferenceContainer> + </SearchMarker> + </div> + </FormSection> + </SearchMarker> </div> </SearchMarker> </template> <script lang="ts" setup> -import { computed, ref } from 'vue'; +import { computed, defineAsyncComponent, ref } from 'vue'; import * as Misskey from 'misskey-js'; import tinycolor from 'tinycolor2'; +import XWatermarkItem from './drive.WatermarkItem.vue'; +import type { WatermarkPreset } from '@/utility/watermark.js'; import FormLink from '@/components/form/link.vue'; import MkSwitch from '@/components/MkSwitch.vue'; +import MkSelect from '@/components/MkSelect.vue'; import FormSection from '@/components/form/section.vue'; import MkKeyValue from '@/components/MkKeyValue.vue'; import FormSplit from '@/components/form/split.vue'; @@ -100,6 +169,8 @@ import { prefer } from '@/preferences.js'; import MkPreferenceContainer from '@/components/MkPreferenceContainer.vue'; import MkFeatureBanner from '@/components/MkFeatureBanner.vue'; import { selectDriveFolder } from '@/utility/drive.js'; +import MkFolder from '@/components/MkFolder.vue'; +import MkButton from '@/components/MkButton.vue'; const $i = ensureSignin(); @@ -123,6 +194,22 @@ const meterStyle = computed(() => { }); const keepOriginalFilename = prefer.model('keepOriginalFilename'); +const defaultWatermarkPresetId = prefer.model('defaultWatermarkPresetId'); +const defaultImageCompressionLevel = prefer.model('defaultImageCompressionLevel'); + +const watermarkPresetsSyncEnabled = ref(prefer.isSyncEnabled('watermarkPresets')); + +function changeWatermarkPresetsSyncEnabled(value: boolean) { + if (value) { + prefer.enableSync('watermarkPresets').then((res) => { + if (res == null) return; + if (res.enabled) watermarkPresetsSyncEnabled.value = true; + }); + } else { + prefer.disableSync('watermarkPresets'); + watermarkPresetsSyncEnabled.value = false; + } +} misskeyApi('drive').then(info => { capacity.value = info.capacity; @@ -152,6 +239,41 @@ function chooseUploadFolder() { }); } +async function addWatermarkPreset() { + const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkWatermarkEditorDialog.vue').then(x => x.default), { + }, { + ok: (preset: WatermarkPreset) => { + prefer.commit('watermarkPresets', [...prefer.s.watermarkPresets, preset]); + }, + closed: () => dispose(), + }); +} + +function onUpdateWatermarkPreset(id: string, preset: WatermarkPreset) { + const index = prefer.s.watermarkPresets.findIndex(p => p.id === id); + if (index !== -1) { + prefer.commit('watermarkPresets', [ + ...prefer.s.watermarkPresets.slice(0, index), + preset, + ...prefer.s.watermarkPresets.slice(index + 1), + ]); + } +} + +function onDeleteWatermarkPreset(id: string) { + const index = prefer.s.watermarkPresets.findIndex(p => p.id === id); + if (index !== -1) { + prefer.commit('watermarkPresets', [ + ...prefer.s.watermarkPresets.slice(0, index), + ...prefer.s.watermarkPresets.slice(index + 1), + ]); + + if (prefer.s.defaultWatermarkPresetId === id) { + prefer.commit('defaultWatermarkPresetId', null); + } + } +} + function saveProfile() { misskeyApi('i/update', { alwaysMarkNsfw: !!alwaysMarkNsfw.value, diff --git a/packages/frontend/src/pages/settings/emoji-palette.vue b/packages/frontend/src/pages/settings/emoji-palette.vue index 0fc60e2f70..5ff5f45a2f 100644 --- a/packages/frontend/src/pages/settings/emoji-palette.vue +++ b/packages/frontend/src/pages/settings/emoji-palette.vue @@ -119,7 +119,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { computed, ref, watch } from 'vue'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import XPalette from './emoji-palette.palette.vue'; import MkRadios from '@/components/MkRadios.vue'; import MkButton from '@/components/MkButton.vue'; @@ -159,7 +159,7 @@ function addPalette() { prefer.commit('emojiPalettes', [ ...prefer.s.emojiPalettes, { - id: uuid(), + id: genId(), name: '', emojis: [], }, diff --git a/packages/frontend/src/pages/settings/mute-block.emoji-mute.vue b/packages/frontend/src/pages/settings/mute-block.emoji-mute.vue index 601ca7ee49..ea131381a1 100644 --- a/packages/frontend/src/pages/settings/mute-block.emoji-mute.vue +++ b/packages/frontend/src/pages/settings/mute-block.emoji-mute.vue @@ -4,33 +4,45 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<div :class="$style.emojis"> - <div v-for="emoji in emojis" :key="`emojiMute-${emoji}`" :class="$style.emoji" @click="onEmojiClick($event, emoji)"> - <MkCustomEmoji - v-if="emoji.startsWith(':')" - :name="customEmojiName(emoji)" - :host="customEmojiHost(emoji)" - :normal="true" - :menu="false" - :menuReaction="false" - :ignoreMuted="true" - /> - <MkEmoji - v-else - :emoji="emoji" - :menu="false" - :menuReaction="false" - :ignoreMuted="true" - ></MkEmoji> +<div class="_gaps_m"> + <div :class="$style.emojis"> + <div v-for="emoji in emojis" :key="`emojiMute-${emoji}`" :class="$style.emoji" @click="onEmojiClick($event, emoji)"> + <MkCustomEmoji + v-if="emoji.startsWith(':')" + :name="customEmojiName(emoji)" + :host="customEmojiHost(emoji)" + :normal="true" + :menu="false" + :menuReaction="false" + :ignoreMuted="true" + /> + <MkEmoji + v-else + :emoji="emoji" + :menu="false" + :menuReaction="false" + :ignoreMuted="true" + ></MkEmoji> + </div> </div> -</div> -<MkButton primary inline @click="add"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton> + <MkButton primary inline @click="add"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton> + + <hr> + + <SearchMarker :keywords="['sync', 'devices']"> + <MkSwitch :modelValue="syncEnabled" @update:modelValue="changeSyncEnabled"> + <template #label><i class="ti ti-cloud-cog"></i> <SearchLabel>{{ i18n.ts.syncBetweenDevices }}</SearchLabel></template> + </MkSwitch> + </SearchMarker> +</div> </template> <script lang="ts" setup> +import { ref } from 'vue'; import type { MenuItem } from '@/types/menu'; import MkButton from '@/components/MkButton.vue'; +import MkSwitch from '@/components/MkSwitch.vue'; import * as os from '@/os.js'; import { i18n } from '@/i18n.js'; import { prefer } from '@/preferences.js'; @@ -79,7 +91,23 @@ function unmute(emoji: string) { unmuteEmoji(emoji); }); } + +const syncEnabled = ref(prefer.isSyncEnabled('mutingEmojis')); + +function changeSyncEnabled(value: boolean) { + if (value) { + prefer.enableSync('mutingEmojis').then((res) => { + if (res == null) return; + if (res.enabled) syncEnabled.value = true; + }); + } else { + prefer.disableSync('mutingEmojis'); + syncEnabled.value = false; + } +} + </script> + <style module> .emojis { display: flex; diff --git a/packages/frontend/src/pages/settings/mute-block.vue b/packages/frontend/src/pages/settings/mute-block.vue index 9b24501cce..9407845923 100644 --- a/packages/frontend/src/pages/settings/mute-block.vue +++ b/packages/frontend/src/pages/settings/mute-block.vue @@ -57,9 +57,7 @@ SPDX-License-Identifier: AGPL-3.0-only <template #icon><i class="ti ti-mood-off"></i></template> <template #label>{{ i18n.ts.emojiMute }}</template> - <div class="_gaps_m"> - <XEmojiMute/> - </div> + <XEmojiMute/> </mkfolder> </SearchMarker> diff --git a/packages/frontend/src/pages/settings/navbar.vue b/packages/frontend/src/pages/settings/navbar.vue index ef698fcd6e..e57195c8a2 100644 --- a/packages/frontend/src/pages/settings/navbar.vue +++ b/packages/frontend/src/pages/settings/navbar.vue @@ -70,11 +70,12 @@ import { definePage } from '@/page.js'; import { prefer } from '@/preferences.js'; import { PREF_DEF } from '@/preferences/def.js'; import { getInitialPrefValue } from '@/preferences/manager.js'; +import { genId } from '@/utility/id.js'; const Sortable = defineAsyncComponent(() => import('vuedraggable').then(x => x.default)); const items = ref(prefer.s.menu.map(x => ({ - id: Math.random().toString(), + id: genId(), type: x, }))); @@ -93,7 +94,7 @@ async function addItem() { }); if (canceled) return; items.value = [...items.value, { - id: Math.random().toString(), + id: genId(), type: item, }]; } @@ -108,7 +109,7 @@ async function save() { function reset() { items.value = getInitialPrefValue('menu').map(x => ({ - id: Math.random().toString(), + id: genId(), type: x, })); } diff --git a/packages/frontend/src/pages/settings/other.vue b/packages/frontend/src/pages/settings/other.vue index f09cc9c9bc..ac432e9f32 100644 --- a/packages/frontend/src/pages/settings/other.vue +++ b/packages/frontend/src/pages/settings/other.vue @@ -128,6 +128,10 @@ SPDX-License-Identifier: AGPL-3.0-only <hr> + <MkButton @click="readAllChatMessages">Read all chat messages</MkButton> + + <hr> + <FormSlot> <MkButton danger @click="migrate"><i class="ti ti-refresh"></i> {{ i18n.ts.migrateOldSettings }}</MkButton> <template #caption>{{ i18n.ts.migrateOldSettings_description }}</template> @@ -157,7 +161,7 @@ import { prefer } from '@/preferences.js'; import MkRolePreview from '@/components/MkRolePreview.vue'; import { signout } from '@/signout.js'; import { migrateOldSettings } from '@/pref-migrate.js'; -import { store, TIPS } from '@/store.js'; +import { hideAllTips as _hideAllTips, resetAllTips as _resetAllTips } from '@/tips.js'; const $i = ensureSignin(); @@ -201,19 +205,19 @@ function migrate() { } function resetAllTips() { - store.set('tips', {}); + _resetAllTips(); os.success(); } function hideAllTips() { - const v = {}; - for (const k of TIPS) { - v[k] = true; - } - store.set('tips', v); + _hideAllTips(); os.success(); } +function readAllChatMessages() { + os.apiWithDialog('chat/read-all', {}); +} + const headerActions = computed(() => []); const headerTabs = computed(() => []); diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue index 05e491ae37..ef7b73c2b1 100644 --- a/packages/frontend/src/pages/settings/preferences.vue +++ b/packages/frontend/src/pages/settings/preferences.vue @@ -229,6 +229,14 @@ SPDX-License-Identifier: AGPL-3.0-only </MkSwitch> </MkPreferenceContainer> </SearchMarker> + + <SearchMarker :keywords="['reaction', 'order']"> + <MkPreferenceContainer k="showAvailableReactionsFirstInNote"> + <MkSwitch v-model="showAvailableReactionsFirstInNote"> + <template #label><SearchLabel>{{ i18n.ts._settings.showAvailableReactionsFirstInNote }}</SearchLabel></template> + </MkSwitch> + </MkPreferenceContainer> + </SearchMarker> </div> <SearchMarker :keywords="['reaction', 'size', 'scale', 'display']"> @@ -796,6 +804,7 @@ import { globalEvents } from '@/events.js'; import { claimAchievement } from '@/utility/achievements.js'; import { instance } from '@/instance.js'; import { ensureSignin } from '@/i.js'; +import { genId } from '@/utility/id.js'; const $i = ensureSignin(); @@ -823,6 +832,7 @@ const showFixedPostFormInChannel = prefer.model('showFixedPostFormInChannel'); const numberOfPageCache = prefer.model('numberOfPageCache'); const enableInfiniteScroll = prefer.model('enableInfiniteScroll'); const useReactionPickerForContextMenu = prefer.model('useReactionPickerForContextMenu'); +const showAvailableReactionsFirstInNote = prefer.model('showAvailableReactionsFirstInNote'); const useGroupedNotifications = prefer.model('useGroupedNotifications'); const alwaysConfirmFollow = prefer.model('alwaysConfirmFollow'); const confirmWhenRevealingSensitiveMedia = prefer.model('confirmWhenRevealingSensitiveMedia'); @@ -899,7 +909,6 @@ watch([ reactionsDisplaySize, limitWidthOfReaction, mediaListWithOneImageAppearance, - reactionsDisplaySize, limitWidthOfReaction, instanceTicker, squareAvatars, @@ -916,6 +925,7 @@ watch([ enableHorizontalSwipe, enablePullToRefresh, reduceAnimation, + showAvailableReactionsFirstInNote, ], async () => { await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); }); @@ -1009,7 +1019,7 @@ let smashTimer: number | null = null; function testNotification(): void { const notification: Misskey.entities.Notification = { - id: Math.random().toString(), + id: genId(), createdAt: new Date().toUTCString(), isRead: false, type: 'test', diff --git a/packages/frontend/src/pages/settings/profile.vue b/packages/frontend/src/pages/settings/profile.vue index cd1565f39e..ce7f31cd23 100644 --- a/packages/frontend/src/pages/settings/profile.vue +++ b/packages/frontend/src/pages/settings/profile.vue @@ -171,6 +171,7 @@ import { claimAchievement } from '@/utility/achievements.js'; import { store } from '@/store.js'; import MkInfo from '@/components/MkInfo.vue'; import MkTextarea from '@/components/MkTextarea.vue'; +import { genId } from '@/utility/id.js'; const $i = ensureSignin(); @@ -199,12 +200,12 @@ watch(() => profile, () => { deep: true, }); -const fields = ref($i.fields.map(field => ({ id: Math.random().toString(), name: field.name, value: field.value })) ?? []); +const fields = ref($i.fields.map(field => ({ id: genId(), name: field.name, value: field.value })) ?? []); const fieldEditMode = ref(false); function addField() { fields.value.push({ - id: Math.random().toString(), + id: genId(), name: '', value: '', }); diff --git a/packages/frontend/src/pages/settings/sounds.sound.vue b/packages/frontend/src/pages/settings/sounds.sound.vue index ffbbefa122..7aad43b1d0 100644 --- a/packages/frontend/src/pages/settings/sounds.sound.vue +++ b/packages/frontend/src/pages/settings/sounds.sound.vue @@ -94,7 +94,11 @@ const friendlyFileName = computed<string>(() => { }); function selectSound(ev) { - selectFile(ev.currentTarget ?? ev.target, i18n.ts._soundSettings.driveFile).then(async (file) => { + selectFile({ + anchorElement: ev.currentTarget ?? ev.target, + multiple: false, + label: i18n.ts._soundSettings.driveFile, + }).then(async (file) => { if (!file.type.startsWith('audio')) { os.alert({ type: 'warning', diff --git a/packages/frontend/src/pages/settings/statusbar.vue b/packages/frontend/src/pages/settings/statusbar.vue index 7e6a536216..2db9f7e6f9 100644 --- a/packages/frontend/src/pages/settings/statusbar.vue +++ b/packages/frontend/src/pages/settings/statusbar.vue @@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { onMounted, ref, computed } from 'vue'; import * as Misskey from 'misskey-js'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import XStatusbar from './statusbar.statusbar.vue'; import MkFolder from '@/components/MkFolder.vue'; import MkButton from '@/components/MkButton.vue'; @@ -38,7 +38,7 @@ onMounted(() => { async function add() { prefer.commit('statusbars', [...statusbars.value, { - id: uuid(), + id: genId(), type: null, black: false, size: 'medium', diff --git a/packages/frontend/src/pages/theme-editor.vue b/packages/frontend/src/pages/theme-editor.vue index a2ee04b555..d1be9e38b7 100644 --- a/packages/frontend/src/pages/theme-editor.vue +++ b/packages/frontend/src/pages/theme-editor.vue @@ -75,7 +75,7 @@ SPDX-License-Identifier: AGPL-3.0-only import { watch, ref, computed } from 'vue'; import { toUnicode } from 'punycode.js'; import tinycolor from 'tinycolor2'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import JSON5 from 'json5'; import lightTheme from '@@/themes/_light.json5'; import darkTheme from '@@/themes/_dark.json5'; @@ -192,7 +192,7 @@ async function saveAs() { }); if (canceled) return; - theme.value.id = uuid(); + theme.value.id = genId(); theme.value.name = name; theme.value.author = `@${$i.username}@${toUnicode(host)}`; if (description.value) theme.value.desc = description.value; diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue index 5696d1dd89..b783f7ee0b 100644 --- a/packages/frontend/src/pages/timeline.vue +++ b/packages/frontend/src/pages/timeline.vue @@ -226,6 +226,7 @@ const headerActions = computed(() => { menuItems.push({ type: 'switch', + icon: 'ti ti-repeat', text: i18n.ts.showRenotes, ref: withRenotes, }); @@ -233,6 +234,7 @@ const headerActions = computed(() => { if (isBasicTimeline(src.value) && hasWithReplies(src.value)) { menuItems.push({ type: 'switch', + icon: 'ti ti-messages', text: i18n.ts.showRepliesToOthersInTimeline, ref: withReplies, disabled: onlyFiles, @@ -241,10 +243,12 @@ const headerActions = computed(() => { menuItems.push({ type: 'switch', + icon: 'ti ti-eye-exclamation', text: i18n.ts.withSensitive, ref: withSensitive, }, { type: 'switch', + icon: 'ti ti-photo', text: i18n.ts.fileAttachedOnly, ref: onlyFiles, disabled: isBasicTimeline(src.value) && hasWithReplies(src.value) ? withReplies : false, diff --git a/packages/frontend/src/pages/welcome.setup.vue b/packages/frontend/src/pages/welcome.setup.vue index 675e82a71d..3e2d086858 100644 --- a/packages/frontend/src/pages/welcome.setup.vue +++ b/packages/frontend/src/pages/welcome.setup.vue @@ -82,18 +82,6 @@ SPDX-License-Identifier: AGPL-3.0-only </div> <div v-else-if="step === 1" class="_gaps_m"> <div style="text-align: center;" class="_gaps_s"> - <div><b>{{ i18n.ts._serverSetupWizard.donationRequest }}</b></div> - <div>{{ i18n.ts._serverSetupWizard._donationRequest.text1 }}<br>{{ i18n.ts._serverSetupWizard._donationRequest.text2 }}<br>{{ i18n.ts._serverSetupWizard._donationRequest.text3 }}</div> - </div> - <MkLink target="_blank" url="https://misskey-hub.net/docs/donate/" style="margin: 0 auto;">{{ i18n.ts.learnMore }}</MkLink> - <div class="_buttonsCenter"> - <MkButton gradate large rounded data-cy-next style="margin: 0 auto;" @click="step++"> - {{ i18n.ts.next }} - </MkButton> - </div> - </div> - <div v-else-if="step === 2" class="_gaps_m"> - <div style="text-align: center;" class="_gaps_s"> <div style="font-size: 120%;"><b>{{ i18n.ts._serverSetupWizard.serverSetting }}</b></div> <div>{{ i18n.ts._serverSetupWizard.youCanEasilyConfigureOptimalServerSettingsWithThisWizard }}</div> <div>{{ i18n.ts._serverSetupWizard.settingsYouMakeHereCanBeChangedLater }}</div> @@ -105,12 +93,17 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts._serverSetupWizard.skipSettings }} </MkButton> </div> - <div v-else-if="step === 3" class="_gaps_m"> + <div v-else-if="step === 2" class="_gaps_m"> <div style="text-align: center;" class="_gaps_s"> <div><b>{{ i18n.ts._serverSetupWizard.settingsCompleted }}</b></div> <div>{{ i18n.ts._serverSetupWizard.settingsCompleted_description }}</div> <div>{{ i18n.ts._serverSetupWizard.settingsCompleted_description2 }}</div> </div> + <div class="_gaps_s" :class="$style.donation"> + <div><b>{{ i18n.ts._serverSetupWizard.donationRequest }}</b></div> + <div>{{ i18n.ts._serverSetupWizard._donationRequest.text1 }}<br>{{ i18n.ts._serverSetupWizard._donationRequest.text2 }}<br>{{ i18n.ts._serverSetupWizard._donationRequest.text3 }}</div> + <MkLink target="_blank" url="https://misskey-hub.net/docs/donate/" style="margin: 0 auto;">{{ i18n.ts.learnMore }}</MkLink> + </div> <div class="_buttonsCenter"> <MkButton gradate large rounded data-cy-next style="margin: 0 auto;" @click="finish"> {{ i18n.ts.start }} @@ -232,4 +225,11 @@ function finish() { font-weight: normal; opacity: 0.7; } + +.donation { + background: var(--MI_THEME-accentedBg); + border-radius: 12px; + padding: 16px; + text-align: center; +} </style> diff --git a/packages/frontend/src/pages/welcome.timeline.note.vue b/packages/frontend/src/pages/welcome.timeline.note.vue index b4a24637c9..4dff76901f 100644 --- a/packages/frontend/src/pages/welcome.timeline.note.vue +++ b/packages/frontend/src/pages/welcome.timeline.note.vue @@ -24,8 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkMediaList :mediaList="note.files.slice(0, 4)"/> </div> <div v-if="note.reactionCount > 0" :class="$style.reactions"> - <!-- TODO --> - <!--<MkReactionsViewer :note="note" :maxNumber="16"/>--> + <MkReactionsViewer :noteId="note.id" :reactions="note.reactions" :reactionEmojis="note.reactionEmojis" :myReaction="note.myReaction" :maxNumber="16"/> </div> </div> </div> diff --git a/packages/frontend/src/plugin.ts b/packages/frontend/src/plugin.ts index f557d1047a..68bc191924 100644 --- a/packages/frontend/src/plugin.ts +++ b/packages/frontend/src/plugin.ts @@ -6,7 +6,7 @@ import { ref, defineAsyncComponent } from 'vue'; import { Interpreter, Parser, utils, values } from '@syuilo/aiscript'; import { compareVersions } from 'compare-versions'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import * as Misskey from 'misskey-js'; import { aiScriptReadline, createAiScriptEnv } from '@/aiscript/api.js'; import { store } from '@/store.js'; @@ -135,7 +135,7 @@ export async function installPlugin(code: string, meta?: AiScriptPluginMeta) { throw new Error('Plugin already installed'); } - const installId = uuid(); + const installId = genId(); const plugin = { ...realMeta, diff --git a/packages/frontend/src/pref-migrate.ts b/packages/frontend/src/pref-migrate.ts index 648349c6fe..3054978ae4 100644 --- a/packages/frontend/src/pref-migrate.ts +++ b/packages/frontend/src/pref-migrate.ts @@ -3,8 +3,8 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { v4 as uuid } from 'uuid'; import type { DeckProfile } from '@/deck.js'; +import { genId } from '@/utility/id.js'; import { ColdDeviceStorage, store } from '@/store.js'; import { prefer } from '@/preferences.js'; import { misskeyApi } from '@/utility/misskey-api.js'; @@ -42,7 +42,7 @@ export function migrateOldSettings() { key: key, }); profiles.push({ - id: uuid(), + id: genId(), name: key, columns: deck.columns, layout: deck.layout, diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts index 2cbeea2883..a83a3153d0 100644 --- a/packages/frontend/src/preferences/def.ts +++ b/packages/frontend/src/preferences/def.ts @@ -5,13 +5,14 @@ import * as Misskey from 'misskey-js'; import { hemisphere } from '@@/js/intl-const.js'; -import { v4 as uuid } from 'uuid'; import { definePreferences } from './manager.js'; import type { Theme } from '@/theme.js'; import type { SoundType } from '@/utility/sound.js'; import type { Plugin } from '@/plugin.js'; import type { DeviceKind } from '@/utility/device-kind.js'; import type { DeckProfile } from '@/deck.js'; +import type { WatermarkPreset } from '@/utility/watermark.js'; +import { genId } from '@/utility/id.js'; import { DEFAULT_DEVICE_KIND } from '@/utility/device-kind.js'; import { deepEqual } from '@/utility/deep-equal.js'; @@ -53,13 +54,13 @@ export const PREF_DEF = definePreferences({ accountDependent: true, default: () => [{ name: 'calendar', - id: uuid(), place: 'right', data: {}, + id: genId(), place: 'right', data: {}, }, { name: 'notifications', - id: uuid(), place: 'right', data: {}, + id: genId(), place: 'right', data: {}, }, { name: 'trends', - id: uuid(), place: 'right', data: {}, + id: genId(), place: 'right', data: {}, }] as { name: string; id: string; @@ -79,7 +80,7 @@ export const PREF_DEF = definePreferences({ emojiPalettes: { serverDependent: true, default: () => [{ - id: uuid(), + id: genId(), name: '', emojis: ['ðŸ‘', 'â¤ï¸', '😆', '🤔', '😮', '🎉', '💢', '😥', '😇', 'ðŸ®'], }] as { @@ -377,6 +378,9 @@ export const PREF_DEF = definePreferences({ showTitlebar: { default: false, }, + showAvailableReactionsFirstInNote: { + default: false, + }, plugins: { default: [] as Plugin[], mergeStrategy: (a, b) => { @@ -393,6 +397,33 @@ export const PREF_DEF = definePreferences({ return [...new Set(a.concat(b))]; }, }, + watermarkPresets: { + accountDependent: true, + default: [] as WatermarkPreset[], + mergeStrategy: (a, b) => { + const mergedItems = [] as typeof a; + for (const x of a.concat(b)) { + const sameIdItem = mergedItems.find(y => y.id === x.id); + if (sameIdItem != null) { + if (deepEqual(x, sameIdItem)) { // 完全ãªé‡è¤‡ã¯ç„¡è¦– + continue; + } else { // IDã¯åŒã˜ãªã®ã«å†…容ãŒé•ã†å ´åˆã¯ãƒžãƒ¼ã‚¸ä¸å¯ã¨ã™ã‚‹ + throw new Error(); + } + } else { + mergedItems.push(x); + } + } + return mergedItems; + }, + }, + defaultWatermarkPresetId: { + accountDependent: true, + default: null as WatermarkPreset['id'] | null, + }, + defaultImageCompressionLevel: { + default: 2 as 0 | 1 | 2 | 3, + }, 'sound.masterVolume': { default: 0.5, diff --git a/packages/frontend/src/preferences/manager.ts b/packages/frontend/src/preferences/manager.ts index 603aac851c..dad6f8b912 100644 --- a/packages/frontend/src/preferences/manager.ts +++ b/packages/frontend/src/preferences/manager.ts @@ -4,11 +4,11 @@ */ import { computed, onUnmounted, ref, watch } from 'vue'; -import { v4 as uuid } from 'uuid'; import { host, version } from '@@/js/config.js'; import { PREF_DEF } from './def.js'; import type { Ref, WritableComputedRef } from 'vue'; import type { MenuItem } from '@/types/menu.js'; +import { genId } from '@/utility/id.js'; import { $i } from '@/i.js'; import { copyToClipboard } from '@/utility/copy-to-clipboard.js'; import { i18n } from '@/i18n.js'; @@ -301,7 +301,7 @@ export class PreferencesManager { } } return { - id: uuid(), + id: genId(), version: version, type: 'main', modifiedAt: Date.now(), diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index 6f9b5786ee..9afaf2c9b9 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -10,22 +10,11 @@ import darkTheme from '@@/themes/d-green-lime.json5'; import { hemisphere } from '@@/js/intl-const.js'; import type { DeviceKind } from '@/utility/device-kind.js'; import type { Plugin } from '@/plugin.js'; +import type { TIPS } from '@/tips.js'; import { miLocalStorage } from '@/local-storage.js'; import { Pizzax } from '@/lib/pizzax.js'; import { DEFAULT_DEVICE_KIND } from '@/utility/device-kind.js'; -export const TIPS = [ - 'drive', - 'uploader', - 'clips', - 'userLists', - 'tl.home', - 'tl.local', - 'tl.social', - 'tl.global', - 'abuses', -] as const; - /** * 「状態ã€ã‚’管ç†ã™ã‚‹ã‚¹ãƒˆã‚¢(not「è¨å®šã€) */ diff --git a/packages/frontend/src/tab-id.ts b/packages/frontend/src/tab-id.ts index 49b69f72d2..6525763582 100644 --- a/packages/frontend/src/tab-id.ts +++ b/packages/frontend/src/tab-id.ts @@ -3,9 +3,9 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; // HMR有効時ã«ãƒã‚°ã‹çŸ¥ã‚‰ã‚“ã‘ã©è¤‡æ•°å›žå®Ÿè¡Œã•れるã®ã§ãã®å¯¾ç– -export const TAB_ID = window.sessionStorage.getItem('TAB_ID') ?? uuid(); +export const TAB_ID = window.sessionStorage.getItem('TAB_ID') ?? genId(); window.sessionStorage.setItem('TAB_ID', TAB_ID); if (_DEV_) console.log('TAB_ID', TAB_ID); diff --git a/packages/frontend/src/tips.ts b/packages/frontend/src/tips.ts new file mode 100644 index 0000000000..7218f4c19a --- /dev/null +++ b/packages/frontend/src/tips.ts @@ -0,0 +1,38 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { store } from '@/store.js'; + +export const TIPS = [ + 'drive', + 'uploader', + 'postFormUploader', + 'clips', + 'userLists', + 'tl.home', + 'tl.local', + 'tl.social', + 'tl.global', + 'abuses', +] as const; + +export function closeTip(tip: typeof TIPS[number]) { + store.set('tips', { + ...store.r.tips.value, + [tip]: true, + }); +} + +export function resetAllTips() { + store.set('tips', {}); +} + +export function hideAllTips() { + const v = {}; + for (const k of TIPS) { + v[k] = true; + } + store.set('tips', v); +} diff --git a/packages/frontend/src/types/menu.ts b/packages/frontend/src/types/menu.ts index 820759ce61..fae7370341 100644 --- a/packages/frontend/src/types/menu.ts +++ b/packages/frontend/src/types/menu.ts @@ -11,20 +11,22 @@ type ComponentProps<T extends Component> = { [K in keyof CP<T>]: CP<T>[K] | Ref< type MenuRadioOptionsDef = Record<string, any>; +type Text = string | ComputedRef<string>; + export type MenuAction = (ev: MouseEvent) => void; export type MenuDivider = { type: 'divider' }; export type MenuNull = undefined; -export type MenuLabel = { type: 'label', text: string, caption?: string }; -export type MenuLink = { type: 'link', to: string, text: string, caption?: string, icon?: string, indicate?: boolean, avatar?: Misskey.entities.User }; -export type MenuA = { type: 'a', href: string, target?: string, download?: string, text: string, caption?: string, icon?: string, indicate?: boolean }; +export type MenuLabel = { type: 'label', text: Text, caption?: Text }; +export type MenuLink = { type: 'link', to: string, text: Text, caption?: Text, icon?: string, indicate?: boolean, avatar?: Misskey.entities.User }; +export type MenuA = { type: 'a', href: string, target?: string, download?: string, text: Text, caption?: Text, icon?: string, indicate?: boolean }; export type MenuUser = { type: 'user', user: Misskey.entities.User, active?: boolean, indicate?: boolean, action: MenuAction }; -export type MenuSwitch = { type: 'switch', ref: Ref<boolean>, text: string, caption?: string, icon?: string, disabled?: boolean | Ref<boolean> }; -export type MenuButton = { type?: 'button', text: string, caption?: string, icon?: string, indicate?: boolean, danger?: boolean, active?: boolean | ComputedRef<boolean>, avatar?: Misskey.entities.User; action: MenuAction }; -export type MenuRadio = { type: 'radio', text: string, caption?: string, icon?: string, ref: Ref<MenuRadioOptionsDef[keyof MenuRadioOptionsDef]>, options: MenuRadioOptionsDef, disabled?: boolean | Ref<boolean> }; -export type MenuRadioOption = { type: 'radioOption', text: string, caption?: string, action: MenuAction; active?: boolean | ComputedRef<boolean> }; +export type MenuSwitch = { type: 'switch', ref: Ref<boolean>, text: Text, caption?: Text, icon?: string, disabled?: boolean | Ref<boolean> }; +export type MenuButton = { type?: 'button', text: Text, caption?: Text, icon?: string, indicate?: boolean, danger?: boolean, active?: boolean | ComputedRef<boolean>, avatar?: Misskey.entities.User; action: MenuAction }; +export type MenuRadio = { type: 'radio', text: Text, caption?: Text, icon?: string, ref: Ref<MenuRadioOptionsDef[keyof MenuRadioOptionsDef]>, options: MenuRadioOptionsDef, disabled?: boolean | Ref<boolean> }; +export type MenuRadioOption = { type: 'radioOption', text: Text, caption?: Text, action: MenuAction; active?: boolean | ComputedRef<boolean> }; export type MenuComponent<T extends Component = any> = { type: 'component', component: T, props?: ComponentProps<T> }; -export type MenuParent = { type: 'parent', text: string, caption?: string, icon?: string, children: MenuItem[] | (() => Promise<MenuItem[]> | MenuItem[]) }; +export type MenuParent = { type: 'parent', text: Text, caption?: Text, icon?: string, children: MenuItem[] | (() => Promise<MenuItem[]> | MenuItem[]) }; export type MenuPending = { type: 'pending' }; diff --git a/packages/frontend/src/ui/deck.vue b/packages/frontend/src/ui/deck.vue index aff7cdabbf..d2b163a38f 100644 --- a/packages/frontend/src/ui/deck.vue +++ b/packages/frontend/src/ui/deck.vue @@ -81,7 +81,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { defineAsyncComponent, ref, useTemplateRef } from 'vue'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import XCommon from './_common_/common.vue'; import XSidebar from '@/ui/_common_/navbar.vue'; import XNavbarH from '@/ui/_common_/navbar-h.vue'; @@ -169,7 +169,7 @@ const addColumn = async (ev) => { addColumnToStore({ type: column, - id: uuid(), + id: genId(), name: null, width: 330, soundSetting: { type: null, volume: 1 }, diff --git a/packages/frontend/src/ui/deck/tl-column.vue b/packages/frontend/src/ui/deck/tl-column.vue index 97208f1c6a..37814f0914 100644 --- a/packages/frontend/src/ui/deck/tl-column.vue +++ b/packages/frontend/src/ui/deck/tl-column.vue @@ -26,6 +26,8 @@ SPDX-License-Identifier: AGPL-3.0-only :withReplies="withReplies" :withSensitive="withSensitive" :onlyFiles="onlyFiles" + :sound="true" + :customSound="soundSetting" /> </XColumn> </template> diff --git a/packages/frontend/src/utility/drive.ts b/packages/frontend/src/utility/drive.ts index fcc847653d..1912b3f805 100644 --- a/packages/frontend/src/utility/drive.ts +++ b/packages/frontend/src/utility/drive.ts @@ -6,6 +6,7 @@ import { defineAsyncComponent } from 'vue'; import * as Misskey from 'misskey-js'; import { apiUrl } from '@@/js/config.js'; +import type { UploaderFeatures } from '@/composables/use-uploader.js'; import * as os from '@/os.js'; import { misskeyApi } from '@/utility/misskey-api.js'; import { useStream } from '@/stream.js'; @@ -15,6 +16,7 @@ import { $i } from '@/i.js'; import { instance } from '@/instance.js'; import { globalEvents } from '@/events.js'; import { getProxiedImageUrl } from '@/utility/media-proxy.js'; +import { genId } from '@/utility/id.js'; type UploadReturnType = { filePromise: Promise<Misskey.entities.DriveFile>; @@ -30,6 +32,7 @@ export class UploadAbortedError extends Error { export function uploadFile(file: File | Blob, options: { name?: string; folderId?: string | null; + isSensitive?: boolean; onProgress?: (ctx: { total: number; loaded: number; }) => void; } = {}): UploadReturnType { const xhr = new XMLHttpRequest(); @@ -138,6 +141,7 @@ export function uploadFile(file: File | Blob, options: { formData.append('force', 'true'); formData.append('file', file); formData.append('name', options.name ?? (file instanceof File ? file.name : 'untitled')); + formData.append('isSensitive', options.isSensitive ? 'true' : 'false'); if (options.folderId) formData.append('folderId', options.folderId); xhr.send(formData); @@ -154,6 +158,7 @@ export function uploadFile(file: File | Blob, options: { export function chooseFileFromPcAndUpload( options: { multiple?: boolean; + features?: UploaderFeatures; folderId?: string | null; } = {}, ): Promise<Misskey.entities.DriveFile[]> { @@ -162,6 +167,7 @@ export function chooseFileFromPcAndUpload( if (files.length === 0) return; os.launchUploader(files, { folderId: options.folderId, + features: options.features, }).then(driveFiles => { res(driveFiles); }); @@ -193,9 +199,9 @@ export function chooseFileFromUrl(): Promise<Misskey.entities.DriveFile> { type: 'url', placeholder: i18n.ts.uploadFromUrlDescription, }).then(({ canceled, result: url }) => { - if (canceled) return; + if (canceled || url == null) return; - const marker = Math.random().toString(); // TODO: UUIDã¨ã‹ä½¿ã† + const marker = genId(); // TODO: no websocketモード対応 const connection = useStream().useChannel('main'); @@ -220,7 +226,7 @@ export function chooseFileFromUrl(): Promise<Misskey.entities.DriveFile> { }); } -function select(anchorElement: HTMLElement | EventTarget | null, label: string | null, multiple: boolean): Promise<Misskey.entities.DriveFile[]> { +function select(anchorElement: HTMLElement | EventTarget | null, label: string | null, multiple: boolean, features?: UploaderDialogFeatures): Promise<Misskey.entities.DriveFile[]> { return new Promise((res, rej) => { os.popupMenu([label ? { text: label, @@ -228,7 +234,7 @@ function select(anchorElement: HTMLElement | EventTarget | null, label: string | } : undefined, { text: i18n.ts.upload, icon: 'ti ti-upload', - action: () => chooseFileFromPcAndUpload({ multiple }).then(files => res(files)), + action: () => chooseFileFromPcAndUpload({ multiple, features }).then(files => res(files)), }, { text: i18n.ts.fromDrive, icon: 'ti ti-cloud', @@ -241,12 +247,19 @@ function select(anchorElement: HTMLElement | EventTarget | null, label: string | }); } -export function selectFile(anchorElement: HTMLElement | EventTarget | null, label: string | null = null): Promise<Misskey.entities.DriveFile> { - return select(anchorElement, label, false).then(files => files[0]); -} +type SelectFileOptions<M extends boolean> = { + anchorElement: HTMLElement | EventTarget | null; + multiple: M; + label?: string | null; + features?: UploaderDialogFeatures; +}; -export function selectFiles(anchorElement: HTMLElement | EventTarget | null, label: string | null = null): Promise<Misskey.entities.DriveFile[]> { - return select(anchorElement, label, true); +export async function selectFile< + M extends boolean, + MR extends M extends true ? Misskey.entities.DriveFile[] : Misskey.entities.DriveFile, +>(opts: SelectFileOptions<M>): Promise<MR> { + const files = await select(opts.anchorElement, opts.label ?? null, opts.multiple ?? false, opts.features); + return opts.multiple ? (files as MR) : (files[0]! as MR); } export async function createCroppedImageDriveFileFromImageDriveFile(imageDriveFile: Misskey.entities.DriveFile, options: { diff --git a/packages/frontend/src/utility/get-embed-code.ts b/packages/frontend/src/utility/get-embed-code.ts index de36314ac2..5ccd46cfe2 100644 --- a/packages/frontend/src/utility/get-embed-code.ts +++ b/packages/frontend/src/utility/get-embed-code.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ import { defineAsyncComponent } from 'vue'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import { url } from '@@/js/config.js'; import { defaultEmbedParams, embedRouteWithScrollbar } from '@@/js/embed-page.js'; import type { EmbedParams, EmbeddableEntity } from '@@/js/embed-page.js'; @@ -44,7 +44,7 @@ export function normalizeEmbedParams(params: EmbedParams): Record<string, string * 埋ã‚è¾¼ã¿ã‚³ãƒ¼ãƒ‰ã‚’生æˆï¼ˆiframe IDã®ç™ºç•ªã‚‚やる) */ export function getEmbedCode(path: string, params?: EmbedParams): string { - const iframeId = 'v1_' + uuid(); // å°†æ¥embed.jsã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒä¸ŠãŒã£ãŸã¨ã用ã«v1_を付ã‘ã¦ãŠã + const iframeId = 'v1_' + genId(); // å°†æ¥embed.jsã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒä¸ŠãŒã£ãŸã¨ã用ã«v1_を付ã‘ã¦ãŠã let paramString = ''; if (params) { diff --git a/packages/frontend/src/utility/get-note-menu.ts b/packages/frontend/src/utility/get-note-menu.ts index 5b99be5fdb..ea93444f08 100644 --- a/packages/frontend/src/utility/get-note-menu.ts +++ b/packages/frontend/src/utility/get-note-menu.ts @@ -542,7 +542,7 @@ function smallerVisibility(a: Visibility, b: Visibility): Visibility { export function getRenoteMenu(props: { note: Misskey.entities.Note; - renoteButton: ShallowRef<HTMLElement | undefined>; + renoteButton: ShallowRef<HTMLElement | null | undefined>; mock?: boolean; }) { const appearNote = getAppearNote(props.note); diff --git a/packages/frontend/src/utility/id.ts b/packages/frontend/src/utility/id.ts new file mode 100644 index 0000000000..63a7f7d74c --- /dev/null +++ b/packages/frontend/src/utility/id.ts @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +// ãƒ©ãƒ³ãƒ€ãƒ ãªæ–‡å—列ãŒç”Ÿæˆã§ãれã°ãªã‚“ã§ã‚‚良ã„(時系列ã§ã‚½ãƒ¼ãƒˆã§ãã‚‹ãªã‚‰å°šè‰¯)ãŒã€ã¨ã‚Šã‚ãˆãšaidã®å®Ÿè£…ã‚’æ‹å€Ÿ + +const TIME2000 = 946684800000; +let counter = Math.floor(Math.random() * 10000); + +function getTime(time: number): string { + time = time - TIME2000; + if (time < 0) time = 0; + + return time.toString(36).padStart(8, '0'); +} + +function getNoise(): string { + return counter.toString(36).padStart(2, '0').slice(-2); +} + +export function genId(): string { + counter++; + return getTime(Date.now()) + getNoise(); +} diff --git a/packages/frontend/src/utility/image-effector/ImageEffector.ts b/packages/frontend/src/utility/image-effector/ImageEffector.ts new file mode 100644 index 0000000000..1028c57f35 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/ImageEffector.ts @@ -0,0 +1,415 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { getProxiedImageUrl } from '../media-proxy.js'; +import { initShaderProgram } from '../webgl.js'; + +type ParamTypeToPrimitive = { + 'number': number; + 'number:enum': number; + 'boolean': boolean; + 'align': { x: 'left' | 'center' | 'right'; y: 'top' | 'center' | 'bottom'; }; + 'seed': number; + 'texture': { type: 'text'; text: string | null; } | { type: 'url'; url: string | null; } | null; + 'color': [r: number, g: number, b: number]; +}; + +type ImageEffectorFxParamDefs = Record<string, { + type: keyof ParamTypeToPrimitive; + default: any; + label?: string; + toViewValue?: (v: any) => string; +}>; + +export function defineImageEffectorFx<ID extends string, PS extends ImageEffectorFxParamDefs, US extends string[]>(fx: ImageEffectorFx<ID, PS, US>) { + return fx; +} + +export type ImageEffectorFx<ID extends string = string, PS extends ImageEffectorFxParamDefs = ImageEffectorFxParamDefs, US extends string[] = string[]> = { + id: ID; + name: string; + shader: string; + uniforms: US; + params: PS, + main: (ctx: { + gl: WebGL2RenderingContext; + program: WebGLProgram; + params: { + [key in keyof PS]: ParamTypeToPrimitive[PS[key]['type']]; + }; + u: Record<US[number], WebGLUniformLocation>; + width: number; + height: number; + textures: Record<string, { + texture: WebGLTexture; + width: number; + height: number; + } | null>; + }) => void; +}; + +export type ImageEffectorLayer = { + id: string; + fxId: string; + params: Record<string, any>; +}; + +function getValue<T extends keyof ParamTypeToPrimitive>(params: Record<string, any>, k: string): ParamTypeToPrimitive[T] { + return params[k]; +} + +export class ImageEffector<IEX extends ReadonlyArray<ImageEffectorFx<any, any, any>>> { + private gl: WebGL2RenderingContext; + private canvas: HTMLCanvasElement | null = null; + private renderWidth: number; + private renderHeight: number; + private originalImage: ImageData | ImageBitmap | HTMLImageElement | HTMLCanvasElement; + private layers: ImageEffectorLayer[] = []; + private originalImageTexture: WebGLTexture; + private shaderCache: Map<string, WebGLProgram> = new Map(); + private perLayerResultTextures: Map<string, WebGLTexture> = new Map(); + private perLayerResultFrameBuffers: Map<string, WebGLFramebuffer> = new Map(); + private nopProgram: WebGLProgram; + private fxs: [...IEX]; + private paramTextures: Map<string, { texture: WebGLTexture; width: number; height: number; }> = new Map(); + + constructor(options: { + canvas: HTMLCanvasElement; + renderWidth: number; + renderHeight: number; + image: ImageData | ImageBitmap | HTMLImageElement | HTMLCanvasElement; + fxs: [...IEX]; + }) { + this.canvas = options.canvas; + this.renderWidth = options.renderWidth; + this.renderHeight = options.renderHeight; + this.originalImage = options.image; + this.fxs = options.fxs; + + this.canvas.width = this.renderWidth; + this.canvas.height = this.renderHeight; + + const gl = this.canvas.getContext('webgl2', { + preserveDrawingBuffer: false, + alpha: true, + premultipliedAlpha: false, + }); + + if (gl == null) { + throw new Error('Failed to initialize WebGL2 context'); + } + + this.gl = gl; + + gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + + const VERTICES = new Float32Array([-1, -1, -1, 1, 1, 1, -1, -1, 1, 1, 1, -1]); + const vertexBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, VERTICES, gl.STATIC_DRAW); + + this.originalImageTexture = createTexture(gl); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, this.originalImageTexture); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, this.originalImage.width, this.originalImage.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, this.originalImage); + gl.bindTexture(gl.TEXTURE_2D, null); + + this.nopProgram = initShaderProgram(this.gl, `#version 300 es + in vec2 position; + out vec2 in_uv; + + void main() { + in_uv = (position + 1.0) / 2.0; + gl_Position = vec4(position * vec2(1.0, -1.0), 0.0, 1.0); + } + `, `#version 300 es + precision mediump float; + + in vec2 in_uv; + uniform sampler2D u_texture; + out vec4 out_color; + + void main() { + out_color = texture(u_texture, in_uv); + } + `); + + // レジスタ番å·ã¯ã‚·ã‚§ãƒ¼ãƒ€ãƒ¼ãƒ—ãƒã‚°ãƒ©ãƒ ã«å±žã—ã¦ã„ã‚‹ã‚ã‘ã§ã¯ãªãã€ç‹¬ç«‹ã®å˜åœ¨ãªã®ã§ã€ã¨ã‚Šã‚ãˆãš nopProgram を使ã£ã¦è¨å®šã™ã‚‹(ãã®å¾Œã¯åŠ¹æžœãŒæŒç¶šã™ã‚‹) + // ref. https://qiita.com/emadurandal/items/5966c8374f03d4de3266 + const positionLocation = gl.getAttribLocation(this.nopProgram, 'position'); + gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0); + gl.enableVertexAttribArray(positionLocation); + } + + private renderLayer(layer: ImageEffectorLayer, preTexture: WebGLTexture, invert = false) { + const gl = this.gl; + + const fx = this.fxs.find(fx => fx.id === layer.fxId); + if (fx == null) return; + + const cachedShader = this.shaderCache.get(fx.id); + const shaderProgram = cachedShader ?? initShaderProgram(this.gl, `#version 300 es + in vec2 position; + uniform bool u_invert; + out vec2 in_uv; + + void main() { + in_uv = (position + 1.0) / 2.0; + gl_Position = u_invert ? vec4(position * vec2(1.0, -1.0), 0.0, 1.0) : vec4(position, 0.0, 1.0); + } + `, fx.shader); + if (cachedShader == null) { + this.shaderCache.set(fx.id, shaderProgram); + } + + gl.useProgram(shaderProgram); + + const in_resolution = gl.getUniformLocation(shaderProgram, 'in_resolution'); + gl.uniform2fv(in_resolution, [this.renderWidth, this.renderHeight]); + + const u_invert = gl.getUniformLocation(shaderProgram, 'u_invert'); + gl.uniform1i(u_invert, invert ? 1 : 0); + + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, preTexture); + const in_texture = gl.getUniformLocation(shaderProgram, 'in_texture'); + gl.uniform1i(in_texture, 0); + + fx.main({ + gl: gl, + program: shaderProgram, + params: Object.fromEntries( + Object.entries(fx.params as ImageEffectorFxParamDefs).map(([key, param]) => { + return [key, layer.params[key] ?? param.default]; + }), + ), + u: Object.fromEntries(fx.uniforms.map(u => [u, gl.getUniformLocation(shaderProgram, 'u_' + u)!])), + width: this.renderWidth, + height: this.renderHeight, + textures: Object.fromEntries( + Object.entries(fx.params as ImageEffectorFxParamDefs).map(([k, v]) => { + if (v.type !== 'texture') return [k, null]; + const param = getValue<typeof v.type>(layer.params, k); + if (param == null) return [k, null]; + const texture = this.paramTextures.get(this.getTextureKeyForParam(param)) ?? null; + return [k, texture]; + })), + }); + + gl.drawArrays(gl.TRIANGLES, 0, 6); + } + + public render() { + const gl = this.gl; + + // 入力をãã®ã¾ã¾å‡ºåŠ› + if (this.layers.length === 0) { + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, this.originalImageTexture); + + gl.useProgram(this.nopProgram); + gl.uniform1i(gl.getUniformLocation(this.nopProgram, 'u_texture')!, 0); + + gl.drawArrays(gl.TRIANGLES, 0, 6); + return; + } + + let preTexture = this.originalImageTexture; + + for (const layer of this.layers) { + const isLast = layer === this.layers.at(-1); + + const cachedResultTexture = this.perLayerResultTextures.get(layer.id); + const resultTexture = cachedResultTexture ?? createTexture(gl); + if (cachedResultTexture == null) { + this.perLayerResultTextures.set(layer.id, resultTexture); + } + gl.bindTexture(gl.TEXTURE_2D, resultTexture); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, this.renderWidth, this.renderHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); + gl.bindTexture(gl.TEXTURE_2D, null); + + if (isLast) { + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + } else { + const cachedResultFrameBuffer = this.perLayerResultFrameBuffers.get(layer.id); + const resultFrameBuffer = cachedResultFrameBuffer ?? gl.createFramebuffer()!; + if (cachedResultFrameBuffer == null) { + this.perLayerResultFrameBuffers.set(layer.id, resultFrameBuffer); + } + gl.bindFramebuffer(gl.FRAMEBUFFER, resultFrameBuffer); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, resultTexture, 0); + } + + this.renderLayer(layer, preTexture, isLast); + + preTexture = resultTexture; + } + } + + public async setLayers(layers: ImageEffectorLayer[]) { + this.layers = layers; + + const unused = new Set(this.paramTextures.keys()); + + for (const layer of layers) { + const fx = this.fxs.find(fx => fx.id === layer.fxId); + if (fx == null) continue; + + for (const k of Object.keys(layer.params)) { + const paramDef = fx.params[k]; + if (paramDef == null) continue; + if (paramDef.type !== 'texture') continue; + const v = getValue<typeof paramDef.type>(layer.params, k); + if (v == null) continue; + + const textureKey = this.getTextureKeyForParam(v); + unused.delete(textureKey); + if (this.paramTextures.has(textureKey)) continue; + + if (_DEV_) console.log(`Baking texture of <${textureKey}>...`); + + const texture = v.type === 'text' ? await createTextureFromText(this.gl, v.text) : v.type === 'url' ? await createTextureFromUrl(this.gl, v.url) : null; + if (texture == null) continue; + + this.paramTextures.set(textureKey, texture); + } + } + + for (const k of unused) { + if (_DEV_) console.log(`Dispose unused texture <${k}>...`); + this.gl.deleteTexture(this.paramTextures.get(k)!.texture); + this.paramTextures.delete(k); + } + + this.render(); + } + + public changeResolution(width: number, height: number) { + this.renderWidth = width; + this.renderHeight = height; + if (this.canvas) { + this.canvas.width = this.renderWidth; + this.canvas.height = this.renderHeight; + } + this.gl.viewport(0, 0, this.renderWidth, this.renderHeight); + } + + private getTextureKeyForParam(v: ParamTypeToPrimitive['texture']) { + if (v == null) return ''; + return v.type === 'text' ? `text:${v.text}` : v.type === 'url' ? `url:${v.url}` : ''; + } + + /* + * disposeCanvas = true ã ã¨loseContextを呼ã¶ãŸã‚ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§æ¸¡ã•れãŸcanvasã‚‚å†åˆ©ç”¨ä¸å¯ã«ãªã‚‹ã®ã§æ³¨æ„ + */ + public destroy(disposeCanvas = true) { + this.gl.deleteProgram(this.nopProgram); + + for (const shader of this.shaderCache.values()) { + this.gl.deleteProgram(shader); + } + this.shaderCache.clear(); + + for (const texture of this.perLayerResultTextures.values()) { + this.gl.deleteTexture(texture); + } + this.perLayerResultTextures.clear(); + + for (const framebuffer of this.perLayerResultFrameBuffers.values()) { + this.gl.deleteFramebuffer(framebuffer); + } + this.perLayerResultFrameBuffers.clear(); + + for (const texture of this.paramTextures.values()) { + this.gl.deleteTexture(texture.texture); + } + this.paramTextures.clear(); + + this.gl.deleteTexture(this.originalImageTexture); + + if (disposeCanvas) { + const loseContextExt = this.gl.getExtension('WEBGL_lose_context'); + if (loseContextExt) loseContextExt.loseContext(); + } + } +} + +function createTexture(gl: WebGL2RenderingContext): WebGLTexture { + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.MIRRORED_REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.MIRRORED_REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.bindTexture(gl.TEXTURE_2D, null); + return texture; +} + +async function createTextureFromUrl(gl: WebGL2RenderingContext, imageUrl: string | null): Promise<{ texture: WebGLTexture, width: number, height: number } | null> { + if (imageUrl == null || imageUrl.trim() === '') return null; + + const image = await new Promise<HTMLImageElement>((resolve, reject) => { + const img = new Image(); + img.onload = () => resolve(img); + img.onerror = reject; + img.src = getProxiedImageUrl(imageUrl); // CORSå¯¾ç– + }).catch(() => null); + + if (image == null) return null; + + const texture = createTexture(gl); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, image.width, image.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, image); + gl.bindTexture(gl.TEXTURE_2D, null); + + return { + texture, + width: image.width, + height: image.height, + }; +} + +async function createTextureFromText(gl: WebGL2RenderingContext, text: string | null, resolution = 2048): Promise<{ texture: WebGLTexture, width: number, height: number } | null> { + if (text == null || text.trim() === '') return null; + + const ctx = window.document.createElement('canvas').getContext('2d')!; + ctx.canvas.width = resolution; + ctx.canvas.height = resolution / 4; + const fontSize = resolution / 32; + const margin = fontSize / 2; + ctx.shadowColor = '#000000'; + ctx.shadowBlur = fontSize / 4; + + //ctx.fillStyle = '#00ff00'; + //ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + + ctx.fillStyle = '#ffffff'; + ctx.font = `bold ${fontSize}px sans-serif`; + ctx.textBaseline = 'middle'; + + ctx.fillText(text, margin, ctx.canvas.height / 2); + + const textMetrics = ctx.measureText(text); + const cropWidth = (Math.ceil(textMetrics.actualBoundingBoxRight + textMetrics.actualBoundingBoxLeft) + margin + margin); + const cropHeight = (Math.ceil(textMetrics.actualBoundingBoxAscent + textMetrics.actualBoundingBoxDescent) + margin + margin); + const data = ctx.getImageData(0, (ctx.canvas.height / 2) - (cropHeight / 2), ctx.canvas.width, ctx.canvas.height); + + const texture = createTexture(gl); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, cropWidth, cropHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, data); + gl.bindTexture(gl.TEXTURE_2D, null); + + const info = { + texture: texture, + width: cropWidth, + height: cropHeight, + }; + + ctx.canvas.remove(); + + return info; +} diff --git a/packages/frontend/src/utility/image-effector/fxs.ts b/packages/frontend/src/utility/image-effector/fxs.ts new file mode 100644 index 0000000000..1fa48aea15 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs.ts @@ -0,0 +1,39 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { FX_checker } from './fxs/checker.js'; +import { FX_chromaticAberration } from './fxs/chromaticAberration.js'; +import { FX_colorAdjust } from './fxs/colorAdjust.js'; +import { FX_colorClamp } from './fxs/colorClamp.js'; +import { FX_colorClampAdvanced } from './fxs/colorClampAdvanced.js'; +import { FX_distort } from './fxs/distort.js'; +import { FX_polkadot } from './fxs/polkadot.js'; +import { FX_tearing } from './fxs/tearing.js'; +import { FX_grayscale } from './fxs/grayscale.js'; +import { FX_invert } from './fxs/invert.js'; +import { FX_mirror } from './fxs/mirror.js'; +import { FX_stripe } from './fxs/stripe.js'; +import { FX_threshold } from './fxs/threshold.js'; +import { FX_zoomLines } from './fxs/zoomLines.js'; +import { FX_blockNoise } from './fxs/blockNoise.js'; +import type { ImageEffectorFx } from './ImageEffector.js'; + +export const FXS = [ + FX_mirror, + FX_invert, + FX_grayscale, + FX_colorAdjust, + FX_colorClamp, + FX_colorClampAdvanced, + FX_distort, + FX_threshold, + FX_zoomLines, + FX_stripe, + FX_polkadot, + FX_checker, + FX_chromaticAberration, + FX_tearing, + FX_blockNoise, +] as const satisfies ImageEffectorFx<string, any>[]; diff --git a/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts b/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts new file mode 100644 index 0000000000..bf7eaa8bda --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/blockNoise.ts @@ -0,0 +1,119 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import seedrandom from 'seedrandom'; +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform int u_amount; +uniform float u_shiftStrengths[128]; +uniform vec2 u_shiftOrigins[128]; +uniform vec2 u_shiftSizes[128]; +uniform float u_channelShift; +out vec4 out_color; + +void main() { + // TODO: ピクセル毎ã«è¨ˆç®—ã™ã‚‹å¿…è¦ã¯ãªã„ã®ã§uniformã«ã™ã‚‹ + float aspect_ratio = min(in_resolution.x, in_resolution.y) / max(in_resolution.x, in_resolution.y); + float aspect_ratio_x = in_resolution.x > in_resolution.y ? 1.0 : aspect_ratio; + float aspect_ratio_y = in_resolution.x < in_resolution.y ? 1.0 : aspect_ratio; + + float v = 0.0; + + for (int i = 0; i < u_amount; i++) { + if ( + in_uv.x * aspect_ratio_x > ((u_shiftOrigins[i].x * aspect_ratio_x) - u_shiftSizes[i].x) && + in_uv.x * aspect_ratio_x < ((u_shiftOrigins[i].x * aspect_ratio_x) + u_shiftSizes[i].x) && + in_uv.y * aspect_ratio_y > ((u_shiftOrigins[i].y * aspect_ratio_y) - u_shiftSizes[i].y) && + in_uv.y * aspect_ratio_y < ((u_shiftOrigins[i].y * aspect_ratio_y) + u_shiftSizes[i].y) + ) { + v += u_shiftStrengths[i]; + } + } + + float r = texture(in_texture, vec2(in_uv.x + (v * (1.0 + u_channelShift)), in_uv.y)).r; + float g = texture(in_texture, vec2(in_uv.x + v, in_uv.y)).g; + float b = texture(in_texture, vec2(in_uv.x + (v * (1.0 + (u_channelShift / 2.0))), in_uv.y)).b; + float a = texture(in_texture, vec2(in_uv.x + v, in_uv.y)).a; + out_color = vec4(r, g, b, a); +} +`; + +export const FX_blockNoise = defineImageEffectorFx({ + id: 'blockNoise' as const, + name: i18n.ts._imageEffector._fxs.glitch + ': ' + i18n.ts._imageEffector._fxs.blockNoise, + shader, + uniforms: ['amount', 'channelShift'] as const, + params: { + amount: { + type: 'number' as const, + default: 50, + min: 1, + max: 100, + step: 1, + }, + strength: { + type: 'number' as const, + default: 0.05, + min: -1, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + width: { + type: 'number' as const, + default: 0.05, + min: 0.01, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + height: { + type: 'number' as const, + default: 0.01, + min: 0.01, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + channelShift: { + type: 'number' as const, + default: 0, + min: 0, + max: 10, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + seed: { + type: 'seed' as const, + default: 100, + }, + }, + main: ({ gl, program, u, params }) => { + gl.uniform1i(u.amount, params.amount); + gl.uniform1f(u.channelShift, params.channelShift); + + const margin = 0; + + const rnd = seedrandom(params.seed.toString()); + + for (let i = 0; i < params.amount; i++) { + const o = gl.getUniformLocation(program, `u_shiftOrigins[${i.toString()}]`); + gl.uniform2f(o, (rnd() * (1 + (margin * 2))) - margin, (rnd() * (1 + (margin * 2))) - margin); + + const s = gl.getUniformLocation(program, `u_shiftStrengths[${i.toString()}]`); + gl.uniform1f(s, (1 - (rnd() * 2)) * params.strength); + + const sizes = gl.getUniformLocation(program, `u_shiftSizes[${i.toString()}]`); + gl.uniform2f(sizes, params.width, params.height); + } + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/checker.ts b/packages/frontend/src/utility/image-effector/fxs/checker.ts new file mode 100644 index 0000000000..c426308951 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/checker.ts @@ -0,0 +1,89 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +const float PI = 3.141592653589793; +const float TWO_PI = 6.283185307179586; +const float HALF_PI = 1.5707963267948966; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform float u_angle; +uniform float u_scale; +uniform vec3 u_color; +uniform float u_opacity; +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float x_ratio = max(in_resolution.x / in_resolution.y, 1.0); + float y_ratio = max(in_resolution.y / in_resolution.x, 1.0); + + float angle = -(u_angle * PI); + vec2 centeredUv = (in_uv - vec2(0.5, 0.5)) * vec2(x_ratio, y_ratio); + vec2 rotatedUV = vec2( + centeredUv.x * cos(angle) - centeredUv.y * sin(angle), + centeredUv.x * sin(angle) + centeredUv.y * cos(angle) + ); + + float fmodResult = mod(floor(u_scale * rotatedUV.x) + floor(u_scale * rotatedUV.y), 2.0); + float fin = max(sign(fmodResult), 0.0); + + out_color = vec4( + mix(in_color.r, u_color.r, fin * u_opacity), + mix(in_color.g, u_color.g, fin * u_opacity), + mix(in_color.b, u_color.b, fin * u_opacity), + in_color.a + ); +} +`; + +export const FX_checker = defineImageEffectorFx({ + id: 'checker' as const, + name: i18n.ts._imageEffector._fxs.checker, + shader, + uniforms: ['angle', 'scale', 'color', 'opacity'] as const, + params: { + angle: { + type: 'number' as const, + default: 0, + min: -1.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 90) + '°', + }, + scale: { + type: 'number' as const, + default: 3.0, + min: 1.0, + max: 10.0, + step: 0.1, + }, + color: { + type: 'color' as const, + default: [1, 1, 1], + }, + opacity: { + type: 'number' as const, + default: 0.5, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.angle, params.angle / 2); + gl.uniform1f(u.scale, params.scale * params.scale); + gl.uniform3f(u.color, params.color[0], params.color[1], params.color[2]); + gl.uniform1f(u.opacity, params.opacity); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/chromaticAberration.ts b/packages/frontend/src/utility/image-effector/fxs/chromaticAberration.ts new file mode 100644 index 0000000000..82d7d883aa --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/chromaticAberration.ts @@ -0,0 +1,76 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +out vec4 out_color; +uniform float u_amount; +uniform float u_start; +uniform bool u_normalize; + +void main() { + int samples = 64; + float r_strength = 1.0; + float g_strength = 1.5; + float b_strength = 2.0; + + vec2 size = vec2(in_resolution.x, in_resolution.y); + + vec4 accumulator = vec4(0.0); + float normalisedValue = length((in_uv - 0.5) * 2.0); + float strength = clamp((normalisedValue - u_start) * (1.0 / (1.0 - u_start)), 0.0, 1.0); + + vec2 vector = (u_normalize ? normalize(in_uv - vec2(0.5)) : in_uv - vec2(0.5)); + vec2 velocity = vector * strength * u_amount; + + vec2 rOffset = -vector * strength * (u_amount * r_strength); + vec2 gOffset = -vector * strength * (u_amount * g_strength); + vec2 bOffset = -vector * strength * (u_amount * b_strength); + + for (int i = 0; i < samples; i++) { + accumulator.r += texture(in_texture, in_uv + rOffset).r; + rOffset -= velocity / float(samples); + + accumulator.g += texture(in_texture, in_uv + gOffset).g; + gOffset -= velocity / float(samples); + + accumulator.b += texture(in_texture, in_uv + bOffset).b; + bOffset -= velocity / float(samples); + } + + out_color = vec4(vec3(accumulator / float(samples)), 1.0); +} +`; + +export const FX_chromaticAberration = defineImageEffectorFx({ + id: 'chromaticAberration' as const, + name: i18n.ts._imageEffector._fxs.chromaticAberration, + shader, + uniforms: ['amount', 'start', 'normalize'] as const, + params: { + normalize: { + type: 'boolean' as const, + default: false, + }, + amount: { + type: 'number' as const, + default: 0.1, + min: 0.0, + max: 1.0, + step: 0.01, + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.amount, params.amount); + gl.uniform1i(u.normalize, params.normalize ? 1 : 0); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts b/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts new file mode 100644 index 0000000000..c38490e198 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/colorAdjust.ts @@ -0,0 +1,141 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform float u_brightness; +uniform float u_contrast; +uniform float u_hue; +uniform float u_lightness; +uniform float u_saturation; +out vec4 out_color; + +// RGB to HSL +vec3 rgb2hsl(vec3 c) { + float maxc = max(max(c.r, c.g), c.b); + float minc = min(min(c.r, c.g), c.b); + float l = (maxc + minc) * 0.5; + float s = 0.0; + float h = 0.0; + if (maxc != minc) { + float d = maxc - minc; + s = l > 0.5 ? d / (2.0 - maxc - minc) : d / (maxc + minc); + if (maxc == c.r) { + h = (c.g - c.b) / d + (c.g < c.b ? 6.0 : 0.0); + } else if (maxc == c.g) { + h = (c.b - c.r) / d + 2.0; + } else { + h = (c.r - c.g) / d + 4.0; + } + h /= 6.0; + } + return vec3(h, s, l); +} + +// HSL to RGB +float hue2rgb(float p, float q, float t) { + if (t < 0.0) t += 1.0; + if (t > 1.0) t -= 1.0; + if (t < 1.0/6.0) return p + (q - p) * 6.0 * t; + if (t < 1.0/2.0) return q; + if (t < 2.0/3.0) return p + (q - p) * (2.0/3.0 - t) * 6.0; + return p; +} +vec3 hsl2rgb(vec3 hsl) { + float r, g, b; + float h = hsl.x; + float s = hsl.y; + float l = hsl.z; + if (s == 0.0) { + r = g = b = l; + } else { + float q = l < 0.5 ? l * (1.0 + s) : l + s - l * s; + float p = 2.0 * l - q; + r = hue2rgb(p, q, h + 1.0/3.0); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1.0/3.0); + } + return vec3(r, g, b); +} + +void main() { + vec4 in_color = texture(in_texture, in_uv); + vec3 color = in_color.rgb; + + color = color * u_brightness; + color += vec3(u_lightness); + color = (color - 0.5) * u_contrast + 0.5; + + vec3 hsl = rgb2hsl(color); + hsl.x = mod(hsl.x + u_hue, 1.0); + hsl.y = clamp(hsl.y * u_saturation, 0.0, 1.0); + + color = hsl2rgb(hsl); + out_color = vec4(color, in_color.a); +} +`; + +export const FX_colorAdjust = defineImageEffectorFx({ + id: 'colorAdjust' as const, + name: i18n.ts._imageEffector._fxs.colorAdjust, + shader, + uniforms: ['lightness', 'contrast', 'hue', 'brightness', 'saturation'] as const, + params: { + lightness: { + type: 'number' as const, + default: 0, + min: -1, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + contrast: { + type: 'number' as const, + default: 1, + min: 0, + max: 4, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + hue: { + type: 'number' as const, + default: 0, + min: -1, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 180) + '°', + }, + brightness: { + type: 'number' as const, + default: 1, + min: 0, + max: 4, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + saturation: { + type: 'number' as const, + default: 1, + min: 0, + max: 4, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.brightness, params.brightness); + gl.uniform1f(u.contrast, params.contrast); + gl.uniform1f(u.hue, params.hue / 2); + gl.uniform1f(u.lightness, params.lightness); + gl.uniform1f(u.saturation, params.saturation); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts b/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts new file mode 100644 index 0000000000..ae0d92b8ae --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/colorClamp.ts @@ -0,0 +1,55 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform float u_max; +uniform float u_min; +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float r = min(max(in_color.r, u_min), u_max); + float g = min(max(in_color.g, u_min), u_max); + float b = min(max(in_color.b, u_min), u_max); + out_color = vec4(r, g, b, in_color.a); +} +`; + +export const FX_colorClamp = defineImageEffectorFx({ + id: 'colorClamp' as const, + name: i18n.ts._imageEffector._fxs.colorClamp, + shader, + uniforms: ['max', 'min'] as const, + params: { + max: { + type: 'number' as const, + default: 1.0, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + min: { + type: 'number' as const, + default: -1.0, + min: -1.0, + max: 0.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.max, params.max); + gl.uniform1f(u.min, 1.0 + params.min); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts b/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts new file mode 100644 index 0000000000..b9387900fb --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/colorClampAdvanced.ts @@ -0,0 +1,95 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform float u_rMax; +uniform float u_rMin; +uniform float u_gMax; +uniform float u_gMin; +uniform float u_bMax; +uniform float u_bMin; +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float r = min(max(in_color.r, u_rMin), u_rMax); + float g = min(max(in_color.g, u_gMin), u_gMax); + float b = min(max(in_color.b, u_bMin), u_bMax); + out_color = vec4(r, g, b, in_color.a); +} +`; + +export const FX_colorClampAdvanced = defineImageEffectorFx({ + id: 'colorClampAdvanced' as const, + name: i18n.ts._imageEffector._fxs.colorClampAdvanced, + shader, + uniforms: ['rMax', 'rMin', 'gMax', 'gMin', 'bMax', 'bMin'] as const, + params: { + rMax: { + type: 'number' as const, + default: 1.0, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + rMin: { + type: 'number' as const, + default: -1.0, + min: -1.0, + max: 0.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + gMax: { + type: 'number' as const, + default: 1.0, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + gMin: { + type: 'number' as const, + default: -1.0, + min: -1.0, + max: 0.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + bMax: { + type: 'number' as const, + default: 1.0, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + bMin: { + type: 'number' as const, + default: -1.0, + min: -1.0, + max: 0.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.rMax, params.rMax); + gl.uniform1f(u.rMin, 1.0 + params.rMin); + gl.uniform1f(u.gMax, params.gMax); + gl.uniform1f(u.gMin, 1.0 + params.gMin); + gl.uniform1f(u.bMax, params.bMax); + gl.uniform1f(u.bMin, 1.0 + params.bMin); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/distort.ts b/packages/frontend/src/utility/image-effector/fxs/distort.ts new file mode 100644 index 0000000000..4b1aefc159 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/distort.ts @@ -0,0 +1,77 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +const float PI = 3.141592653589793; +const float TWO_PI = 6.283185307179586; +const float HALF_PI = 1.5707963267948966; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform float u_phase; +uniform float u_frequency; +uniform float u_strength; +uniform int u_direction; // 0: vertical, 1: horizontal +out vec4 out_color; + +void main() { + float v = u_direction == 0 ? + sin((HALF_PI + (u_phase * PI) - (u_frequency / 2.0)) + in_uv.y * u_frequency) * u_strength : + sin((HALF_PI + (u_phase * PI) - (u_frequency / 2.0)) + in_uv.x * u_frequency) * u_strength; + vec4 in_color = u_direction == 0 ? + texture(in_texture, vec2(in_uv.x + v, in_uv.y)) : + texture(in_texture, vec2(in_uv.x, in_uv.y + v)); + out_color = in_color; +} +`; + +export const FX_distort = defineImageEffectorFx({ + id: 'distort' as const, + name: i18n.ts._imageEffector._fxs.distort, + shader, + uniforms: ['phase', 'frequency', 'strength', 'direction'] as const, + params: { + direction: { + type: 'number:enum' as const, + enum: [{ value: 0, label: 'v' }, { value: 1, label: 'h' }], + default: 1, + }, + phase: { + type: 'number' as const, + default: 0.0, + min: -1.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + frequency: { + type: 'number' as const, + default: 30, + min: 0, + max: 100, + step: 0.1, + }, + strength: { + type: 'number' as const, + default: 0.05, + min: 0, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.phase, params.phase); + gl.uniform1f(u.frequency, params.frequency); + gl.uniform1f(u.strength, params.strength); + gl.uniform1i(u.direction, params.direction); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/grayscale.ts b/packages/frontend/src/utility/image-effector/fxs/grayscale.ts new file mode 100644 index 0000000000..8f33706ae7 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/grayscale.ts @@ -0,0 +1,37 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +out vec4 out_color; + +float getBrightness(vec4 color) { + return (color.r + color.g + color.b) / 3.0; +} + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float brightness = getBrightness(in_color); + out_color = vec4(brightness, brightness, brightness, in_color.a); +} +`; + +export const FX_grayscale = defineImageEffectorFx({ + id: 'grayscale' as const, + name: i18n.ts._imageEffector._fxs.grayscale, + shader, + uniforms: [] as const, + params: { + }, + main: ({ gl, params }) => { + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/invert.ts b/packages/frontend/src/utility/image-effector/fxs/invert.ts new file mode 100644 index 0000000000..220a2dea30 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/invert.ts @@ -0,0 +1,53 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform bool u_r; +uniform bool u_g; +uniform bool u_b; +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + out_color.r = u_r ? 1.0 - in_color.r : in_color.r; + out_color.g = u_g ? 1.0 - in_color.g : in_color.g; + out_color.b = u_b ? 1.0 - in_color.b : in_color.b; + out_color.a = in_color.a; +} +`; + +export const FX_invert = defineImageEffectorFx({ + id: 'invert' as const, + name: i18n.ts._imageEffector._fxs.invert, + shader, + uniforms: ['r', 'g', 'b'] as const, + params: { + r: { + type: 'boolean' as const, + default: true, + }, + g: { + type: 'boolean' as const, + default: true, + }, + b: { + type: 'boolean' as const, + default: true, + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1i(u.r, params.r ? 1 : 0); + gl.uniform1i(u.g, params.g ? 1 : 0); + gl.uniform1i(u.b, params.b ? 1 : 0); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/mirror.ts b/packages/frontend/src/utility/image-effector/fxs/mirror.ts new file mode 100644 index 0000000000..5946a2e0dc --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/mirror.ts @@ -0,0 +1,58 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform int u_h; +uniform int u_v; +out vec4 out_color; + +void main() { + vec2 uv = in_uv; + if (u_h == -1 && in_uv.x > 0.5) { + uv.x = 1.0 - uv.x; + } + if (u_h == 1 && in_uv.x < 0.5) { + uv.x = 1.0 - uv.x; + } + if (u_v == -1 && in_uv.y > 0.5) { + uv.y = 1.0 - uv.y; + } + if (u_v == 1 && in_uv.y < 0.5) { + uv.y = 1.0 - uv.y; + } + out_color = texture(in_texture, uv); +} +`; + +export const FX_mirror = defineImageEffectorFx({ + id: 'mirror' as const, + name: i18n.ts._imageEffector._fxs.mirror, + shader, + uniforms: ['h', 'v'] as const, + params: { + h: { + type: 'number:enum' as const, + enum: [{ value: -1, label: '<-' }, { value: 0, label: '|' }, { value: 1, label: '->' }], + default: -1, + }, + v: { + type: 'number:enum' as const, + enum: [{ value: -1, label: '^' }, { value: 0, label: '-' }, { value: 1, label: 'v' }], + default: 0, + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1i(u.h, params.h); + gl.uniform1i(u.v, params.v); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/polkadot.ts b/packages/frontend/src/utility/image-effector/fxs/polkadot.ts new file mode 100644 index 0000000000..14f6f91148 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/polkadot.ts @@ -0,0 +1,154 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +const float PI = 3.141592653589793; +const float TWO_PI = 6.283185307179586; +const float HALF_PI = 1.5707963267948966; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform float u_angle; +uniform float u_scale; +uniform float u_major_radius; +uniform float u_major_opacity; +uniform float u_minor_divisions; +uniform float u_minor_radius; +uniform float u_minor_opacity; +uniform vec3 u_color; +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float x_ratio = max(in_resolution.x / in_resolution.y, 1.0); + float y_ratio = max(in_resolution.y / in_resolution.x, 1.0); + + float angle = -(u_angle * PI); + vec2 centeredUv = (in_uv - vec2(0.5, 0.5)) * vec2(x_ratio, y_ratio); + vec2 rotatedUV = vec2( + centeredUv.x * cos(angle) - centeredUv.y * sin(angle), + centeredUv.x * sin(angle) + centeredUv.y * cos(angle) + ); + + float major_modX = mod(rotatedUV.x, (1.0 / u_scale)); + float major_modY = mod(rotatedUV.y, (1.0 / u_scale)); + float major_threshold = ((u_major_radius / 2.0) / u_scale); + if ( + length(vec2(major_modX, major_modY)) < major_threshold || + length(vec2((1.0 / u_scale) - major_modX, major_modY)) < major_threshold || + length(vec2(major_modX, (1.0 / u_scale) - major_modY)) < major_threshold || + length(vec2((1.0 / u_scale) - major_modX, (1.0 / u_scale) - major_modY)) < major_threshold + ) { + out_color = vec4( + mix(in_color.r, u_color.r, u_major_opacity), + mix(in_color.g, u_color.g, u_major_opacity), + mix(in_color.b, u_color.b, u_major_opacity), + in_color.a + ); + return; + } + + float minor_modX = mod(rotatedUV.x, (1.0 / u_scale / u_minor_divisions)); + float minor_modY = mod(rotatedUV.y, (1.0 / u_scale / u_minor_divisions)); + float minor_threshold = ((u_minor_radius / 2.0) / (u_minor_divisions * u_scale)); + if ( + length(vec2(minor_modX, minor_modY)) < minor_threshold || + length(vec2((1.0 / u_scale / u_minor_divisions) - minor_modX, minor_modY)) < minor_threshold || + length(vec2(minor_modX, (1.0 / u_scale / u_minor_divisions) - minor_modY)) < minor_threshold || + length(vec2((1.0 / u_scale / u_minor_divisions) - minor_modX, (1.0 / u_scale / u_minor_divisions) - minor_modY)) < minor_threshold + ) { + out_color = vec4( + mix(in_color.r, u_color.r, u_minor_opacity), + mix(in_color.g, u_color.g, u_minor_opacity), + mix(in_color.b, u_color.b, u_minor_opacity), + in_color.a + ); + return; + } + + out_color = in_color; +} +`; + +export const FX_polkadot = defineImageEffectorFx({ + id: 'polkadot' as const, + name: i18n.ts._imageEffector._fxs.polkadot, + shader, + uniforms: ['angle', 'scale', 'major_radius', 'major_opacity', 'minor_divisions', 'minor_radius', 'minor_opacity', 'color'] as const, + params: { + angle: { + type: 'number' as const, + default: 0, + min: -1.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 90) + '°', + }, + scale: { + type: 'number' as const, + default: 3.0, + min: 1.0, + max: 10.0, + step: 0.1, + }, + majorRadius: { + type: 'number' as const, + default: 0.1, + min: 0.0, + max: 1.0, + step: 0.01, + }, + majorOpacity: { + type: 'number' as const, + default: 0.75, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + minorDivisions: { + type: 'number' as const, + default: 4, + min: 0, + max: 16, + step: 1, + }, + minorRadius: { + type: 'number' as const, + default: 0.25, + min: 0.0, + max: 1.0, + step: 0.01, + }, + minorOpacity: { + type: 'number' as const, + default: 0.5, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + color: { + type: 'color' as const, + default: [1, 1, 1], + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.angle, params.angle / 2); + gl.uniform1f(u.scale, params.scale * params.scale); + gl.uniform1f(u.major_radius, params.majorRadius); + gl.uniform1f(u.major_opacity, params.majorOpacity); + gl.uniform1f(u.minor_divisions, params.minorDivisions); + gl.uniform1f(u.minor_radius, params.minorRadius); + gl.uniform3f(u.color, params.color[0], params.color[1], params.color[2]); + gl.uniform1f(u.minor_opacity, params.minorOpacity); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/stripe.ts b/packages/frontend/src/utility/image-effector/fxs/stripe.ts new file mode 100644 index 0000000000..f6c1d2278d --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/stripe.ts @@ -0,0 +1,101 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +const float PI = 3.141592653589793; +const float TWO_PI = 6.283185307179586; +const float HALF_PI = 1.5707963267948966; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform float u_angle; +uniform float u_frequency; +uniform float u_phase; +uniform float u_threshold; +uniform vec3 u_color; +uniform float u_opacity; +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float x_ratio = max(in_resolution.x / in_resolution.y, 1.0); + float y_ratio = max(in_resolution.y / in_resolution.x, 1.0); + + float angle = -(u_angle * PI); + vec2 centeredUv = (in_uv - vec2(0.5, 0.5)) * vec2(x_ratio, y_ratio); + vec2 rotatedUV = vec2( + centeredUv.x * cos(angle) - centeredUv.y * sin(angle), + centeredUv.x * sin(angle) + centeredUv.y * cos(angle) + ); + + float phase = u_phase * TWO_PI; + float value = (1.0 + sin((rotatedUV.x * u_frequency - HALF_PI) + phase)) / 2.0; + value = value < u_threshold ? 1.0 : 0.0; + out_color = vec4( + mix(in_color.r, u_color.r, value * u_opacity), + mix(in_color.g, u_color.g, value * u_opacity), + mix(in_color.b, u_color.b, value * u_opacity), + in_color.a + ); +} +`; + +export const FX_stripe = defineImageEffectorFx({ + id: 'stripe' as const, + name: i18n.ts._imageEffector._fxs.stripe, + shader, + uniforms: ['angle', 'frequency', 'phase', 'threshold', 'color', 'opacity'] as const, + params: { + angle: { + type: 'number' as const, + default: 0.5, + min: -1.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 90) + '°', + }, + frequency: { + type: 'number' as const, + default: 10.0, + min: 1.0, + max: 30.0, + step: 0.1, + }, + threshold: { + type: 'number' as const, + default: 0.1, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + color: { + type: 'color' as const, + default: [1, 1, 1], + }, + opacity: { + type: 'number' as const, + default: 0.5, + min: 0.0, + max: 1.0, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.angle, params.angle / 2); + gl.uniform1f(u.frequency, params.frequency * params.frequency); + gl.uniform1f(u.phase, 0.0); + gl.uniform1f(u.threshold, params.threshold); + gl.uniform3f(u.color, params.color[0], params.color[1], params.color[2]); + gl.uniform1f(u.opacity, params.opacity); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/tearing.ts b/packages/frontend/src/utility/image-effector/fxs/tearing.ts new file mode 100644 index 0000000000..d5f1e062ec --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/tearing.ts @@ -0,0 +1,99 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import seedrandom from 'seedrandom'; +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform int u_amount; +uniform float u_shiftStrengths[128]; +uniform float u_shiftOrigins[128]; +uniform float u_shiftHeights[128]; +uniform float u_channelShift; +out vec4 out_color; + +void main() { + float v = 0.0; + + for (int i = 0; i < u_amount; i++) { + if (in_uv.y > (u_shiftOrigins[i] - u_shiftHeights[i]) && in_uv.y < (u_shiftOrigins[i] + u_shiftHeights[i])) { + v += u_shiftStrengths[i]; + } + } + + float r = texture(in_texture, vec2(in_uv.x + (v * (1.0 + u_channelShift)), in_uv.y)).r; + float g = texture(in_texture, vec2(in_uv.x + v, in_uv.y)).g; + float b = texture(in_texture, vec2(in_uv.x + (v * (1.0 + (u_channelShift / 2.0))), in_uv.y)).b; + float a = texture(in_texture, vec2(in_uv.x + v, in_uv.y)).a; + out_color = vec4(r, g, b, a); +} +`; + +export const FX_tearing = defineImageEffectorFx({ + id: 'tearing' as const, + name: i18n.ts._imageEffector._fxs.glitch + ': ' + i18n.ts._imageEffector._fxs.tearing, + shader, + uniforms: ['amount', 'channelShift'] as const, + params: { + amount: { + type: 'number' as const, + default: 3, + min: 1, + max: 100, + step: 1, + }, + strength: { + type: 'number' as const, + default: 0.05, + min: -1, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + size: { + type: 'number' as const, + default: 0.2, + min: 0, + max: 1, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + channelShift: { + type: 'number' as const, + default: 0.5, + min: 0, + max: 10, + step: 0.01, + toViewValue: v => Math.round(v * 100) + '%', + }, + seed: { + type: 'seed' as const, + default: 100, + }, + }, + main: ({ gl, program, u, params }) => { + gl.uniform1i(u.amount, params.amount); + gl.uniform1f(u.channelShift, params.channelShift); + + const rnd = seedrandom(params.seed.toString()); + + for (let i = 0; i < params.amount; i++) { + const o = gl.getUniformLocation(program, `u_shiftOrigins[${i.toString()}]`); + gl.uniform1f(o, rnd()); + + const s = gl.getUniformLocation(program, `u_shiftStrengths[${i.toString()}]`); + gl.uniform1f(s, (1 - (rnd() * 2)) * params.strength); + + const h = gl.getUniformLocation(program, `u_shiftHeights[${i.toString()}]`); + gl.uniform1f(h, rnd() * params.size); + } + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/threshold.ts b/packages/frontend/src/utility/image-effector/fxs/threshold.ts new file mode 100644 index 0000000000..f2b8b107fd --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/threshold.ts @@ -0,0 +1,62 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform float u_r; +uniform float u_g; +uniform float u_b; +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float r = in_color.r < u_r ? 0.0 : 1.0; + float g = in_color.g < u_g ? 0.0 : 1.0; + float b = in_color.b < u_b ? 0.0 : 1.0; + out_color = vec4(r, g, b, in_color.a); +} +`; + +export const FX_threshold = defineImageEffectorFx({ + id: 'threshold' as const, + name: i18n.ts._imageEffector._fxs.threshold, + shader, + uniforms: ['r', 'g', 'b'] as const, + params: { + r: { + type: 'number' as const, + default: 0.5, + min: 0.0, + max: 1.0, + step: 0.01, + }, + g: { + type: 'number' as const, + default: 0.5, + min: 0.0, + max: 1.0, + step: 0.01, + }, + b: { + type: 'number' as const, + default: 0.5, + min: 0.0, + max: 1.0, + step: 0.01, + }, + }, + main: ({ gl, u, params }) => { + gl.uniform1f(u.r, params.r); + gl.uniform1f(u.g, params.g); + gl.uniform1f(u.b, params.b); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/watermarkPlacement.ts b/packages/frontend/src/utility/image-effector/fxs/watermarkPlacement.ts new file mode 100644 index 0000000000..1c1c95b0c5 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/watermarkPlacement.ts @@ -0,0 +1,148 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; + +const shader = `#version 300 es +precision mediump float; + +const float PI = 3.141592653589793; +const float TWO_PI = 6.283185307179586; +const float HALF_PI = 1.5707963267948966; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform sampler2D u_texture_watermark; +uniform vec2 u_resolution_watermark; +uniform float u_scale; +uniform float u_angle; +uniform float u_opacity; +uniform bool u_repeat; +uniform int u_alignX; // 0: left, 1: center, 2: right +uniform int u_alignY; // 0: top, 1: center, 2: bottom +uniform int u_fitMode; // 0: contain, 1: cover +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float in_x_ratio = max(in_resolution.x / in_resolution.y, 1.0); + float in_y_ratio = max(in_resolution.y / in_resolution.x, 1.0); + + bool contain = u_fitMode == 0; + + float x_ratio = u_resolution_watermark.x / in_resolution.x; + float y_ratio = u_resolution_watermark.y / in_resolution.y; + + float aspect_ratio = contain ? + (min(x_ratio, y_ratio) / max(x_ratio, y_ratio)) : + (max(x_ratio, y_ratio) / min(x_ratio, y_ratio)); + + float x_scale = contain ? + (x_ratio > y_ratio ? 1.0 * u_scale : aspect_ratio * u_scale) : + (x_ratio > y_ratio ? aspect_ratio * u_scale : 1.0 * u_scale); + + float y_scale = contain ? + (y_ratio > x_ratio ? 1.0 * u_scale : aspect_ratio * u_scale) : + (y_ratio > x_ratio ? aspect_ratio * u_scale : 1.0 * u_scale); + + float x_offset = u_alignX == 0 ? x_scale / 2.0 : u_alignX == 2 ? 1.0 - (x_scale / 2.0) : 0.5; + float y_offset = u_alignY == 0 ? y_scale / 2.0 : u_alignY == 2 ? 1.0 - (y_scale / 2.0) : 0.5; + + float angle = -(u_angle * PI); + vec2 center = vec2(x_offset, y_offset); + //vec2 centeredUv = (in_uv - center) * vec2(in_x_ratio, in_y_ratio); + vec2 centeredUv = (in_uv - center); + vec2 rotatedUV = vec2( + centeredUv.x * cos(angle) - centeredUv.y * sin(angle), + centeredUv.x * sin(angle) + centeredUv.y * cos(angle) + ) + center; + + // trim + if (!u_repeat) { + bool isInside = rotatedUV.x > x_offset - (x_scale / 2.0) && rotatedUV.x < x_offset + (x_scale / 2.0) && + rotatedUV.y > y_offset - (y_scale / 2.0) && rotatedUV.y < y_offset + (y_scale / 2.0); + if (!isInside) { + out_color = in_color; + return; + } + } + + vec4 watermark_color = texture(u_texture_watermark, vec2( + (rotatedUV.x - (x_offset - (x_scale / 2.0))) / x_scale, + (rotatedUV.y - (y_offset - (y_scale / 2.0))) / y_scale + )); + + out_color.r = mix(in_color.r, watermark_color.r, u_opacity * watermark_color.a); + out_color.g = mix(in_color.g, watermark_color.g, u_opacity * watermark_color.a); + out_color.b = mix(in_color.b, watermark_color.b, u_opacity * watermark_color.a); + out_color.a = in_color.a * (1.0 - u_opacity * watermark_color.a) + watermark_color.a * u_opacity; +} +`; + +export const FX_watermarkPlacement = defineImageEffectorFx({ + id: 'watermarkPlacement' as const, + name: '(internal)', + shader, + uniforms: ['texture_watermark', 'resolution_watermark', 'scale', 'angle', 'opacity', 'repeat', 'alignX', 'alignY', 'fitMode'] as const, + params: { + cover: { + type: 'boolean' as const, + default: false, + }, + repeat: { + type: 'boolean' as const, + default: false, + }, + scale: { + type: 'number' as const, + default: 0.3, + min: 0.0, + max: 1.0, + step: 0.01, + }, + angle: { + type: 'number' as const, + default: 0, + min: -1.0, + max: 1.0, + step: 0.01, + }, + align: { + type: 'align' as const, + default: { x: 'right', y: 'bottom' }, + }, + opacity: { + type: 'number' as const, + default: 0.75, + min: 0.0, + max: 1.0, + step: 0.01, + }, + watermark: { + type: 'texture' as const, + default: null, + }, + }, + main: ({ gl, u, params, textures }) => { + if (textures.watermark == null) { + return; + } + + gl.activeTexture(gl.TEXTURE1); + gl.bindTexture(gl.TEXTURE_2D, textures.watermark.texture); + gl.uniform1i(u.texture_watermark, 1); + + gl.uniform2fv(u.resolution_watermark, [textures.watermark.width, textures.watermark.height]); + gl.uniform1f(u.scale, params.scale); + + gl.uniform1f(u.opacity, params.opacity); + gl.uniform1f(u.angle, params.angle); + gl.uniform1i(u.repeat, params.repeat ? 1 : 0); + gl.uniform1i(u.alignX, params.align.x === 'left' ? 0 : params.align.x === 'right' ? 2 : 1); + gl.uniform1i(u.alignY, params.align.y === 'top' ? 0 : params.align.y === 'bottom' ? 2 : 1); + gl.uniform1i(u.fitMode, params.cover ? 1 : 0); + }, +}); diff --git a/packages/frontend/src/utility/image-effector/fxs/zoomLines.ts b/packages/frontend/src/utility/image-effector/fxs/zoomLines.ts new file mode 100644 index 0000000000..2613362a71 --- /dev/null +++ b/packages/frontend/src/utility/image-effector/fxs/zoomLines.ts @@ -0,0 +1,97 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineImageEffectorFx } from '../ImageEffector.js'; +import { i18n } from '@/i18n.js'; + +const shader = `#version 300 es +precision mediump float; + +in vec2 in_uv; +uniform sampler2D in_texture; +uniform vec2 in_resolution; +uniform vec2 u_pos; +uniform float u_frequency; +uniform bool u_thresholdEnabled; +uniform float u_threshold; +uniform float u_maskSize; +uniform bool u_black; +out vec4 out_color; + +void main() { + vec4 in_color = texture(in_texture, in_uv); + float angle = atan(-u_pos.y + (in_uv.y), -u_pos.x + (in_uv.x)); + float t = (1.0 + sin(angle * u_frequency)) / 2.0; + if (u_thresholdEnabled) t = t < u_threshold ? 1.0 : 0.0; + float d = distance(in_uv * vec2(2.0, 2.0), u_pos * vec2(2.0, 2.0)); + float mask = d < u_maskSize ? 0.0 : ((d - u_maskSize) * (1.0 + (u_maskSize * 2.0))); + out_color = vec4( + mix(in_color.r, u_black ? 0.0 : 1.0, t * mask), + mix(in_color.g, u_black ? 0.0 : 1.0, t * mask), + mix(in_color.b, u_black ? 0.0 : 1.0, t * mask), + in_color.a + ); +} +`; + +export const FX_zoomLines = defineImageEffectorFx({ + id: 'zoomLines' as const, + name: i18n.ts._imageEffector._fxs.zoomLines, + shader, + uniforms: ['pos', 'frequency', 'thresholdEnabled', 'threshold', 'maskSize', 'black'] as const, + params: { + x: { + type: 'number' as const, + default: 0.0, + min: -1.0, + max: 1.0, + step: 0.01, + }, + y: { + type: 'number' as const, + default: 0.0, + min: -1.0, + max: 1.0, + step: 0.01, + }, + frequency: { + type: 'number' as const, + default: 30.0, + min: 1.0, + max: 200.0, + step: 0.1, + }, + thresholdEnabled: { + type: 'boolean' as const, + default: true, + }, + threshold: { + type: 'number' as const, + default: 0.2, + min: 0.0, + max: 1.0, + step: 0.01, + }, + maskSize: { + type: 'number' as const, + default: 0.5, + min: 0.0, + max: 1.0, + step: 0.01, + }, + black: { + type: 'boolean' as const, + default: false, + }, + }, + main: ({ gl, u, params }) => { + gl.uniform2f(u.pos, (1.0 + params.x) / 2.0, (1.0 + params.y) / 2.0); + gl.uniform1f(u.frequency, params.frequency); + gl.uniform1i(u.thresholdEnabled, params.thresholdEnabled ? 1 : 0); + gl.uniform1f(u.threshold, params.threshold); + gl.uniform1f(u.maskSize, params.maskSize); + gl.uniform1i(u.black, params.black ? 1 : 0); + }, +}); diff --git a/packages/frontend/src/utility/snowfall-effect.ts b/packages/frontend/src/utility/snowfall-effect.ts index 5c86969876..65398e6a43 100644 --- a/packages/frontend/src/utility/snowfall-effect.ts +++ b/packages/frontend/src/utility/snowfall-effect.ts @@ -38,7 +38,7 @@ export class SnowfallEffect { `; private FRAGMENT_SOURCE = `#version 300 es - precision highp float; + precision mediump float; in vec4 v_color; in float v_rotation; diff --git a/packages/frontend/src/utility/theme-editor.ts b/packages/frontend/src/utility/theme-editor.ts index ea07e5f2ff..74175703c3 100644 --- a/packages/frontend/src/utility/theme-editor.ts +++ b/packages/frontend/src/utility/theme-editor.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; import type { Theme } from '@/theme.js'; import { themeProps } from '@/theme.js'; @@ -66,7 +66,7 @@ export const convertToMisskeyTheme = (vm: ThemeViewModel, name: string, desc: st } return { - id: uuid(), + id: genId(), name, desc, author, props, base, }; }; diff --git a/packages/frontend/src/utility/watermark.ts b/packages/frontend/src/utility/watermark.ts new file mode 100644 index 0000000000..f0b38684f0 --- /dev/null +++ b/packages/frontend/src/utility/watermark.ts @@ -0,0 +1,189 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { FX_watermarkPlacement } from '@/utility/image-effector/fxs/watermarkPlacement.js'; +import { FX_stripe } from '@/utility/image-effector/fxs/stripe.js'; +import { FX_polkadot } from '@/utility/image-effector/fxs/polkadot.js'; +import { FX_checker } from '@/utility/image-effector/fxs/checker.js'; +import type { ImageEffectorFx, ImageEffectorLayer } from '@/utility/image-effector/ImageEffector.js'; +import { ImageEffector } from '@/utility/image-effector/ImageEffector.js'; + +const WATERMARK_FXS = [ + FX_watermarkPlacement, + FX_stripe, + FX_polkadot, + FX_checker, +] as const satisfies ImageEffectorFx<string, any>[]; + +export type WatermarkPreset = { + id: string; + name: string; + layers: ({ + id: string; + type: 'text'; + text: string; + repeat: boolean; + scale: number; + angle: number; + align: { x: 'left' | 'center' | 'right'; y: 'top' | 'center' | 'bottom' }; + opacity: number; + } | { + id: string; + type: 'image'; + imageUrl: string | null; + imageId: string | null; + cover: boolean; + repeat: boolean; + scale: number; + angle: number; + align: { x: 'left' | 'center' | 'right'; y: 'top' | 'center' | 'bottom' }; + opacity: number; + } | { + id: string; + type: 'stripe'; + angle: number; + frequency: number; + threshold: number; + color: [r: number, g: number, b: number]; + opacity: number; + } | { + id: string; + type: 'polkadot'; + angle: number; + scale: number; + majorRadius: number; + majorOpacity: number; + minorDivisions: number; + minorRadius: number; + minorOpacity: number; + color: [r: number, g: number, b: number]; + opacity: number; + } | { + id: string; + type: 'checker'; + angle: number; + scale: number; + color: [r: number, g: number, b: number]; + opacity: number; + })[]; +}; + +export class WatermarkRenderer { + private effector: ImageEffector<typeof WATERMARK_FXS>; + private layers: WatermarkPreset['layers'] = []; + + constructor(options: { + canvas: HTMLCanvasElement, + renderWidth: number, + renderHeight: number, + image: HTMLImageElement | ImageBitmap, + }) { + this.effector = new ImageEffector({ + canvas: options.canvas, + renderWidth: options.renderWidth, + renderHeight: options.renderHeight, + image: options.image, + fxs: WATERMARK_FXS, + }); + } + + private makeImageEffectorLayers(): ImageEffectorLayer[] { + return this.layers.map(layer => { + if (layer.type === 'text') { + return { + fxId: 'watermarkPlacement', + id: layer.id, + params: { + repeat: layer.repeat, + scale: layer.scale, + align: layer.align, + angle: layer.angle, + opacity: layer.opacity, + cover: false, + watermark: { + type: 'text', + text: layer.text, + }, + }, + }; + } else if (layer.type === 'image') { + return { + fxId: 'watermarkPlacement', + id: layer.id, + params: { + repeat: layer.repeat, + scale: layer.scale, + align: layer.align, + angle: layer.angle, + opacity: layer.opacity, + cover: layer.cover, + watermark: { + type: 'url', + url: layer.imageUrl, + }, + }, + }; + } else if (layer.type === 'stripe') { + return { + fxId: 'stripe', + id: layer.id, + params: { + angle: layer.angle, + frequency: layer.frequency, + threshold: layer.threshold, + color: layer.color, + opacity: layer.opacity, + }, + }; + } else if (layer.type === 'polkadot') { + return { + fxId: 'polkadot', + id: layer.id, + params: { + angle: layer.angle, + scale: layer.scale, + majorRadius: layer.majorRadius, + majorOpacity: layer.majorOpacity, + minorDivisions: layer.minorDivisions, + minorRadius: layer.minorRadius, + minorOpacity: layer.minorOpacity, + color: layer.color, + opacity: layer.opacity, + }, + }; + } else if (layer.type === 'checker') { + return { + fxId: 'checker', + id: layer.id, + params: { + angle: layer.angle, + scale: layer.scale, + color: layer.color, + opacity: layer.opacity, + }, + }; + } else { + throw new Error(`Unknown layer type`); + } + }); + } + + public async setLayers(layers: WatermarkPreset['layers']) { + this.layers = layers; + await this.effector.setLayers(this.makeImageEffectorLayers()); + this.render(); + } + + public render(): void { + this.effector.render(); + } + + /* + * disposeCanvas = true ã ã¨loseContextを呼ã¶ãŸã‚ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§æ¸¡ã•れãŸcanvasã‚‚å†åˆ©ç”¨ä¸å¯ã«ãªã‚‹ã®ã§æ³¨æ„ + */ + public destroy(disposeCanvas = true): void { + this.effector.destroy(disposeCanvas); + } +} diff --git a/packages/frontend/src/utility/webgl.ts b/packages/frontend/src/utility/webgl.ts new file mode 100644 index 0000000000..ae595b605c --- /dev/null +++ b/packages/frontend/src/utility/webgl.ts @@ -0,0 +1,40 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +export function loadShader(gl: WebGL2RenderingContext, type: GLenum, source: string): WebGLShader { + const shader = gl.createShader(type); + if (shader == null) { + throw new Error('falied to create shader'); + } + + gl.shaderSource(shader, source); + gl.compileShader(shader); + + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + console.error(`falied to compile shader: ${gl.getShaderInfoLog(shader)}`); + gl.deleteShader(shader); + throw new Error(`falied to compile shader: ${gl.getShaderInfoLog(shader)}`); + } + + return shader; +} + +export function initShaderProgram(gl: WebGL2RenderingContext, vsSource: string, fsSource: string): WebGLProgram { + const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vsSource); + const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource); + + const shaderProgram = gl.createProgram(); + + gl.attachShader(shaderProgram, vertexShader); + gl.attachShader(shaderProgram, fragmentShader); + gl.linkProgram(shaderProgram); + + if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { + console.error(`failed to init shader: ${gl.getProgramInfoLog(shaderProgram)}`); + throw new Error('failed to init shader'); + } + + return shaderProgram; +} diff --git a/packages/frontend/src/widgets/WidgetAiscript.vue b/packages/frontend/src/widgets/WidgetAiscript.vue index c46fd81466..da71dcad29 100644 --- a/packages/frontend/src/widgets/WidgetAiscript.vue +++ b/packages/frontend/src/widgets/WidgetAiscript.vue @@ -29,6 +29,7 @@ import MkContainer from '@/components/MkContainer.vue'; import { aiScriptReadline, createAiScriptEnv } from '@/aiscript/api.js'; import { $i } from '@/i.js'; import { i18n } from '@/i18n.js'; +import { genId } from '@/utility/id.js'; const name = 'aiscript'; @@ -73,7 +74,7 @@ const run = async () => { in: aiScriptReadline, out: (value) => { logs.value.push({ - id: Math.random().toString(), + id: genId(), text: value.type === 'str' ? value.value : utils.valToString(value), print: true, }); @@ -81,7 +82,7 @@ const run = async () => { log: (type, params) => { switch (type) { case 'end': logs.value.push({ - id: Math.random().toString(), + id: genId(), text: utils.valToString(params.val, true), print: false, }); break; diff --git a/packages/frontend/src/widgets/WidgetJobQueue.vue b/packages/frontend/src/widgets/WidgetJobQueue.vue index 485e532d51..84fd4669cd 100644 --- a/packages/frontend/src/widgets/WidgetJobQueue.vue +++ b/packages/frontend/src/widgets/WidgetJobQueue.vue @@ -60,6 +60,7 @@ import kmg from '@/filters/kmg.js'; import * as sound from '@/utility/sound.js'; import { deepClone } from '@/utility/clone.js'; import { prefer } from '@/preferences.js'; +import { genId } from '@/utility/id.js'; const name = 'jobQueue'; @@ -144,7 +145,7 @@ connection.on('stats', onStats); connection.on('statsLog', onStatsLog); connection.send('requestLog', { - id: Math.random().toString().substring(2, 10), + id: genId(), length: 1, }); diff --git a/packages/frontend/src/widgets/server-metric/cpu-mem.vue b/packages/frontend/src/widgets/server-metric/cpu-mem.vue index 614ffe59e3..d8a876f936 100644 --- a/packages/frontend/src/widgets/server-metric/cpu-mem.vue +++ b/packages/frontend/src/widgets/server-metric/cpu-mem.vue @@ -77,7 +77,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { onMounted, onBeforeUnmount, ref } from 'vue'; import * as Misskey from 'misskey-js'; -import { v4 as uuid } from 'uuid'; +import { genId } from '@/utility/id.js'; const props = defineProps<{ connection: Misskey.ChannelConnection<Misskey.Channels['serverStats']>, @@ -87,10 +87,10 @@ const props = defineProps<{ const viewBoxX = ref<number>(50); const viewBoxY = ref<number>(30); const stats = ref<Misskey.entities.ServerStats[]>([]); -const cpuGradientId = uuid(); -const cpuMaskId = uuid(); -const memGradientId = uuid(); -const memMaskId = uuid(); +const cpuGradientId = genId(); +const cpuMaskId = genId(); +const memGradientId = genId(); +const memMaskId = genId(); const cpuPolylinePoints = ref<string>(''); const memPolylinePoints = ref<string>(''); const cpuPolygonPoints = ref<string>(''); @@ -106,7 +106,7 @@ onMounted(() => { props.connection.on('stats', onStats); props.connection.on('statsLog', onStatsLog); props.connection.send('requestLog', { - id: Math.random().toString().substring(2, 10), + id: genId(), length: 50, }); }); diff --git a/packages/frontend/src/widgets/server-metric/net.vue b/packages/frontend/src/widgets/server-metric/net.vue index d78494b8d2..5e08a47100 100644 --- a/packages/frontend/src/widgets/server-metric/net.vue +++ b/packages/frontend/src/widgets/server-metric/net.vue @@ -52,6 +52,7 @@ SPDX-License-Identifier: AGPL-3.0-only import { onMounted, onBeforeUnmount, ref } from 'vue'; import * as Misskey from 'misskey-js'; import bytes from '@/filters/bytes.js'; +import { genId } from '@/utility/id.js'; const props = defineProps<{ connection: Misskey.ChannelConnection<Misskey.Channels['serverStats']>, @@ -76,7 +77,7 @@ onMounted(() => { props.connection.on('stats', onStats); props.connection.on('statsLog', onStatsLog); props.connection.send('requestLog', { - id: Math.random().toString().substring(2, 10), + id: genId(), length: 50, }); }); diff --git a/packages/icons-subsetter/package.json b/packages/icons-subsetter/package.json index 0a28f9e038..9581ad4206 100644 --- a/packages/icons-subsetter/package.json +++ b/packages/icons-subsetter/package.json @@ -11,13 +11,13 @@ "lint": "pnpm typecheck && pnpm eslint" }, "devDependencies": { - "@types/node": "22.15.21", + "@types/node": "22.15.31", "@types/wawoff2": "1.0.2", - "@typescript-eslint/eslint-plugin": "8.32.1", - "@typescript-eslint/parser": "8.32.1" + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0" }, "dependencies": { - "@tabler/icons-webfont": "3.33.0", + "@tabler/icons-webfont": "3.34.0", "harfbuzzjs": "0.4.7", "tiny-glob": "0.2.9", "tsx": "4.19.4", diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json index a46e338e7b..7593a33bc1 100644 --- a/packages/misskey-bubble-game/package.json +++ b/packages/misskey-bubble-game/package.json @@ -24,9 +24,9 @@ "devDependencies": { "@types/matter-js": "0.19.8", "@types/seedrandom": "3.0.8", - "@types/node": "22.15.28", - "@typescript-eslint/eslint-plugin": "8.33.0", - "@typescript-eslint/parser": "8.33.0", + "@types/node": "22.15.31", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", "nodemon": "3.1.10", "execa": "9.6.0", "typescript": "5.8.3", diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index 7578275b03..a6bfe825b5 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -3212,10 +3212,11 @@ type PinnedUsersResponse = operations['pinned-users']['responses']['200']['conte type PromoReadRequest = operations['promo___read']['requestBody']['content']['application/json']; // Warning: (ae-forgotten-export) The symbol "AllNullRecord" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "AllNullOrOptionalRecord" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "NonNullableRecord" needs to be exported by the entry point index.d.ts // // @public (undocumented) -type PureRenote = Omit<Note, 'renote' | 'renoteId' | 'reply' | 'replyId' | 'text' | 'cw' | 'files' | 'fileIds' | 'poll'> & AllNullRecord<Pick<Note, 'reply' | 'replyId' | 'text' | 'cw' | 'poll'>> & { +type PureRenote = Omit<Note, 'renote' | 'renoteId' | 'reply' | 'replyId' | 'text' | 'cw' | 'files' | 'fileIds' | 'poll'> & AllNullRecord<Pick<Note, 'text'>> & AllNullOrOptionalRecord<Pick<Note, 'reply' | 'replyId' | 'cw' | 'poll'>> & { files: []; fileIds: []; } & NonNullableRecord<Pick<Note, 'renote' | 'renoteId'>>; @@ -3748,7 +3749,7 @@ type V2AdminEmojiListResponse = operations['v2___admin___emoji___list']['respons // Warnings were encountered during analysis: // -// src/entities.ts:50:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts +// src/entities.ts:54:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts // src/streaming.ts:57:3 - (ae-forgotten-export) The symbol "ReconnectingWebSocket" needs to be exported by the entry point index.d.ts // src/streaming.types.ts:218:4 - (ae-forgotten-export) The symbol "ReversiUpdateKey" needs to be exported by the entry point index.d.ts // src/streaming.types.ts:228:4 - (ae-forgotten-export) The symbol "ReversiUpdateSettings" needs to be exported by the entry point index.d.ts diff --git a/packages/misskey-js/generator/package.json b/packages/misskey-js/generator/package.json index 2f2a8e5029..cc8083094d 100644 --- a/packages/misskey-js/generator/package.json +++ b/packages/misskey-js/generator/package.json @@ -8,11 +8,11 @@ }, "devDependencies": { "@readme/openapi-parser": "2.7.0", - "@types/node": "22.15.21", - "@typescript-eslint/eslint-plugin": "8.32.1", - "@typescript-eslint/parser": "8.32.1", + "@types/node": "22.15.31", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", "openapi-types": "12.1.3", - "openapi-typescript": "6.7.6", + "openapi-typescript": "7.8.0", "ts-case-convert": "2.1.0", "tsx": "4.19.4", "typescript": "5.8.3" diff --git a/packages/misskey-js/generator/src/ast-transformer.ts b/packages/misskey-js/generator/src/ast-transformer.ts new file mode 100644 index 0000000000..e9f910a51c --- /dev/null +++ b/packages/misskey-js/generator/src/ast-transformer.ts @@ -0,0 +1,130 @@ +import * as ts from 'typescript'; + +/** + * TypeScript AST ノードã‹ã‚‰ 'never' åž‹ã®ãƒ—ãƒãƒ‘ティを削除ã—ã¾ã™ã€‚ + * ã“ã®é–¢æ•°ã¯ã€ç‰¹ã« 'paths' ã¨ã„ã†åå‰ã® TypeAliasDeclaration 内や + * 'operations' ã¨ã„ã†åå‰ã® InterfaceDeclaration 内をå†å¸°çš„ã«æŽ¢ç´¢ã—〠+ * ãã“ã«å«ã¾ã‚Œã‚‹ã™ã¹ã¦ã® TypeLiteralNode/Interfaceã‹ã‚‰ 'PropertySignature' ã§åž‹ãŒ 'never' ã§ã‚ã‚‹ã‚‚ã®ã‚’削除ã—ã¾ã™ã€‚ + * ã•らã«ã€ã™ã¹ã¦ã®ãƒ—ãƒãƒ‘ティ㌠'never' ã§é™¤åŽ»ã•れãŸå ´åˆã¯ã€ãã®ã‚ªãƒ–ジェクト自体も削除ã—ã¾ã™ã€‚ + * + * @param astNodes 処ç†å¯¾è±¡ã® ts.Node é…列 (例: `openapi-typescript` ã‹ã‚‰å‡ºåŠ›ã•れãŸã‚‚ã®)。 + * @returns 'never' 型プãƒãƒ‘ティãŒå‰Šé™¤ã•ã‚ŒãŸæ–°ã—ã„ ts.Node é…列。 + */ +export function removeNeverPropertiesFromAST(astNodes: readonly ts.Node[]): ts.Node[] { + const factory = ts.factory; + + /** + * TypeLiteralNodeã‚„InterfaceDeclarationã®membersã‹ã‚‰neverプãƒãƒ‘ティを除去ã—ã€å¿…è¦ãªã‚‰åž‹ã‚‚å†å¸°çš„ã«å‡¦ç†ã™ã‚‹å…±é€šé–¢æ•° + */ + function removeNeverPropertiesFromMembers( + members: readonly ts.TypeElement[], + visitType: (node: ts.Node) => ts.Node | undefined, + ): { newMembers: ts.TypeElement[]; hasChanged: boolean } { + const newMembers: ts.TypeElement[] = []; + let hasChanged = false; + + for (const member of members) { + if (ts.isPropertySignature(member)) { + if (member.type && member.type.kind === ts.SyntaxKind.NeverKeyword) { + hasChanged = true; + continue; + } + let updatedPropertySignature = member; + if (member.type) { + const visitedMemberType = ts.visitNode(member.type, visitType); + if (visitedMemberType && visitedMemberType !== member.type) { + updatedPropertySignature = factory.updatePropertySignature( + member, + member.modifiers, + member.name, + member.questionToken, + visitedMemberType as ts.TypeNode, + ); + hasChanged = true; + } else if (visitedMemberType === undefined) { + // åã®åž‹ãŒæ¶ˆã•れãŸå ´åˆã€ã“ã®ãƒ—ãƒãƒ‘ティも消㙠+ hasChanged = true; + continue; + } + } + newMembers.push(updatedPropertySignature); + } else { + newMembers.push(member); + } + } + return { newMembers, hasChanged }; + } + + function typeNodeRecursiveVisitor(node: ts.Node): ts.Node | undefined { + if (ts.isTypeLiteralNode(node)) { + const { newMembers, hasChanged } = removeNeverPropertiesFromMembers(node.members, typeNodeRecursiveVisitor); + + if (newMembers.length === 0) { + // ã™ã¹ã¦ã®ãƒ—ãƒãƒ‘ティãŒneverã§æ¶ˆã•れãŸå ´åˆã€ã“ã®TypeLiteralNode自体も消㙠+ return undefined; + } + + if (hasChanged) { + return factory.updateTypeLiteralNode(node, factory.createNodeArray(newMembers)); + } + return node; + } + + return ts.visitEachChild(node, typeNodeRecursiveVisitor, undefined); + } + + function interfaceRecursiveVisitor(node: ts.Node): ts.Node | undefined { + if (ts.isInterfaceDeclaration(node)) { + const { newMembers, hasChanged } = removeNeverPropertiesFromMembers(node.members, typeNodeRecursiveVisitor); + + if (newMembers.length === 0) { + return undefined; + } + + if (hasChanged) { + return factory.updateInterfaceDeclaration( + node, + node.modifiers, + node.name, + node.typeParameters, + node.heritageClauses, + newMembers, + ); + } + return node; + } + return ts.visitEachChild(node, interfaceRecursiveVisitor, undefined); + } + + function topLevelVisitor(node: ts.Node): ts.Node | undefined { + if (ts.isTypeAliasDeclaration(node) && node.name.escapedText === 'paths') { + const newType = ts.visitNode(node.type, typeNodeRecursiveVisitor); + if (newType && newType !== node.type) { + return factory.updateTypeAliasDeclaration( + node, + node.modifiers, + node.name, + node.typeParameters, + newType as ts.TypeNode, + ); + } else if (newType === undefined) { + return undefined; + } + } + if (ts.isInterfaceDeclaration(node) && node.name.escapedText === 'operations') { + const result = interfaceRecursiveVisitor(node); + return result; + } + return ts.visitEachChild(node, topLevelVisitor, undefined); + } + + const transformedNodes: ts.Node[] = []; + for (const astNode of astNodes) { + const resultNode = ts.visitNode(astNode, topLevelVisitor); + if (resultNode) { + transformedNodes.push(resultNode); + } + } + + return transformedNodes; +} diff --git a/packages/misskey-js/generator/src/generator.ts b/packages/misskey-js/generator/src/generator.ts index 889051f3e8..a95fc962a8 100644 --- a/packages/misskey-js/generator/src/generator.ts +++ b/packages/misskey-js/generator/src/generator.ts @@ -1,9 +1,12 @@ import assert from 'assert'; import { mkdir, readFile, writeFile } from 'fs/promises'; -import { OpenAPIV3_1 } from 'openapi-types'; +import type { OpenAPIV3_1 } from 'openapi-types'; import { toPascal } from 'ts-case-convert'; import OpenAPIParser from '@readme/openapi-parser'; -import openapiTS, { OpenAPI3, OperationObject, PathItemObject } from 'openapi-typescript'; +import openapiTS, { astToString } from 'openapi-typescript'; +import type { OpenAPI3, OperationObject, PathItemObject } from 'openapi-typescript'; +import ts from 'typescript'; +import { removeNeverPropertiesFromAST } from './ast-transformer.js'; async function generateBaseTypes( openApiDocs: OpenAPIV3_1.Document, @@ -28,13 +31,6 @@ async function generateBaseTypes( assert('post' in item); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion openApi.paths![key] = { - ...('get' in item ? { - get: { - ...item.get, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - operationId: ((item as PathItemObject).get as OperationObject).operationId!.replaceAll('get___', ''), - }, - } : {}), post: { ...item.post, // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -43,15 +39,26 @@ async function generateBaseTypes( }; } - const generatedTypes = await openapiTS(openApi, { + const tsNullNode = ts.factory.createLiteralTypeNode(ts.factory.createNull()); + const tsBlobNode = ts.factory.createTypeReferenceNode(ts.factory.createIdentifier('Blob')); + + const generatedTypesAst = await openapiTS(openApi, { exportType: true, transform(schemaObject) { if ('format' in schemaObject && schemaObject.format === 'binary') { - return schemaObject.nullable ? 'Blob | null' : 'Blob'; + if (schemaObject.nullable) { + return ts.factory.createUnionTypeNode([tsBlobNode, tsNullNode]); + } else { + return tsBlobNode; + } } }, }); - lines.push(generatedTypes); + + const filteredAst = removeNeverPropertiesFromAST(generatedTypesAst); + + lines.push(astToString(filteredAst)); + lines.push(''); await writeFile(typeFileName, lines.join('\n')); diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index b36087a527..5f5802da4c 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.6.0", + "version": "2025.6.1", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", @@ -38,9 +38,9 @@ "@microsoft/api-extractor": "7.52.8", "@swc/jest": "0.2.38", "@types/jest": "29.5.14", - "@types/node": "22.15.21", - "@typescript-eslint/eslint-plugin": "8.32.1", - "@typescript-eslint/parser": "8.32.1", + "@types/node": "22.15.31", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", "jest": "29.7.0", "jest-fetch-mock": "3.0.3", "jest-websocket-mock": "2.5.0", @@ -50,7 +50,7 @@ "execa": "8.0.1", "tsd": "0.32.0", "typescript": "5.8.3", - "esbuild": "0.25.4", + "esbuild": "0.25.5", "glob": "11.0.2" }, "files": [ diff --git a/packages/misskey-js/src/api.ts b/packages/misskey-js/src/api.ts index e663d712a7..e64f1a048c 100644 --- a/packages/misskey-js/src/api.ts +++ b/packages/misskey-js/src/api.ts @@ -77,7 +77,7 @@ export class APIClient { if (mediaType === 'application/json') { payload = JSON.stringify({ - ...params, + ...(this.assertIsRecord(params) ? params : {}), i: credential !== undefined ? credential : this.credential, }); } else if (mediaType === 'multipart/form-data') { @@ -106,7 +106,7 @@ export class APIClient { this.fetch(`${this.origin}/api/${endpoint}`, { method: 'POST', body: payload, - headers: { + headers: mediaType === 'multipart/form-data' ? {} : { 'Content-Type': mediaType, }, credentials: 'omit', diff --git a/packages/misskey-js/src/autogen/apiClientJSDoc.ts b/packages/misskey-js/src/autogen/apiClientJSDoc.ts index 537118b9cd..037503cb7a 100644 --- a/packages/misskey-js/src/autogen/apiClientJSDoc.ts +++ b/packages/misskey-js/src/autogen/apiClientJSDoc.ts @@ -1715,6 +1715,17 @@ declare module '../api.js' { * * **Credential required**: *Yes* / **Permission**: *write:chat* */ + request<E extends 'chat/read-all', P extends Endpoints[E]['req']>( + endpoint: E, + params: P, + credential?: string | null, + ): Promise<SwitchCaseResponseType<E, P>>; + + /** + * No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ request<E extends 'chat/rooms/create', P extends Endpoints[E]['req']>( endpoint: E, params: P, diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts index f57a485033..45c65ef843 100644 --- a/packages/misskey-js/src/autogen/endpoint.ts +++ b/packages/misskey-js/src/autogen/endpoint.ts @@ -795,6 +795,7 @@ export type Endpoints = { 'chat/messages/show': { req: ChatMessagesShowRequest; res: ChatMessagesShowResponse }; 'chat/messages/unreact': { req: ChatMessagesUnreactRequest; res: EmptyResponse }; 'chat/messages/user-timeline': { req: ChatMessagesUserTimelineRequest; res: ChatMessagesUserTimelineResponse }; + 'chat/read-all': { req: EmptyRequest; res: EmptyResponse }; 'chat/rooms/create': { req: ChatRoomsCreateRequest; res: ChatRoomsCreateResponse }; 'chat/rooms/delete': { req: ChatRoomsDeleteRequest; res: EmptyResponse }; 'chat/rooms/invitations/create': { req: ChatRoomsInvitationsCreateRequest; res: ChatRoomsInvitationsCreateResponse }; diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts index e87bcb4f83..a4578bba94 100644 --- a/packages/misskey-js/src/autogen/types.ts +++ b/packages/misskey-js/src/autogen/types.ts @@ -1,30612 +1,35502 @@ /* eslint @typescript-eslint/naming-convention: 0 */ /* eslint @typescript-eslint/no-explicit-any: 0 */ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - -/** OneOf type helpers */ -type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never }; -type XOR<T, U> = (T | U) extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U; -type OneOf<T extends any[]> = T extends [infer Only] ? Only : T extends [infer A, infer B, ...infer Rest] ? OneOf<[XOR<A, B>, ...Rest]> : never; - export type paths = { - '/admin/abuse-report/notification-recipient/create': { - /** - * admin/abuse-report/notification-recipient/create - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* - */ - post: operations['admin___abuse-report___notification-recipient___create']; - }; - '/admin/abuse-report/notification-recipient/delete': { - /** - * admin/abuse-report/notification-recipient/delete - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* - */ - post: operations['admin___abuse-report___notification-recipient___delete']; - }; - '/admin/abuse-report/notification-recipient/list': { - /** - * admin/abuse-report/notification-recipient/list - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-report:notification-recipient* - */ - post: operations['admin___abuse-report___notification-recipient___list']; - }; - '/admin/abuse-report/notification-recipient/show': { - /** - * admin/abuse-report/notification-recipient/show - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-report:notification-recipient* - */ - post: operations['admin___abuse-report___notification-recipient___show']; - }; - '/admin/abuse-report/notification-recipient/update': { - /** - * admin/abuse-report/notification-recipient/update - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* - */ - post: operations['admin___abuse-report___notification-recipient___update']; - }; - '/admin/abuse-user-reports': { - /** - * admin/abuse-user-reports - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-user-reports* - */ - post: operations['admin___abuse-user-reports']; - }; - '/admin/accounts/create': { - /** - * admin/accounts/create - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['admin___accounts___create']; - }; - '/admin/accounts/delete': { - /** - * admin/accounts/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:account* - */ - post: operations['admin___accounts___delete']; - }; - '/admin/accounts/find-by-email': { - /** - * admin/accounts/find-by-email - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:account* - */ - post: operations['admin___accounts___find-by-email']; - }; - '/admin/ad/create': { - /** - * admin/ad/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:ad* - */ - post: operations['admin___ad___create']; - }; - '/admin/ad/delete': { - /** - * admin/ad/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:ad* - */ - post: operations['admin___ad___delete']; - }; - '/admin/ad/list': { - /** - * admin/ad/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:ad* - */ - post: operations['admin___ad___list']; - }; - '/admin/ad/update': { - /** - * admin/ad/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:ad* - */ - post: operations['admin___ad___update']; - }; - '/admin/announcements/create': { - /** - * admin/announcements/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* - */ - post: operations['admin___announcements___create']; - }; - '/admin/announcements/delete': { - /** - * admin/announcements/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* - */ - post: operations['admin___announcements___delete']; - }; - '/admin/announcements/list': { - /** - * admin/announcements/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:announcements* - */ - post: operations['admin___announcements___list']; - }; - '/admin/announcements/update': { - /** - * admin/announcements/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* - */ - post: operations['admin___announcements___update']; - }; - '/admin/avatar-decorations/create': { - /** - * admin/avatar-decorations/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* - */ - post: operations['admin___avatar-decorations___create']; - }; - '/admin/avatar-decorations/delete': { - /** - * admin/avatar-decorations/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* - */ - post: operations['admin___avatar-decorations___delete']; - }; - '/admin/avatar-decorations/list': { - /** - * admin/avatar-decorations/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:avatar-decorations* - */ - post: operations['admin___avatar-decorations___list']; - }; - '/admin/avatar-decorations/update': { - /** - * admin/avatar-decorations/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* - */ - post: operations['admin___avatar-decorations___update']; - }; - '/admin/captcha/current': { - /** - * admin/captcha/current - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:meta* - */ - post: operations['admin___captcha___current']; - }; - '/admin/captcha/save': { - /** - * admin/captcha/save - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:meta* - */ - post: operations['admin___captcha___save']; - }; - '/admin/delete-account': { - /** - * admin/delete-account - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:delete-account* - */ - post: operations['admin___delete-account']; - }; - '/admin/delete-all-files-of-a-user': { - /** - * admin/delete-all-files-of-a-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:delete-all-files-of-a-user* - */ - post: operations['admin___delete-all-files-of-a-user']; - }; - '/admin/drive/clean-remote-files': { - /** - * admin/drive/clean-remote-files - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:drive* - */ - post: operations['admin___drive___clean-remote-files']; - }; - '/admin/drive/cleanup': { - /** - * admin/drive/cleanup - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:drive* - */ - post: operations['admin___drive___cleanup']; - }; - '/admin/drive/files': { - /** - * admin/drive/files - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:drive* - */ - post: operations['admin___drive___files']; - }; - '/admin/drive/show-file': { - /** - * admin/drive/show-file - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:drive* - */ - post: operations['admin___drive___show-file']; - }; - '/admin/emoji/add': { - /** - * admin/emoji/add - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___add']; - }; - '/admin/emoji/add-aliases-bulk': { - /** - * admin/emoji/add-aliases-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___add-aliases-bulk']; - }; - '/admin/emoji/copy': { - /** - * admin/emoji/copy - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___copy']; - }; - '/admin/emoji/delete': { - /** - * admin/emoji/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___delete']; - }; - '/admin/emoji/delete-bulk': { - /** - * admin/emoji/delete-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___delete-bulk']; - }; - '/admin/emoji/import-zip': { - /** - * admin/emoji/import-zip - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['admin___emoji___import-zip']; - }; - '/admin/emoji/list': { - /** - * admin/emoji/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* - */ - post: operations['admin___emoji___list']; - }; - '/admin/emoji/list-remote': { - /** - * admin/emoji/list-remote - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* - */ - post: operations['admin___emoji___list-remote']; - }; - '/admin/emoji/remove-aliases-bulk': { - /** - * admin/emoji/remove-aliases-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___remove-aliases-bulk']; - }; - '/admin/emoji/set-aliases-bulk': { - /** - * admin/emoji/set-aliases-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___set-aliases-bulk']; - }; - '/admin/emoji/set-category-bulk': { - /** - * admin/emoji/set-category-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___set-category-bulk']; - }; - '/admin/emoji/set-license-bulk': { - /** - * admin/emoji/set-license-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___set-license-bulk']; - }; - '/admin/emoji/update': { - /** - * admin/emoji/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - post: operations['admin___emoji___update']; - }; - '/admin/federation/delete-all-files': { - /** - * admin/federation/delete-all-files - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:federation* - */ - post: operations['admin___federation___delete-all-files']; - }; - '/admin/federation/refresh-remote-instance-metadata': { - /** - * admin/federation/refresh-remote-instance-metadata - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:federation* - */ - post: operations['admin___federation___refresh-remote-instance-metadata']; - }; - '/admin/federation/remove-all-following': { - /** - * admin/federation/remove-all-following - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:federation* - */ - post: operations['admin___federation___remove-all-following']; - }; - '/admin/federation/update-instance': { - /** - * admin/federation/update-instance - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:federation* - */ - post: operations['admin___federation___update-instance']; - }; - '/admin/forward-abuse-user-report': { - /** - * admin/forward-abuse-user-report - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* - */ - post: operations['admin___forward-abuse-user-report']; - }; - '/admin/get-index-stats': { - /** - * admin/get-index-stats - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:index-stats* - */ - post: operations['admin___get-index-stats']; - }; - '/admin/get-table-stats': { - /** - * admin/get-table-stats - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:table-stats* - */ - post: operations['admin___get-table-stats']; - }; - '/admin/get-user-ips': { - /** - * admin/get-user-ips - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:user-ips* - */ - post: operations['admin___get-user-ips']; - }; - '/admin/invite/create': { - /** - * admin/invite/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:invite-codes* - */ - post: operations['admin___invite___create']; - }; - '/admin/invite/list': { - /** - * admin/invite/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:invite-codes* - */ - post: operations['admin___invite___list']; - }; - '/admin/meta': { - /** - * admin/meta - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:meta* - */ - post: operations['admin___meta']; - }; - '/admin/promo/create': { - /** - * admin/promo/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:promo* - */ - post: operations['admin___promo___create']; - }; - '/admin/queue/clear': { - /** - * admin/queue/clear - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:queue* - */ - post: operations['admin___queue___clear']; - }; - '/admin/queue/deliver-delayed': { - /** - * admin/queue/deliver-delayed - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - post: operations['admin___queue___deliver-delayed']; - }; - '/admin/queue/inbox-delayed': { - /** - * admin/queue/inbox-delayed - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - post: operations['admin___queue___inbox-delayed']; - }; - '/admin/queue/jobs': { - /** - * admin/queue/jobs - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - post: operations['admin___queue___jobs']; - }; - '/admin/queue/promote-jobs': { - /** - * admin/queue/promote-jobs - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:queue* - */ - post: operations['admin___queue___promote-jobs']; - }; - '/admin/queue/queue-stats': { - /** - * admin/queue/queue-stats - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - post: operations['admin___queue___queue-stats']; - }; - '/admin/queue/queues': { - /** - * admin/queue/queues - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - post: operations['admin___queue___queues']; - }; - '/admin/queue/remove-job': { - /** - * admin/queue/remove-job - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:queue* - */ - post: operations['admin___queue___remove-job']; - }; - '/admin/queue/retry-job': { - /** - * admin/queue/retry-job - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:queue* - */ - post: operations['admin___queue___retry-job']; - }; - '/admin/queue/show-job': { - /** - * admin/queue/show-job - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - post: operations['admin___queue___show-job']; - }; - '/admin/queue/stats': { - /** - * admin/queue/stats - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* - */ - post: operations['admin___queue___stats']; - }; - '/admin/relays/add': { - /** - * admin/relays/add - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:relays* - */ - post: operations['admin___relays___add']; - }; - '/admin/relays/list': { - /** - * admin/relays/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:relays* - */ - post: operations['admin___relays___list']; - }; - '/admin/relays/remove': { - /** - * admin/relays/remove - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:relays* - */ - post: operations['admin___relays___remove']; - }; - '/admin/reset-password': { - /** - * admin/reset-password - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:reset-password* - */ - post: operations['admin___reset-password']; - }; - '/admin/resolve-abuse-user-report': { - /** - * admin/resolve-abuse-user-report - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* - */ - post: operations['admin___resolve-abuse-user-report']; - }; - '/admin/roles/assign': { - /** - * admin/roles/assign - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - post: operations['admin___roles___assign']; - }; - '/admin/roles/create': { - /** - * admin/roles/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - post: operations['admin___roles___create']; - }; - '/admin/roles/delete': { - /** - * admin/roles/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - post: operations['admin___roles___delete']; - }; - '/admin/roles/list': { - /** - * admin/roles/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:roles* - */ - post: operations['admin___roles___list']; - }; - '/admin/roles/show': { - /** - * admin/roles/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:roles* - */ - post: operations['admin___roles___show']; - }; - '/admin/roles/unassign': { - /** - * admin/roles/unassign - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - post: operations['admin___roles___unassign']; - }; - '/admin/roles/update': { - /** - * admin/roles/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - post: operations['admin___roles___update']; - }; - '/admin/roles/update-default-policies': { - /** - * admin/roles/update-default-policies - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - post: operations['admin___roles___update-default-policies']; - }; - '/admin/roles/users': { - /** - * admin/roles/users - * @description No description provided. - * - * **Credential required**: *No* / **Permission**: *read:admin:roles* - */ - post: operations['admin___roles___users']; - }; - '/admin/send-email': { - /** - * admin/send-email - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:send-email* - */ - post: operations['admin___send-email']; - }; - '/admin/server-info': { - /** - * admin/server-info - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:server-info* - */ - post: operations['admin___server-info']; - }; - '/admin/show-moderation-logs': { - /** - * admin/show-moderation-logs - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:show-moderation-log* - */ - post: operations['admin___show-moderation-logs']; - }; - '/admin/show-user': { - /** - * admin/show-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:show-user* - */ - post: operations['admin___show-user']; - }; - '/admin/show-users': { - /** - * admin/show-users - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:show-user* - */ - post: operations['admin___show-users']; - }; - '/admin/suspend-user': { - /** - * admin/suspend-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:suspend-user* - */ - post: operations['admin___suspend-user']; - }; - '/admin/system-webhook/create': { - /** - * admin/system-webhook/create - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - post: operations['admin___system-webhook___create']; - }; - '/admin/system-webhook/delete': { - /** - * admin/system-webhook/delete - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - post: operations['admin___system-webhook___delete']; - }; - '/admin/system-webhook/list': { - /** - * admin/system-webhook/list - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - post: operations['admin___system-webhook___list']; - }; - '/admin/system-webhook/show': { - /** - * admin/system-webhook/show - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - post: operations['admin___system-webhook___show']; - }; - '/admin/system-webhook/test': { - /** - * admin/system-webhook/test - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *read:admin:system-webhook* - */ - post: operations['admin___system-webhook___test']; - }; - '/admin/system-webhook/update': { - /** - * admin/system-webhook/update - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - post: operations['admin___system-webhook___update']; - }; - '/admin/unset-user-avatar': { - /** - * admin/unset-user-avatar - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:unset-user-avatar* - */ - post: operations['admin___unset-user-avatar']; - }; - '/admin/unset-user-banner': { - /** - * admin/unset-user-banner - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:unset-user-banner* - */ - post: operations['admin___unset-user-banner']; - }; - '/admin/unsuspend-user': { - /** - * admin/unsuspend-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:unsuspend-user* - */ - post: operations['admin___unsuspend-user']; - }; - '/admin/update-abuse-user-report': { - /** - * admin/update-abuse-user-report - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* - */ - post: operations['admin___update-abuse-user-report']; - }; - '/admin/update-meta': { - /** - * admin/update-meta - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:meta* - */ - post: operations['admin___update-meta']; - }; - '/admin/update-proxy-account': { - /** - * admin/update-proxy-account - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:account* - */ - post: operations['admin___update-proxy-account']; - }; - '/admin/update-user-note': { - /** - * admin/update-user-note - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:user-note* - */ - post: operations['admin___update-user-note']; - }; - '/announcements': { - /** - * announcements - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['announcements']; - }; - '/announcements/show': { - /** - * announcements/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['announcements___show']; - }; - '/antennas/create': { - /** - * antennas/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['antennas___create']; - }; - '/antennas/delete': { - /** - * antennas/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['antennas___delete']; - }; - '/antennas/list': { - /** - * antennas/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['antennas___list']; - }; - '/antennas/notes': { - /** - * antennas/notes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['antennas___notes']; - }; - '/antennas/show': { - /** - * antennas/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['antennas___show']; - }; - '/antennas/update': { - /** - * antennas/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['antennas___update']; - }; - '/ap/get': { - /** - * ap/get - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:federation* - */ - post: operations['ap___get']; - }; - '/ap/show': { - /** - * ap/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['ap___show']; - }; - '/app/create': { - /** - * app/create - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['app___create']; - }; - '/app/show': { - /** - * app/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['app___show']; - }; - '/auth/accept': { - /** - * auth/accept - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['auth___accept']; - }; - '/auth/session/generate': { - /** - * auth/session/generate - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['auth___session___generate']; - }; - '/auth/session/show': { - /** - * auth/session/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['auth___session___show']; - }; - '/auth/session/userkey': { - /** - * auth/session/userkey - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['auth___session___userkey']; - }; - '/blocking/create': { - /** - * blocking/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:blocks* - */ - post: operations['blocking___create']; - }; - '/blocking/delete': { - /** - * blocking/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:blocks* - */ - post: operations['blocking___delete']; - }; - '/blocking/list': { - /** - * blocking/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:blocks* - */ - post: operations['blocking___list']; - }; - '/bubble-game/ranking': { - /** - * bubble-game/ranking - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['bubble-game___ranking']; - /** - * bubble-game/ranking - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['bubble-game___ranking']; - }; - '/bubble-game/register': { - /** - * bubble-game/register - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['bubble-game___register']; - }; - '/channels/create': { - /** - * channels/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - post: operations['channels___create']; - }; - '/channels/favorite': { - /** - * channels/favorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - post: operations['channels___favorite']; - }; - '/channels/featured': { - /** - * channels/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['channels___featured']; - }; - '/channels/follow': { - /** - * channels/follow - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - post: operations['channels___follow']; - }; - '/channels/followed': { - /** - * channels/followed - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:channels* - */ - post: operations['channels___followed']; - }; - '/channels/my-favorites': { - /** - * channels/my-favorites - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:channels* - */ - post: operations['channels___my-favorites']; - }; - '/channels/owned': { - /** - * channels/owned - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:channels* - */ - post: operations['channels___owned']; - }; - '/channels/search': { - /** - * channels/search - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['channels___search']; - }; - '/channels/show': { - /** - * channels/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['channels___show']; - }; - '/channels/timeline': { - /** - * channels/timeline - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['channels___timeline']; - }; - '/channels/unfavorite': { - /** - * channels/unfavorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - post: operations['channels___unfavorite']; - }; - '/channels/unfollow': { - /** - * channels/unfollow - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - post: operations['channels___unfollow']; - }; - '/channels/update': { - /** - * channels/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - post: operations['channels___update']; - }; - '/charts/active-users': { - /** - * charts/active-users - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___active-users']; - /** - * charts/active-users - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___active-users']; - }; - '/charts/ap-request': { - /** - * charts/ap-request - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___ap-request']; - /** - * charts/ap-request - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___ap-request']; - }; - '/charts/drive': { - /** - * charts/drive - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___drive']; - /** - * charts/drive - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___drive']; - }; - '/charts/federation': { - /** - * charts/federation - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___federation']; - /** - * charts/federation - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___federation']; - }; - '/charts/instance': { - /** - * charts/instance - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___instance']; - /** - * charts/instance - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___instance']; - }; - '/charts/notes': { - /** - * charts/notes - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___notes']; - /** - * charts/notes - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___notes']; - }; - '/charts/user/drive': { - /** - * charts/user/drive - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___user___drive']; - /** - * charts/user/drive - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___user___drive']; - }; - '/charts/user/following': { - /** - * charts/user/following - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___user___following']; - /** - * charts/user/following - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___user___following']; - }; - '/charts/user/notes': { - /** - * charts/user/notes - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___user___notes']; - /** - * charts/user/notes - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___user___notes']; - }; - '/charts/user/pv': { - /** - * charts/user/pv - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___user___pv']; - /** - * charts/user/pv - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___user___pv']; - }; - '/charts/user/reactions': { - /** - * charts/user/reactions - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___user___reactions']; - /** - * charts/user/reactions - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___user___reactions']; - }; - '/charts/users': { - /** - * charts/users - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['charts___users']; - /** - * charts/users - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['charts___users']; - }; - '/chat/history': { - /** - * chat/history - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___history']; - }; - '/chat/messages/create-to-room': { - /** - * chat/messages/create-to-room - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___messages___create-to-room']; - }; - '/chat/messages/create-to-user': { - /** - * chat/messages/create-to-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___messages___create-to-user']; - }; - '/chat/messages/delete': { - /** - * chat/messages/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___messages___delete']; - }; - '/chat/messages/react': { - /** - * chat/messages/react - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___messages___react']; - }; - '/chat/messages/room-timeline': { - /** - * chat/messages/room-timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___messages___room-timeline']; - }; - '/chat/messages/search': { - /** - * chat/messages/search - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___messages___search']; - }; - '/chat/messages/show': { - /** - * chat/messages/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___messages___show']; - }; - '/chat/messages/unreact': { - /** - * chat/messages/unreact - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___messages___unreact']; - }; - '/chat/messages/user-timeline': { - /** - * chat/messages/user-timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___messages___user-timeline']; - }; - '/chat/rooms/create': { - /** - * chat/rooms/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___create']; - }; - '/chat/rooms/delete': { - /** - * chat/rooms/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___delete']; - }; - '/chat/rooms/invitations/create': { - /** - * chat/rooms/invitations/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___invitations___create']; - }; - '/chat/rooms/invitations/ignore': { - /** - * chat/rooms/invitations/ignore - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___invitations___ignore']; - }; - '/chat/rooms/invitations/inbox': { - /** - * chat/rooms/invitations/inbox - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___rooms___invitations___inbox']; - }; - '/chat/rooms/invitations/outbox': { - /** - * chat/rooms/invitations/outbox - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___rooms___invitations___outbox']; - }; - '/chat/rooms/join': { - /** - * chat/rooms/join - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___join']; - }; - '/chat/rooms/joining': { - /** - * chat/rooms/joining - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___rooms___joining']; - }; - '/chat/rooms/leave': { - /** - * chat/rooms/leave - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___leave']; - }; - '/chat/rooms/members': { - /** - * chat/rooms/members - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___members']; - }; - '/chat/rooms/mute': { - /** - * chat/rooms/mute - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___mute']; - }; - '/chat/rooms/owned': { - /** - * chat/rooms/owned - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___rooms___owned']; - }; - '/chat/rooms/show': { - /** - * chat/rooms/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - post: operations['chat___rooms___show']; - }; - '/chat/rooms/update': { - /** - * chat/rooms/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - post: operations['chat___rooms___update']; - }; - '/clips/add-note': { - /** - * clips/add-note - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['clips___add-note']; - }; - '/clips/create': { - /** - * clips/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['clips___create']; - }; - '/clips/delete': { - /** - * clips/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['clips___delete']; - }; - '/clips/favorite': { - /** - * clips/favorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:clip-favorite* - */ - post: operations['clips___favorite']; - }; - '/clips/list': { - /** - * clips/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['clips___list']; - }; - '/clips/my-favorites': { - /** - * clips/my-favorites - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:clip-favorite* - */ - post: operations['clips___my-favorites']; - }; - '/clips/notes': { - /** - * clips/notes - * @description No description provided. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - post: operations['clips___notes']; - }; - '/clips/remove-note': { - /** - * clips/remove-note - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['clips___remove-note']; - }; - '/clips/show': { - /** - * clips/show - * @description No description provided. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - post: operations['clips___show']; - }; - '/clips/unfavorite': { - /** - * clips/unfavorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:clip-favorite* - */ - post: operations['clips___unfavorite']; - }; - '/clips/update': { - /** - * clips/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['clips___update']; - }; - '/drive': { - /** - * drive - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive']; - }; - '/drive/files': { - /** - * drive/files - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___files']; - }; - '/drive/files/attached-notes': { - /** - * drive/files/attached-notes - * @description Find the notes to which the given file is attached. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___files___attached-notes']; - }; - '/drive/files/check-existence': { - /** - * drive/files/check-existence - * @description Check if a given file exists. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___files___check-existence']; - }; - '/drive/files/create': { - /** - * drive/files/create - * @description Upload a new drive file. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - post: operations['drive___files___create']; - }; - '/drive/files/delete': { - /** - * drive/files/delete - * @description Delete an existing drive file. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - post: operations['drive___files___delete']; - }; - '/drive/files/find': { - /** - * drive/files/find - * @description Search for a drive file by the given parameters. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___files___find']; - }; - '/drive/files/find-by-hash': { - /** - * drive/files/find-by-hash - * @description Search for a drive file by a hash of the contents. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___files___find-by-hash']; - }; - '/drive/files/move-bulk': { - /** - * drive/files/move-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - post: operations['drive___files___move-bulk']; - }; - '/drive/files/show': { - /** - * drive/files/show - * @description Show the properties of a drive file. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___files___show']; - }; - '/drive/files/update': { - /** - * drive/files/update - * @description Update the properties of a drive file. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - post: operations['drive___files___update']; - }; - '/drive/files/upload-from-url': { - /** - * drive/files/upload-from-url - * @description Request the server to download a new drive file from the specified URL. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - post: operations['drive___files___upload-from-url']; - }; - '/drive/folders': { - /** - * drive/folders - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___folders']; - }; - '/drive/folders/create': { - /** - * drive/folders/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - post: operations['drive___folders___create']; - }; - '/drive/folders/delete': { - /** - * drive/folders/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - post: operations['drive___folders___delete']; - }; - '/drive/folders/find': { - /** - * drive/folders/find - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___folders___find']; - }; - '/drive/folders/show': { - /** - * drive/folders/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___folders___show']; - }; - '/drive/folders/update': { - /** - * drive/folders/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - post: operations['drive___folders___update']; - }; - '/drive/stream': { - /** - * drive/stream - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - post: operations['drive___stream']; - }; - '/email-address/available': { - /** - * email-address/available - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['email-address___available']; - }; - '/emoji': { - /** - * emoji - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['emoji']; - /** - * emoji - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['emoji']; - }; - '/emojis': { - /** - * emojis - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['emojis']; - /** - * emojis - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['emojis']; - }; - '/endpoint': { - /** - * endpoint - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['endpoint']; - }; - '/endpoints': { - /** - * endpoints - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['endpoints']; - }; - '/export-custom-emojis': { - /** - * export-custom-emojis - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['export-custom-emojis']; - }; - '/federation/followers': { - /** - * federation/followers - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['federation___followers']; - }; - '/federation/following': { - /** - * federation/following - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['federation___following']; - }; - '/federation/instances': { - /** - * federation/instances - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['federation___instances']; - /** - * federation/instances - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['federation___instances']; - }; - '/federation/show-instance': { - /** - * federation/show-instance - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['federation___show-instance']; - }; - '/federation/stats': { - /** - * federation/stats - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['federation___stats']; - /** - * federation/stats - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['federation___stats']; - }; - '/federation/update-remote-user': { - /** - * federation/update-remote-user - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['federation___update-remote-user']; - }; - '/federation/users': { - /** - * federation/users - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['federation___users']; - }; - '/fetch-external-resources': { - /** - * fetch-external-resources - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['fetch-external-resources']; - }; - '/fetch-rss': { - /** - * fetch-rss - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['fetch-rss']; - /** - * fetch-rss - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['fetch-rss']; - }; - '/flash/create': { - /** - * flash/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash* - */ - post: operations['flash___create']; - }; - '/flash/delete': { - /** - * flash/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash* - */ - post: operations['flash___delete']; - }; - '/flash/featured': { - /** - * flash/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['flash___featured']; - }; - '/flash/like': { - /** - * flash/like - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash-likes* - */ - post: operations['flash___like']; - }; - '/flash/my': { - /** - * flash/my - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:flash* - */ - post: operations['flash___my']; - }; - '/flash/my-likes': { - /** - * flash/my-likes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:flash-likes* - */ - post: operations['flash___my-likes']; - }; - '/flash/show': { - /** - * flash/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['flash___show']; - }; - '/flash/unlike': { - /** - * flash/unlike - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash-likes* - */ - post: operations['flash___unlike']; - }; - '/flash/update': { - /** - * flash/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash* - */ - post: operations['flash___update']; - }; - '/following/create': { - /** - * following/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - post: operations['following___create']; - }; - '/following/delete': { - /** - * following/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - post: operations['following___delete']; - }; - '/following/invalidate': { - /** - * following/invalidate - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - post: operations['following___invalidate']; - }; - '/following/requests/accept': { - /** - * following/requests/accept - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - post: operations['following___requests___accept']; - }; - '/following/requests/cancel': { - /** - * following/requests/cancel - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - post: operations['following___requests___cancel']; - }; - '/following/requests/list': { - /** - * following/requests/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:following* - */ - post: operations['following___requests___list']; - }; - '/following/requests/reject': { - /** - * following/requests/reject - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - post: operations['following___requests___reject']; - }; - '/following/requests/sent': { - /** - * following/requests/sent - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:following* - */ - post: operations['following___requests___sent']; - }; - '/following/update': { - /** - * following/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - post: operations['following___update']; - }; - '/following/update-all': { - /** - * following/update-all - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - post: operations['following___update-all']; - }; - '/gallery/featured': { - /** - * gallery/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['gallery___featured']; - }; - '/gallery/popular': { - /** - * gallery/popular - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['gallery___popular']; - }; - '/gallery/posts': { - /** - * gallery/posts - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['gallery___posts']; - }; - '/gallery/posts/create': { - /** - * gallery/posts/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery* - */ - post: operations['gallery___posts___create']; - }; - '/gallery/posts/delete': { - /** - * gallery/posts/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery* - */ - post: operations['gallery___posts___delete']; - }; - '/gallery/posts/like': { - /** - * gallery/posts/like - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery-likes* - */ - post: operations['gallery___posts___like']; - }; - '/gallery/posts/show': { - /** - * gallery/posts/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['gallery___posts___show']; - }; - '/gallery/posts/unlike': { - /** - * gallery/posts/unlike - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery-likes* - */ - post: operations['gallery___posts___unlike']; - }; - '/gallery/posts/update': { - /** - * gallery/posts/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery* - */ - post: operations['gallery___posts___update']; - }; - '/get-avatar-decorations': { - /** - * get-avatar-decorations - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['get-avatar-decorations']; - }; - '/get-online-users-count': { - /** - * get-online-users-count - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['get-online-users-count']; - /** - * get-online-users-count - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['get-online-users-count']; - }; - '/hashtags/list': { - /** - * hashtags/list - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['hashtags___list']; - }; - '/hashtags/search': { - /** - * hashtags/search - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['hashtags___search']; - }; - '/hashtags/show': { - /** - * hashtags/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['hashtags___show']; - }; - '/hashtags/trend': { - /** - * hashtags/trend - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['hashtags___trend']; - /** - * hashtags/trend - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['hashtags___trend']; - }; - '/hashtags/users': { - /** - * hashtags/users - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['hashtags___users']; - }; - '/i': { - /** - * i - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i']; - }; - '/i/2fa/done': { - /** - * i/2fa/done - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___2fa___done']; - }; - '/i/2fa/key-done': { - /** - * i/2fa/key-done - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___2fa___key-done']; - }; - '/i/2fa/password-less': { - /** - * i/2fa/password-less - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___2fa___password-less']; - }; - '/i/2fa/register': { - /** - * i/2fa/register - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___2fa___register']; - }; - '/i/2fa/register-key': { - /** - * i/2fa/register-key - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___2fa___register-key']; - }; - '/i/2fa/remove-key': { - /** - * i/2fa/remove-key - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___2fa___remove-key']; - }; - '/i/2fa/unregister': { - /** - * i/2fa/unregister - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___2fa___unregister']; - }; - '/i/2fa/update-key': { - /** - * i/2fa/update-key - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___2fa___update-key']; - }; - '/i/apps': { - /** - * i/apps - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___apps']; - }; - '/i/authorized-apps': { - /** - * i/authorized-apps - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___authorized-apps']; - }; - '/i/change-password': { - /** - * i/change-password - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___change-password']; - }; - '/i/claim-achievement': { - /** - * i/claim-achievement - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___claim-achievement']; - }; - '/i/delete-account': { - /** - * i/delete-account - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___delete-account']; - }; - '/i/export-antennas': { - /** - * i/export-antennas - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___export-antennas']; - }; - '/i/export-blocking': { - /** - * i/export-blocking - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___export-blocking']; - }; - '/i/export-clips': { - /** - * i/export-clips - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___export-clips']; - }; - '/i/export-favorites': { - /** - * i/export-favorites - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___export-favorites']; - }; - '/i/export-following': { - /** - * i/export-following - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___export-following']; - }; - '/i/export-mute': { - /** - * i/export-mute - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___export-mute']; - }; - '/i/export-notes': { - /** - * i/export-notes - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___export-notes']; - }; - '/i/export-user-lists': { - /** - * i/export-user-lists - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___export-user-lists']; - }; - '/i/favorites': { - /** - * i/favorites - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:favorites* - */ - post: operations['i___favorites']; - }; - '/i/gallery/likes': { - /** - * i/gallery/likes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:gallery-likes* - */ - post: operations['i___gallery___likes']; - }; - '/i/gallery/posts': { - /** - * i/gallery/posts - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:gallery* - */ - post: operations['i___gallery___posts']; - }; - '/i/import-antennas': { - /** - * i/import-antennas - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___import-antennas']; - }; - '/i/import-blocking': { - /** - * i/import-blocking - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___import-blocking']; - }; - '/i/import-following': { - /** - * i/import-following - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___import-following']; - }; - '/i/import-muting': { - /** - * i/import-muting - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___import-muting']; - }; - '/i/import-user-lists': { - /** - * i/import-user-lists - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___import-user-lists']; - }; - '/i/move': { - /** - * i/move - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___move']; - }; - '/i/notifications': { - /** - * i/notifications - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:notifications* - */ - post: operations['i___notifications']; - }; - '/i/notifications-grouped': { - /** - * i/notifications-grouped - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:notifications* - */ - post: operations['i___notifications-grouped']; - }; - '/i/page-likes': { - /** - * i/page-likes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:page-likes* - */ - post: operations['i___page-likes']; - }; - '/i/pages': { - /** - * i/pages - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:pages* - */ - post: operations['i___pages']; - }; - '/i/pin': { - /** - * i/pin - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___pin']; - }; - '/i/read-announcement': { - /** - * i/read-announcement - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___read-announcement']; - }; - '/i/regenerate-token': { - /** - * i/regenerate-token - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___regenerate-token']; - }; - '/i/registry/get': { - /** - * i/registry/get - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i___registry___get']; - }; - '/i/registry/get-all': { - /** - * i/registry/get-all - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i___registry___get-all']; - }; - '/i/registry/get-detail': { - /** - * i/registry/get-detail - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i___registry___get-detail']; - }; - '/i/registry/keys': { - /** - * i/registry/keys - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i___registry___keys']; - }; - '/i/registry/keys-with-type': { - /** - * i/registry/keys-with-type - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i___registry___keys-with-type']; - }; - '/i/registry/remove': { - /** - * i/registry/remove - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___registry___remove']; - }; - '/i/registry/scopes-with-domain': { - /** - * i/registry/scopes-with-domain - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___registry___scopes-with-domain']; - }; - '/i/registry/set': { - /** - * i/registry/set - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___registry___set']; - }; - '/i/revoke-token': { - /** - * i/revoke-token - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___revoke-token']; - }; - '/i/signin-history': { - /** - * i/signin-history - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___signin-history']; - }; - '/i/unpin': { - /** - * i/unpin - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___unpin']; - }; - '/i/update': { - /** - * i/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___update']; - }; - '/i/update-email': { - /** - * i/update-email - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['i___update-email']; - }; - '/i/webhooks/create': { - /** - * i/webhooks/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___webhooks___create']; - }; - '/i/webhooks/delete': { - /** - * i/webhooks/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___webhooks___delete']; - }; - '/i/webhooks/list': { - /** - * i/webhooks/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i___webhooks___list']; - }; - '/i/webhooks/show': { - /** - * i/webhooks/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i___webhooks___show']; - }; - '/i/webhooks/test': { - /** - * i/webhooks/test - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['i___webhooks___test']; - }; - '/i/webhooks/update': { - /** - * i/webhooks/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['i___webhooks___update']; - }; - '/invite/create': { - /** - * invite/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:invite-codes* - */ - post: operations['invite___create']; - }; - '/invite/delete': { - /** - * invite/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:invite-codes* - */ - post: operations['invite___delete']; - }; - '/invite/limit': { - /** - * invite/limit - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:invite-codes* - */ - post: operations['invite___limit']; - }; - '/invite/list': { - /** - * invite/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:invite-codes* - */ - post: operations['invite___list']; - }; - '/meta': { - /** - * meta - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['meta']; - }; - '/miauth/gen-token': { - /** - * miauth/gen-token - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['miauth___gen-token']; - }; - '/mute/create': { - /** - * mute/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:mutes* - */ - post: operations['mute___create']; - }; - '/mute/delete': { - /** - * mute/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:mutes* - */ - post: operations['mute___delete']; - }; - '/mute/list': { - /** - * mute/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:mutes* - */ - post: operations['mute___list']; - }; - '/my/apps': { - /** - * my/apps - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['my___apps']; - }; - '/notes': { - /** - * notes - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes']; - }; - '/notes/children': { - /** - * notes/children - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___children']; - }; - '/notes/clips': { - /** - * notes/clips - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___clips']; - }; - '/notes/conversation': { - /** - * notes/conversation - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___conversation']; - }; - '/notes/create': { - /** - * notes/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notes* - */ - post: operations['notes___create']; - }; - '/notes/delete': { - /** - * notes/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notes* - */ - post: operations['notes___delete']; - }; - '/notes/favorites/create': { - /** - * notes/favorites/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:favorites* - */ - post: operations['notes___favorites___create']; - }; - '/notes/favorites/delete': { - /** - * notes/favorites/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:favorites* - */ - post: operations['notes___favorites___delete']; - }; - '/notes/featured': { - /** - * notes/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['notes___featured']; - /** - * notes/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___featured']; - }; - '/notes/global-timeline': { - /** - * notes/global-timeline - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___global-timeline']; - }; - '/notes/hybrid-timeline': { - /** - * notes/hybrid-timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['notes___hybrid-timeline']; - }; - '/notes/local-timeline': { - /** - * notes/local-timeline - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___local-timeline']; - }; - '/notes/mentions': { - /** - * notes/mentions - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['notes___mentions']; - }; - '/notes/polls/recommendation': { - /** - * notes/polls/recommendation - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['notes___polls___recommendation']; - }; - '/notes/polls/vote': { - /** - * notes/polls/vote - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:votes* - */ - post: operations['notes___polls___vote']; - }; - '/notes/reactions': { - /** - * notes/reactions - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['notes___reactions']; - /** - * notes/reactions - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___reactions']; - }; - '/notes/reactions/create': { - /** - * notes/reactions/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:reactions* - */ - post: operations['notes___reactions___create']; - }; - '/notes/reactions/delete': { - /** - * notes/reactions/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:reactions* - */ - post: operations['notes___reactions___delete']; - }; - '/notes/renotes': { - /** - * notes/renotes - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___renotes']; - }; - '/notes/replies': { - /** - * notes/replies - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___replies']; - }; - '/notes/search': { - /** - * notes/search - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___search']; - }; - '/notes/search-by-tag': { - /** - * notes/search-by-tag - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___search-by-tag']; - }; - '/notes/show': { - /** - * notes/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___show']; - }; - '/notes/show-partial-bulk': { - /** - * notes/show-partial-bulk - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['notes___show-partial-bulk']; - }; - '/notes/state': { - /** - * notes/state - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['notes___state']; - }; - '/notes/thread-muting/create': { - /** - * notes/thread-muting/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['notes___thread-muting___create']; - }; - '/notes/thread-muting/delete': { - /** - * notes/thread-muting/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['notes___thread-muting___delete']; - }; - '/notes/timeline': { - /** - * notes/timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['notes___timeline']; - }; - '/notes/translate': { - /** - * notes/translate - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['notes___translate']; - }; - '/notes/unrenote': { - /** - * notes/unrenote - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notes* - */ - post: operations['notes___unrenote']; - }; - '/notes/user-list-timeline': { - /** - * notes/user-list-timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['notes___user-list-timeline']; - }; - '/notifications/create': { - /** - * notifications/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notifications* - */ - post: operations['notifications___create']; - }; - '/notifications/flush': { - /** - * notifications/flush - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notifications* - */ - post: operations['notifications___flush']; - }; - '/notifications/mark-all-as-read': { - /** - * notifications/mark-all-as-read - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notifications* - */ - post: operations['notifications___mark-all-as-read']; - }; - '/notifications/test-notification': { - /** - * notifications/test-notification - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notifications* - */ - post: operations['notifications___test-notification']; - }; - '/page-push': { - /** - * page-push - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['page-push']; - }; - '/pages/create': { - /** - * pages/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:pages* - */ - post: operations['pages___create']; - }; - '/pages/delete': { - /** - * pages/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:pages* - */ - post: operations['pages___delete']; - }; - '/pages/featured': { - /** - * pages/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['pages___featured']; - }; - '/pages/like': { - /** - * pages/like - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:page-likes* - */ - post: operations['pages___like']; - }; - '/pages/show': { - /** - * pages/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['pages___show']; - }; - '/pages/unlike': { - /** - * pages/unlike - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:page-likes* - */ - post: operations['pages___unlike']; - }; - '/pages/update': { - /** - * pages/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:pages* - */ - post: operations['pages___update']; - }; - '/ping': { - /** - * ping - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['ping']; - }; - '/pinned-users': { - /** - * pinned-users - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['pinned-users']; - }; - '/promo/read': { - /** - * promo/read - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['promo___read']; - }; - '/renote-mute/create': { - /** - * renote-mute/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:mutes* - */ - post: operations['renote-mute___create']; - }; - '/renote-mute/delete': { - /** - * renote-mute/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:mutes* - */ - post: operations['renote-mute___delete']; - }; - '/renote-mute/list': { - /** - * renote-mute/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:mutes* - */ - post: operations['renote-mute___list']; - }; - '/request-reset-password': { - /** - * request-reset-password - * @description Request a users password to be reset. - * - * **Credential required**: *No* - */ - post: operations['request-reset-password']; - }; - '/reset-db': { - /** - * reset-db - * @description Only available when running with <code>NODE_ENV=testing</code>. Reset the database and flush Redis. - * - * **Credential required**: *No* - */ - post: operations['reset-db']; - }; - '/reset-password': { - /** - * reset-password - * @description Complete the password reset that was previously requested. - * - * **Credential required**: *No* - */ - post: operations['reset-password']; - }; - '/retention': { - /** - * retention - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['retention']; - /** - * retention - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['retention']; - }; - '/reversi/cancel-match': { - /** - * reversi/cancel-match - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['reversi___cancel-match']; - }; - '/reversi/games': { - /** - * reversi/games - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['reversi___games']; - }; - '/reversi/invitations': { - /** - * reversi/invitations - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['reversi___invitations']; - }; - '/reversi/match': { - /** - * reversi/match - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['reversi___match']; - }; - '/reversi/show-game': { - /** - * reversi/show-game - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['reversi___show-game']; - }; - '/reversi/surrender': { - /** - * reversi/surrender - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['reversi___surrender']; - }; - '/reversi/verify': { - /** - * reversi/verify - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['reversi___verify']; - }; - '/roles/list': { - /** - * roles/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['roles___list']; - }; - '/roles/notes': { - /** - * roles/notes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['roles___notes']; - }; - '/roles/show': { - /** - * roles/show - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['roles___show']; - }; - '/roles/users': { - /** - * roles/users - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['roles___users']; - }; - '/server-info': { - /** - * server-info - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['server-info']; - /** - * server-info - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['server-info']; - }; - '/stats': { - /** - * stats - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['stats']; - }; - '/sw/register': { - /** - * sw/register - * @description Register to receive push notifications. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['sw___register']; - }; - '/sw/show-registration': { - /** - * sw/show-registration - * @description Check push notification registration exists. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['sw___show-registration']; - }; - '/sw/unregister': { - /** - * sw/unregister - * @description Unregister from receiving push notifications. - * - * **Credential required**: *No* - */ - post: operations['sw___unregister']; - }; - '/sw/update-registration': { - /** - * sw/update-registration - * @description Update push notification registration. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - post: operations['sw___update-registration']; - }; - '/test': { - /** - * test - * @description Endpoint for testing input validation. - * - * **Credential required**: *No* - */ - post: operations['test']; - }; - '/username/available': { - /** - * username/available - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['username___available']; - }; - '/users': { - /** - * users - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['users']; - }; - '/users/achievements': { - /** - * users/achievements - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['users___achievements']; - }; - '/users/clips': { - /** - * users/clips - * @description Show all clips this user owns. - * - * **Credential required**: *No* - */ - post: operations['users___clips']; - }; - '/users/featured-notes': { - /** - * users/featured-notes - * @description No description provided. - * - * **Credential required**: *No* - */ - get: operations['users___featured-notes']; - /** - * users/featured-notes - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['users___featured-notes']; - }; - '/users/flashs': { - /** - * users/flashs - * @description Show all flashs this user created. - * - * **Credential required**: *No* - */ - post: operations['users___flashs']; - }; - '/users/followers': { - /** - * users/followers - * @description Show everyone that follows this user. - * - * **Credential required**: *No* - */ - post: operations['users___followers']; - }; - '/users/following': { - /** - * users/following - * @description Show everyone that this user is following. - * - * **Credential required**: *No* - */ - post: operations['users___following']; - }; - '/users/gallery/posts': { - /** - * users/gallery/posts - * @description Show all gallery posts by the given user. - * - * **Credential required**: *No* - */ - post: operations['users___gallery___posts']; - }; - '/users/get-frequently-replied-users': { - /** - * users/get-frequently-replied-users - * @description Get a list of other users that the specified user frequently replies to. - * - * **Credential required**: *No* - */ - post: operations['users___get-frequently-replied-users']; - }; - '/users/lists/create': { - /** - * users/lists/create - * @description Create a new list of users. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___create']; - }; - '/users/lists/create-from-public': { - /** - * users/lists/create-from-public - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___create-from-public']; - }; - '/users/lists/delete': { - /** - * users/lists/delete - * @description Delete an existing list of users. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___delete']; - }; - '/users/lists/favorite': { - /** - * users/lists/favorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___favorite']; - }; - '/users/lists/get-memberships': { - /** - * users/lists/get-memberships - * @description No description provided. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - post: operations['users___lists___get-memberships']; - }; - '/users/lists/list': { - /** - * users/lists/list - * @description Show all lists that the authenticated user has created. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - post: operations['users___lists___list']; - }; - '/users/lists/pull': { - /** - * users/lists/pull - * @description Remove a user from a list. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___pull']; - }; - '/users/lists/push': { - /** - * users/lists/push - * @description Add a user to an existing list. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___push']; - }; - '/users/lists/show': { - /** - * users/lists/show - * @description Show the properties of a list. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - post: operations['users___lists___show']; - }; - '/users/lists/unfavorite': { - /** - * users/lists/unfavorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___unfavorite']; - }; - '/users/lists/update': { - /** - * users/lists/update - * @description Update the properties of a list. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___update']; - }; - '/users/lists/update-membership': { - /** - * users/lists/update-membership - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___lists___update-membership']; - }; - '/users/notes': { - /** - * users/notes - * @description No description provided. - * - * **Credential required**: *No* - */ - post: operations['users___notes']; - }; - '/users/pages': { - /** - * users/pages - * @description Show all pages this user created. - * - * **Credential required**: *No* - */ - post: operations['users___pages']; - }; - '/users/reactions': { - /** - * users/reactions - * @description Show all reactions this user made. - * - * **Credential required**: *No* - */ - post: operations['users___reactions']; - }; - '/users/recommendation': { - /** - * users/recommendation - * @description Show users that the authenticated user might be interested to follow. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['users___recommendation']; - }; - '/users/relation': { - /** - * users/relation - * @description Show the different kinds of relations between the authenticated user and the specified user(s). - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - post: operations['users___relation']; - }; - '/users/report-abuse': { - /** - * users/report-abuse - * @description File a report. - * - * **Credential required**: *Yes* / **Permission**: *write:report-abuse* - */ - post: operations['users___report-abuse']; - }; - '/users/search': { - /** - * users/search - * @description Search for users. - * - * **Credential required**: *No* - */ - post: operations['users___search']; - }; - '/users/search-by-username-and-host': { - /** - * users/search-by-username-and-host - * @description Search for a user by username and/or host. - * - * **Credential required**: *No* - */ - post: operations['users___search-by-username-and-host']; - }; - '/users/show': { - /** - * users/show - * @description Show the properties of a user. - * - * **Credential required**: *No* - */ - post: operations['users___show']; - }; - '/users/update-memo': { - /** - * users/update-memo - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - post: operations['users___update-memo']; - }; - '/v2/admin/emoji/list': { - /** - * v2/admin/emoji/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* - */ - post: operations['v2___admin___emoji___list']; - }; -}; - -export type webhooks = Record<string, never>; - -export type components = { - schemas: { - Error: { - /** @description An error object. */ - error: { - /** @description An error code. Unique within the endpoint. */ - code: string; - /** @description An error message. */ - message: string; + '/admin/abuse-report/notification-recipient/create': { /** - * Format: uuid - * @description An error ID. This ID is static. + * admin/abuse-report/notification-recipient/create + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* */ - id: string; - }; + post: operations['admin___abuse-report___notification-recipient___create']; }; - UserLite: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** @example è— */ - name: string | null; - /** @example ai */ - username: string; - /** - * @description The local host is represented with `null`. - * @example misskey.example.com - */ - host: string | null; - /** Format: url */ - avatarUrl: string | null; - avatarBlurhash: string | null; - avatarDecorations: { - /** Format: id */ - id: string; - angle?: number; - flipH?: boolean; - /** Format: url */ - url: string; - offsetX?: number; - offsetY?: number; - }[]; - isBot?: boolean; - isCat?: boolean; - requireSigninToViewContents?: boolean; - makeNotesFollowersOnlyBefore?: number | null; - makeNotesHiddenBefore?: number | null; - instance?: { - name: string | null; - softwareName: string | null; - softwareVersion: string | null; - iconUrl: string | null; - faviconUrl: string | null; - themeColor: string | null; - }; - emojis: { - [key: string]: string; - }; - /** @enum {string} */ - onlineStatus: 'unknown' | 'online' | 'active' | 'offline'; - badgeRoles?: ({ - name: string; - iconUrl: string | null; - displayOrder: number; - })[]; - }; - UserDetailedNotMeOnly: { - /** Format: url */ - url: string | null; - /** Format: uri */ - uri: string | null; - /** Format: uri */ - movedTo: string | null; - alsoKnownAs: string[] | null; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string | null; - /** Format: date-time */ - lastFetchedAt: string | null; - /** Format: url */ - bannerUrl: string | null; - bannerBlurhash: string | null; - isLocked: boolean; - isSilenced: boolean; - /** @example false */ - isSuspended: boolean; - /** @example Hi masters, I am Ai! */ - description: string | null; - location: string | null; - /** @example 2018-03-12 */ - birthday: string | null; - /** @example ja-JP */ - lang: string | null; - fields: { - name: string; - value: string; - }[]; - verifiedLinks: string[]; - followersCount: number; - followingCount: number; - notesCount: number; - pinnedNoteIds: string[]; - pinnedNotes: components['schemas']['Note'][]; - pinnedPageId: string | null; - pinnedPage: components['schemas']['Page'] | null; - publicReactions: boolean; - /** @enum {string} */ - followingVisibility: 'public' | 'followers' | 'private'; - /** @enum {string} */ - followersVisibility: 'public' | 'followers' | 'private'; - /** @enum {string} */ - chatScope: 'everyone' | 'following' | 'followers' | 'mutual' | 'none'; - canChat: boolean; - roles: components['schemas']['RoleLite'][]; - followedMessage?: string | null; - memo: string | null; - moderationNote?: string; - twoFactorEnabled?: boolean; - usePasswordLessLogin?: boolean; - securityKeys?: boolean; - isFollowing?: boolean; - isFollowed?: boolean; - hasPendingFollowRequestFromYou?: boolean; - hasPendingFollowRequestToYou?: boolean; - isBlocking?: boolean; - isBlocked?: boolean; - isMuted?: boolean; - isRenoteMuted?: boolean; - /** @enum {string} */ - notify?: 'normal' | 'none'; - withReplies?: boolean; + '/admin/abuse-report/notification-recipient/delete': { + /** + * admin/abuse-report/notification-recipient/delete + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* + */ + post: operations['admin___abuse-report___notification-recipient___delete']; }; - MeDetailedOnly: { - /** Format: id */ - avatarId: string | null; - /** Format: id */ - bannerId: string | null; - followedMessage: string | null; - isModerator: boolean | null; - isAdmin: boolean | null; - injectFeaturedNote: boolean; - receiveAnnouncementEmail: boolean; - alwaysMarkNsfw: boolean; - autoSensitive: boolean; - carefulBot: boolean; - autoAcceptFollowed: boolean; - noCrawle: boolean; - preventAiLearning: boolean; - isExplorable: boolean; - isDeleted: boolean; - /** @enum {string} */ - twoFactorBackupCodesStock: 'full' | 'partial' | 'none'; - hideOnlineStatus: boolean; - hasUnreadSpecifiedNotes: boolean; - hasUnreadMentions: boolean; - hasUnreadAnnouncement: boolean; - unreadAnnouncements: components['schemas']['Announcement'][]; - hasUnreadAntenna: boolean; - hasUnreadChannel: boolean; - hasUnreadChatMessages: boolean; - hasUnreadNotification: boolean; - hasPendingReceivedFollowRequest: boolean; - unreadNotificationsCount: number; - mutedWords: string[][]; - hardMutedWords: string[][]; - mutedInstances: string[] | null; - notificationRecieveConfig: { - note?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - follow?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - mention?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - reply?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - renote?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - quote?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - reaction?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - pollEnded?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - receiveFollowRequest?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - followRequestAccepted?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - roleAssigned?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - chatRoomInvitationReceived?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - achievementEarned?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - app?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - test?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - }; - emailNotificationTypes: string[]; - achievements: components['schemas']['Achievement'][]; - loggedInDays: number; - policies: components['schemas']['RolePolicies']; - /** @default false */ - twoFactorEnabled: boolean; - /** @default false */ - usePasswordLessLogin: boolean; - /** @default false */ - securityKeys: boolean; - email?: string | null; - emailVerified?: boolean | null; - securityKeysList?: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - name: string; - /** Format: date-time */ - lastUsed: string; - }[]; + '/admin/abuse-report/notification-recipient/list': { + /** + * admin/abuse-report/notification-recipient/list + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-report:notification-recipient* + */ + post: operations['admin___abuse-report___notification-recipient___list']; }; - UserDetailedNotMe: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly']; - MeDetailed: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly'] & components['schemas']['MeDetailedOnly']; - UserDetailed: components['schemas']['UserDetailedNotMe'] | components['schemas']['MeDetailed']; - User: components['schemas']['UserLite'] | components['schemas']['UserDetailed']; - UserList: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - name: string; - userIds?: string[]; - isPublic: boolean; + '/admin/abuse-report/notification-recipient/show': { + /** + * admin/abuse-report/notification-recipient/show + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-report:notification-recipient* + */ + post: operations['admin___abuse-report___notification-recipient___show']; }; - Achievement: { - name: components['schemas']['AchievementName']; - unlockedAt: number; + '/admin/abuse-report/notification-recipient/update': { + /** + * admin/abuse-report/notification-recipient/update + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* + */ + post: operations['admin___abuse-report___notification-recipient___update']; }; - /** @enum {string} */ - AchievementName: 'notes1' | 'notes10' | 'notes100' | 'notes500' | 'notes1000' | 'notes5000' | 'notes10000' | 'notes20000' | 'notes30000' | 'notes40000' | 'notes50000' | 'notes60000' | 'notes70000' | 'notes80000' | 'notes90000' | 'notes100000' | 'login3' | 'login7' | 'login15' | 'login30' | 'login60' | 'login100' | 'login200' | 'login300' | 'login400' | 'login500' | 'login600' | 'login700' | 'login800' | 'login900' | 'login1000' | 'passedSinceAccountCreated1' | 'passedSinceAccountCreated2' | 'passedSinceAccountCreated3' | 'loggedInOnBirthday' | 'loggedInOnNewYearsDay' | 'noteClipped1' | 'noteFavorited1' | 'myNoteFavorited1' | 'profileFilled' | 'markedAsCat' | 'following1' | 'following10' | 'following50' | 'following100' | 'following300' | 'followers1' | 'followers10' | 'followers50' | 'followers100' | 'followers300' | 'followers500' | 'followers1000' | 'collectAchievements30' | 'viewAchievements3min' | 'iLoveMisskey' | 'foundTreasure' | 'client30min' | 'client60min' | 'noteDeletedWithin1min' | 'postedAtLateNight' | 'postedAt0min0sec' | 'selfQuote' | 'htl20npm' | 'viewInstanceChart' | 'outputHelloWorldOnScratchpad' | 'open3windows' | 'driveFolderCircularReference' | 'reactWithoutRead' | 'clickedClickHere' | 'justPlainLucky' | 'setNameToSyuilo' | 'cookieClicked' | 'brainDiver' | 'smashTestNotificationButton' | 'tutorialCompleted' | 'bubbleGameExplodingHead' | 'bubbleGameDoubleExplodingHead'; - Ad: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - expiresAt: string; - /** Format: date-time */ - startsAt: string; - place: string; - priority: string; - ratio: number; - url: string; - imageUrl: string; - memo: string; - dayOfWeek: number; + '/admin/abuse-user-reports': { + /** + * admin/abuse-user-reports + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-user-reports* + */ + post: operations['admin___abuse-user-reports']; }; - Announcement: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string | null; - text: string; - title: string; - imageUrl: string | null; - /** @enum {string} */ - icon: 'info' | 'warning' | 'error' | 'success'; - /** @enum {string} */ - display: 'dialog' | 'normal' | 'banner'; - needConfirmationToRead: boolean; - silence: boolean; - forYou: boolean; - isRead?: boolean; + '/admin/accounts/create': { + /** + * admin/accounts/create + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['admin___accounts___create']; }; - App: { - id: string; - name: string; - callbackUrl: string | null; - permission: string[]; - secret?: string; - isAuthorized?: boolean; + '/admin/accounts/delete': { + /** + * admin/accounts/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:account* + */ + post: operations['admin___accounts___delete']; }; - Note: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - deletedAt?: string | null; - text: string | null; - cw?: string | null; - /** Format: id */ - userId: string; - user: components['schemas']['UserLite']; - /** - * Format: id - * @example xxxxxxxxxx - */ - replyId?: string | null; - /** - * Format: id - * @example xxxxxxxxxx - */ - renoteId?: string | null; - reply?: components['schemas']['Note'] | null; - renote?: components['schemas']['Note'] | null; - isHidden?: boolean; - /** @enum {string} */ - visibility: 'public' | 'home' | 'followers' | 'specified'; - mentions?: string[]; - visibleUserIds?: string[]; - fileIds?: string[]; - files?: components['schemas']['DriveFile'][]; - tags?: string[]; - poll?: ({ - /** Format: date-time */ - expiresAt?: string | null; - multiple: boolean; - choices: { - isVoted: boolean; - text: string; - votes: number; - }[]; - }) | null; - emojis?: { - [key: string]: string; - }; - /** - * Format: id - * @example xxxxxxxxxx - */ - channelId?: string | null; - channel?: ({ - id: string; - name: string; - color: string; - isSensitive: boolean; - allowRenoteToExternal: boolean; - userId: string | null; - }) | null; - localOnly?: boolean; - /** @enum {string|null} */ - reactionAcceptance: 'likeOnly' | 'likeOnlyForRemote' | 'nonSensitiveOnly' | 'nonSensitiveOnlyForLocalLikeOnlyForRemote' | null; - reactionEmojis: { - [key: string]: string; - }; - reactions: { - [key: string]: number; - }; - reactionCount: number; - renoteCount: number; - repliesCount: number; - uri?: string; - url?: string; - reactionAndUserPairCache?: string[]; - clippedCount?: number; - hasPoll?: boolean; - myReaction?: string | null; + '/admin/accounts/find-by-email': { + /** + * admin/accounts/find-by-email + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:account* + */ + post: operations['admin___accounts___find-by-email']; }; - NoteReaction: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - user: components['schemas']['UserLite']; - type: string; + '/admin/ad/create': { + /** + * admin/ad/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:ad* + */ + post: operations['admin___ad___create']; }; - NoteFavorite: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - note: components['schemas']['Note']; - /** Format: id */ - noteId: string; + '/admin/ad/delete': { + /** + * admin/ad/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:ad* + */ + post: operations['admin___ad___delete']; }; - Notification: { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'note'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - note: components['schemas']['Note']; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'mention'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - note: components['schemas']['Note']; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'reply'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - note: components['schemas']['Note']; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'renote'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - note: components['schemas']['Note']; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'quote'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - note: components['schemas']['Note']; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'reaction'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - note: components['schemas']['Note']; - reaction: string; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'pollEnded'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - note: components['schemas']['Note']; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'follow'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'receiveFollowRequest'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - } | ({ - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'followRequestAccepted'; - user: components['schemas']['UserLite']; - /** Format: id */ - userId: string; - message: string | null; - }) | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'roleAssigned'; - role: components['schemas']['Role']; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'chatRoomInvitationReceived'; - invitation: components['schemas']['ChatRoomInvitation']; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'achievementEarned'; - achievement: components['schemas']['AchievementName']; - } | ({ - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'exportCompleted'; - /** @enum {string} */ - exportedEntity: 'antenna' | 'blocking' | 'clip' | 'customEmoji' | 'favorite' | 'following' | 'muting' | 'note' | 'userList'; - /** Format: id */ - fileId: string; - }) | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'login'; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'createToken'; - } | ({ - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'app'; - body: string; - header: string | null; - icon: string | null; - }) | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'reaction:grouped'; - note: components['schemas']['Note']; - reactions: { - user: components['schemas']['UserLite']; - reaction: string; - }[]; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'renote:grouped'; - note: components['schemas']['Note']; - users: components['schemas']['UserLite'][]; - } | { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @enum {string} */ - type: 'test'; + '/admin/ad/list': { + /** + * admin/ad/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:ad* + */ + post: operations['admin___ad___list']; }; - DriveFile: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** @example 192.jpg */ - name: string; - /** @example image/jpeg */ - type: string; - /** - * Format: md5 - * @example 15eca7fba0480996e2245f5185bf39f2 - */ - md5: string; - /** @example 51469 */ - size: number; - isSensitive: boolean; - blurhash: string | null; - properties: { - /** @example 1280 */ - width?: number; - /** @example 720 */ - height?: number; - /** @example 8 */ - orientation?: number; - /** @example rgb(40,65,87) */ - avgColor?: string; - }; - /** Format: url */ - url: string; - /** Format: url */ - thumbnailUrl: string | null; - comment: string | null; - /** - * Format: id - * @example xxxxxxxxxx - */ - folderId: string | null; - folder?: components['schemas']['DriveFolder'] | null; - /** - * Format: id - * @example xxxxxxxxxx - */ - userId: string | null; - user?: components['schemas']['UserLite'] | null; + '/admin/ad/update': { + /** + * admin/ad/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:ad* + */ + post: operations['admin___ad___update']; }; - DriveFolder: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - name: string; - /** - * Format: id - * @example xxxxxxxxxx - */ - parentId: string | null; - foldersCount?: number; - filesCount?: number; - parent?: components['schemas']['DriveFolder'] | null; + '/admin/announcements/create': { + /** + * admin/announcements/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* + */ + post: operations['admin___announcements___create']; }; - Following: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: id */ - followeeId: string; - /** Format: id */ - followerId: string; - followee?: components['schemas']['UserDetailedNotMe']; - follower?: components['schemas']['UserDetailedNotMe']; + '/admin/announcements/delete': { + /** + * admin/announcements/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* + */ + post: operations['admin___announcements___delete']; }; - Muting: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - expiresAt: string | null; - /** Format: id */ - muteeId: string; - mutee: components['schemas']['UserDetailedNotMe']; + '/admin/announcements/list': { + /** + * admin/announcements/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:announcements* + */ + post: operations['admin___announcements___list']; }; - RenoteMuting: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: id */ - muteeId: string; - mutee: components['schemas']['UserDetailedNotMe']; + '/admin/announcements/update': { + /** + * admin/announcements/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* + */ + post: operations['admin___announcements___update']; }; - Blocking: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: id */ - blockeeId: string; - blockee: components['schemas']['UserDetailedNotMe']; + '/admin/avatar-decorations/create': { + /** + * admin/avatar-decorations/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* + */ + post: operations['admin___avatar-decorations___create']; }; - Hashtag: { - /** @example misskey */ - tag: string; - mentionedUsersCount: number; - mentionedLocalUsersCount: number; - mentionedRemoteUsersCount: number; - attachedUsersCount: number; - attachedLocalUsersCount: number; - attachedRemoteUsersCount: number; + '/admin/avatar-decorations/delete': { + /** + * admin/avatar-decorations/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* + */ + post: operations['admin___avatar-decorations___delete']; }; - InviteCode: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** @example GR6S02ERUA5VR */ - code: string; - /** Format: date-time */ - expiresAt: string | null; - /** Format: date-time */ - createdAt: string; - createdBy: components['schemas']['UserLite'] | null; - usedBy: components['schemas']['UserLite'] | null; - /** Format: date-time */ - usedAt: string | null; - used: boolean; + '/admin/avatar-decorations/list': { + /** + * admin/avatar-decorations/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:avatar-decorations* + */ + post: operations['admin___avatar-decorations___list']; }; - Page: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string; - /** Format: id */ - userId: string; - user: components['schemas']['UserLite']; - content: components['schemas']['PageBlock'][]; - variables: Record<string, never>[]; - title: string; - name: string; - summary: string | null; - hideTitleWhenPinned: boolean; - alignCenter: boolean; - font: string; - script: string; - eyeCatchingImageId: string | null; - eyeCatchingImage: components['schemas']['DriveFile'] | null; - attachedFiles: components['schemas']['DriveFile'][]; - likedCount: number; - isLiked?: boolean; + '/admin/avatar-decorations/update': { + /** + * admin/avatar-decorations/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* + */ + post: operations['admin___avatar-decorations___update']; }; - PageBlock: OneOf<[{ - id: string; - /** @enum {string} */ - type: 'text'; - text: string; - }, { - id: string; - /** @enum {string} */ - type: 'section'; - title: string; - children: components['schemas']['PageBlock'][]; - }, { - id: string; - /** @enum {string} */ - type: 'image'; - fileId: string | null; - }, { - id: string; - /** @enum {string} */ - type: 'note'; - detailed: boolean; - note: string | null; - }]>; - Channel: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - lastNotedAt: string | null; - name: string; - description: string | null; - /** Format: id */ - userId: string | null; - /** Format: url */ - bannerUrl: string | null; - pinnedNoteIds: string[]; - color: string; - isArchived: boolean; - usersCount: number; - notesCount: number; - isSensitive: boolean; - allowRenoteToExternal: boolean; - isFollowing?: boolean; - isFavorited?: boolean; - pinnedNotes?: components['schemas']['Note'][]; + '/admin/captcha/current': { + /** + * admin/captcha/current + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:meta* + */ + post: operations['admin___captcha___current']; }; - QueueCount: { - waiting: number; - active: number; - completed: number; - failed: number; - delayed: number; + '/admin/captcha/save': { + /** + * admin/captcha/save + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:meta* + */ + post: operations['admin___captcha___save']; }; - QueueMetrics: { - meta: { - count: number; - prevTS: number; - prevCount: number; - }; - data: number[]; - count: number; + '/admin/delete-account': { + /** + * admin/delete-account + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:delete-account* + */ + post: operations['admin___delete-account']; }; - QueueJob: { - id: string; - name: string; - data: Record<string, never>; - opts: Record<string, never>; - timestamp: number; - processedOn?: number; - processedBy?: string; - finishedOn?: number; - progress: Record<string, never>; - attempts: number; - delay: number; - failedReason: string; - stacktrace: string[]; - returnValue: Record<string, never>; - isFailed: boolean; + '/admin/delete-all-files-of-a-user': { + /** + * admin/delete-all-files-of-a-user + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:delete-all-files-of-a-user* + */ + post: operations['admin___delete-all-files-of-a-user']; }; - Antenna: { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - name: string; - keywords: string[][]; - excludeKeywords: string[][]; - /** @enum {string} */ - src: 'home' | 'all' | 'users' | 'list' | 'users_blacklist'; - /** Format: id */ - userListId: string | null; - users: string[]; - /** @default false */ - caseSensitive: boolean; - /** @default false */ - localOnly: boolean; - /** @default false */ - excludeBots: boolean; - /** @default false */ - withReplies: boolean; - withFile: boolean; - isActive: boolean; - /** @default false */ - hasUnreadNote: boolean; - /** @default false */ - notify: boolean; - /** @default false */ - excludeNotesInSensitiveChannel: boolean; + '/admin/drive/clean-remote-files': { + /** + * admin/drive/clean-remote-files + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:drive* + */ + post: operations['admin___drive___clean-remote-files']; }; - Clip: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - lastClippedAt: string | null; - /** Format: id */ - userId: string; - user: components['schemas']['UserLite']; - name: string; - description: string | null; - isPublic: boolean; - favoritedCount: number; - isFavorited?: boolean; - notesCount?: number; + '/admin/drive/cleanup': { + /** + * admin/drive/cleanup + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:drive* + */ + post: operations['admin___drive___cleanup']; }; - FederationInstance: { - /** Format: id */ - id: string; - /** Format: date-time */ - firstRetrievedAt: string; - /** @example misskey.example.com */ - host: string; - usersCount: number; - notesCount: number; - followingCount: number; - followersCount: number; - isNotResponding: boolean; - isSuspended: boolean; - /** @enum {string} */ - suspensionState: 'none' | 'manuallySuspended' | 'goneSuspended' | 'autoSuspendedForNotResponding' | 'softwareSuspended'; - isBlocked: boolean; - /** @example misskey */ - softwareName: string | null; - softwareVersion: string | null; - /** @example true */ - openRegistrations: boolean | null; - name: string | null; - description: string | null; - maintainerName: string | null; - maintainerEmail: string | null; - isSilenced: boolean; - isMediaSilenced: boolean; - /** Format: url */ - iconUrl: string | null; - /** Format: url */ - faviconUrl: string | null; - themeColor: string | null; - /** Format: date-time */ - infoUpdatedAt: string | null; - /** Format: date-time */ - latestRequestReceivedAt: string | null; - moderationNote?: string | null; + '/admin/drive/files': { + /** + * admin/drive/files + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:drive* + */ + post: operations['admin___drive___files']; }; - GalleryPost: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string; - /** Format: id */ - userId: string; - user: components['schemas']['UserLite']; - title: string; - description: string | null; - fileIds?: string[]; - files?: components['schemas']['DriveFile'][]; - tags?: string[]; - isSensitive: boolean; - likedCount: number; - isLiked?: boolean; + '/admin/drive/show-file': { + /** + * admin/drive/show-file + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:drive* + */ + post: operations['admin___drive___show-file']; }; - EmojiSimple: { - aliases: string[]; - name: string; - category: string | null; - url: string; - localOnly?: boolean; - isSensitive?: boolean; - roleIdsThatCanBeUsedThisEmojiAsReaction?: string[]; + '/admin/emoji/add': { + /** + * admin/emoji/add + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___add']; }; - EmojiDetailed: { - /** Format: id */ - id: string; - aliases: string[]; - name: string; - category: string | null; - /** @description The local host is represented with `null`. */ - host: string | null; - url: string; - license: string | null; - isSensitive: boolean; - localOnly: boolean; - roleIdsThatCanBeUsedThisEmojiAsReaction: string[]; + '/admin/emoji/add-aliases-bulk': { + /** + * admin/emoji/add-aliases-bulk + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___add-aliases-bulk']; }; - EmojiDetailedAdmin: { - /** Format: id */ - id: string; - /** Format: date-time */ - updatedAt: string | null; - name: string; - /** @description The local host is represented with `null`. */ - host: string | null; - publicUrl: string; - originalUrl: string; - uri: string | null; - type: string | null; - aliases: string[]; - category: string | null; - license: string | null; - localOnly: boolean; - isSensitive: boolean; - roleIdsThatCanBeUsedThisEmojiAsReaction: { - /** Format: misskey:id */ - id: string; - name: string; - }[]; + '/admin/emoji/copy': { + /** + * admin/emoji/copy + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___copy']; }; - Flash: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string; - /** Format: id */ - userId: string; - user: components['schemas']['UserLite']; - title: string; - summary: string; - script: string; - /** @enum {string} */ - visibility: 'private' | 'public'; - likedCount: number | null; - isLiked?: boolean; + '/admin/emoji/delete': { + /** + * admin/emoji/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___delete']; }; - Signin: { - id: string; - /** Format: date-time */ - createdAt: string; - ip: string; - headers: Record<string, never>; - success: boolean; + '/admin/emoji/delete-bulk': { + /** + * admin/emoji/delete-bulk + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___delete-bulk']; }; - RoleCondFormulaLogics: { - id: string; - /** @enum {string} */ - type: 'and' | 'or'; - values: components['schemas']['RoleCondFormulaValue'][]; + '/admin/emoji/import-zip': { + /** + * admin/emoji/import-zip + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['admin___emoji___import-zip']; }; - RoleCondFormulaValueNot: { - id: string; - /** @enum {string} */ - type: 'not'; - value: components['schemas']['RoleCondFormulaValue']; + '/admin/emoji/list': { + /** + * admin/emoji/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* + */ + post: operations['admin___emoji___list']; }; - RoleCondFormulaValueIsLocalOrRemote: { - id: string; - /** @enum {string} */ - type: 'isLocal' | 'isRemote'; + '/admin/emoji/list-remote': { + /** + * admin/emoji/list-remote + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* + */ + post: operations['admin___emoji___list-remote']; }; - RoleCondFormulaValueUserSettingBooleanSchema: { - id: string; - /** @enum {string} */ - type: 'isSuspended' | 'isLocked' | 'isBot' | 'isCat' | 'isExplorable'; + '/admin/emoji/remove-aliases-bulk': { + /** + * admin/emoji/remove-aliases-bulk + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___remove-aliases-bulk']; }; - RoleCondFormulaValueAssignedRole: { - id: string; - /** @enum {string} */ - type: 'roleAssignedTo'; - /** - * Format: id - * @example xxxxxxxxxx - */ - roleId: string; + '/admin/emoji/set-aliases-bulk': { + /** + * admin/emoji/set-aliases-bulk + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___set-aliases-bulk']; }; - RoleCondFormulaValueCreated: { - id: string; - /** @enum {string} */ - type: 'createdLessThan' | 'createdMoreThan'; - sec: number; + '/admin/emoji/set-category-bulk': { + /** + * admin/emoji/set-category-bulk + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___set-category-bulk']; }; - RoleCondFormulaFollowersOrFollowingOrNotes: { - id: string; - /** @enum {string} */ - type: 'followersLessThanOrEq' | 'followersMoreThanOrEq' | 'followingLessThanOrEq' | 'followingMoreThanOrEq' | 'notesLessThanOrEq' | 'notesMoreThanOrEq'; - value: number; + '/admin/emoji/set-license-bulk': { + /** + * admin/emoji/set-license-bulk + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___set-license-bulk']; }; - RoleCondFormulaValue: components['schemas']['RoleCondFormulaLogics'] | components['schemas']['RoleCondFormulaValueNot'] | components['schemas']['RoleCondFormulaValueIsLocalOrRemote'] | components['schemas']['RoleCondFormulaValueUserSettingBooleanSchema'] | components['schemas']['RoleCondFormulaValueAssignedRole'] | components['schemas']['RoleCondFormulaValueCreated'] | components['schemas']['RoleCondFormulaFollowersOrFollowingOrNotes']; - RoleLite: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** @example New Role */ - name: string; - /** @example #000000 */ - color: string | null; - iconUrl: string | null; - description: string; - /** @example false */ - isModerator: boolean; - /** @example false */ - isAdministrator: boolean; - /** @example 0 */ - displayOrder: number; + '/admin/emoji/update': { + /** + * admin/emoji/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* + */ + post: operations['admin___emoji___update']; }; - Role: components['schemas']['RoleLite'] & ({ - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string; - /** @enum {string} */ - target: 'manual' | 'conditional'; - condFormula: components['schemas']['RoleCondFormulaValue']; - /** @example false */ - isPublic: boolean; - /** @example false */ - isExplorable: boolean; - /** @example false */ - asBadge: boolean; - /** @example false */ - preserveAssignmentOnMoveAccount: boolean; - /** @example false */ - canEditMembersByModerator: boolean; - policies: { - [key: string]: { - value?: number | boolean; - priority?: number; - useDefault?: boolean; - }; - }; - usersCount: number; - }); - RolePolicies: { - gtlAvailable: boolean; - ltlAvailable: boolean; - canPublicNote: boolean; - mentionLimit: number; - canInvite: boolean; - inviteLimit: number; - inviteLimitCycle: number; - inviteExpirationTime: number; - canManageCustomEmojis: boolean; - canManageAvatarDecorations: boolean; - canSearchNotes: boolean; - canUseTranslator: boolean; - canHideAds: boolean; - driveCapacityMb: number; - maxFileSizeMb: number; - uploadableFileTypes: string[]; - alwaysMarkNsfw: boolean; - canUpdateBioMedia: boolean; - pinLimit: number; - antennaLimit: number; - wordMuteLimit: number; - webhookLimit: number; - clipLimit: number; - noteEachClipsLimit: number; - userListLimit: number; - userEachUserListsLimit: number; - rateLimitFactor: number; - avatarDecorationLimit: number; - canImportAntennas: boolean; - canImportBlocking: boolean; - canImportFollowing: boolean; - canImportMuting: boolean; - canImportUserLists: boolean; - /** @enum {string} */ - chatAvailability: 'available' | 'readonly' | 'unavailable'; + '/admin/federation/delete-all-files': { + /** + * admin/federation/delete-all-files + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:federation* + */ + post: operations['admin___federation___delete-all-files']; }; - ReversiGameLite: { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - startedAt: string | null; - /** Format: date-time */ - endedAt: string | null; - isStarted: boolean; - isEnded: boolean; - /** Format: id */ - user1Id: string; - /** Format: id */ - user2Id: string; - user1: components['schemas']['UserLite']; - user2: components['schemas']['UserLite']; - /** Format: id */ - winnerId: string | null; - winner: components['schemas']['UserLite'] | null; - /** Format: id */ - surrenderedUserId: string | null; - /** Format: id */ - timeoutUserId: string | null; - black: number | null; - bw: string; - noIrregularRules: boolean; - isLlotheo: boolean; - canPutEverywhere: boolean; - loopedBoard: boolean; - timeLimitForEachTurn: number; + '/admin/federation/refresh-remote-instance-metadata': { + /** + * admin/federation/refresh-remote-instance-metadata + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:federation* + */ + post: operations['admin___federation___refresh-remote-instance-metadata']; }; - ReversiGameDetailed: { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - startedAt: string | null; - /** Format: date-time */ - endedAt: string | null; - isStarted: boolean; - isEnded: boolean; - form1: Record<string, never> | null; - form2: Record<string, never> | null; - user1Ready: boolean; - user2Ready: boolean; - /** Format: id */ - user1Id: string; - /** Format: id */ - user2Id: string; - user1: components['schemas']['UserLite']; - user2: components['schemas']['UserLite']; - /** Format: id */ - winnerId: string | null; - winner: components['schemas']['UserLite'] | null; - /** Format: id */ - surrenderedUserId: string | null; - /** Format: id */ - timeoutUserId: string | null; - black: number | null; - bw: string; - noIrregularRules: boolean; - isLlotheo: boolean; - canPutEverywhere: boolean; - loopedBoard: boolean; - timeLimitForEachTurn: number; - logs: number[][]; - map: string[]; + '/admin/federation/remove-all-following': { + /** + * admin/federation/remove-all-following + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:federation* + */ + post: operations['admin___federation___remove-all-following']; }; - MetaLite: { - maintainerName: string | null; - maintainerEmail: string | null; - version: string; - providesTarball: boolean; - name: string | null; - shortName: string | null; - /** - * Format: url - * @example https://misskey.example.com - */ - uri: string; - description: string | null; - langs: string[]; - tosUrl: string | null; - /** @default https://github.com/misskey-dev/misskey */ - repositoryUrl: string | null; - /** @default https://github.com/misskey-dev/misskey/issues/new */ - feedbackUrl: string | null; - defaultDarkTheme: string | null; - defaultLightTheme: string | null; - disableRegistration: boolean; - emailRequiredForSignup: boolean; - enableHcaptcha: boolean; - hcaptchaSiteKey: string | null; - enableMcaptcha: boolean; - mcaptchaSiteKey: string | null; - mcaptchaInstanceUrl: string | null; - enableRecaptcha: boolean; - recaptchaSiteKey: string | null; - enableTurnstile: boolean; - turnstileSiteKey: string | null; - enableTestcaptcha: boolean; - googleAnalyticsMeasurementId: string | null; - swPublickey: string | null; - /** @default /assets/ai.png */ - mascotImageUrl: string; - bannerUrl: string | null; - serverErrorImageUrl: string | null; - infoImageUrl: string | null; - notFoundImageUrl: string | null; - iconUrl: string | null; - maxNoteTextLength: number; - ads: { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: url */ - url: string; - place: string; - ratio: number; - /** Format: url */ - imageUrl: string; - dayOfWeek: number; - }[]; - /** @default 0 */ - notesPerOneAd: number; - enableEmail: boolean; - enableServiceWorker: boolean; - translatorAvailable: boolean; - sentryForFrontend: ({ - options: { - dsn: string; - [key: string]: unknown; - }; - vueIntegration?: { - [key: string]: unknown; - } | null; - browserTracingIntegration?: { - [key: string]: unknown; - } | null; - replayIntegration?: { - [key: string]: unknown; - } | null; - }) | null; - mediaProxy: string; - enableUrlPreview: boolean; - backgroundImageUrl: string | null; - impressumUrl: string | null; - logoImageUrl: string | null; - privacyPolicyUrl: string | null; - inquiryUrl: string | null; - serverRules: string[]; - themeColor: string | null; - policies: components['schemas']['RolePolicies']; - /** - * @default local - * @enum {string} - */ - noteSearchableScope: 'local' | 'global'; - maxFileSize: number; - /** @enum {string} */ - federation: 'all' | 'specified' | 'none'; + '/admin/federation/update-instance': { + /** + * admin/federation/update-instance + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:federation* + */ + post: operations['admin___federation___update-instance']; }; - MetaDetailedOnly: { - features?: { - registration: boolean; - emailRequiredForSignup: boolean; - localTimeline: boolean; - globalTimeline: boolean; - hcaptcha: boolean; - turnstile: boolean; - recaptcha: boolean; - objectStorage: boolean; - serviceWorker: boolean; - /** @default true */ - miauth?: boolean; - }; - proxyAccountName: string | null; - /** @example false */ - requireSetup: boolean; - cacheRemoteFiles: boolean; - cacheRemoteSensitiveFiles: boolean; + '/admin/forward-abuse-user-report': { + /** + * admin/forward-abuse-user-report + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* + */ + post: operations['admin___forward-abuse-user-report']; }; - MetaDetailed: components['schemas']['MetaLite'] & components['schemas']['MetaDetailedOnly']; - SystemWebhook: { - id: string; - isActive: boolean; - /** Format: date-time */ - updatedAt: string; - /** Format: date-time */ - latestSentAt: string | null; - latestStatus: number | null; - name: string; - on: ('abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged')[]; - url: string; - secret: string; + '/admin/get-index-stats': { + /** + * admin/get-index-stats + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:index-stats* + */ + post: operations['admin___get-index-stats']; }; - AbuseReportNotificationRecipient: { - id: string; - isActive: boolean; - /** Format: date-time */ - updatedAt: string; - name: string; - /** @enum {string} */ - method: 'email' | 'webhook'; - userId?: string; - user?: components['schemas']['UserLite']; - systemWebhookId?: string; - systemWebhook?: components['schemas']['SystemWebhook']; + '/admin/get-table-stats': { + /** + * admin/get-table-stats + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:table-stats* + */ + post: operations['admin___get-table-stats']; }; - ChatMessage: { - id: string; - /** Format: date-time */ - createdAt: string; - fromUserId: string; - fromUser: components['schemas']['UserLite']; - toUserId?: string | null; - toUser?: components['schemas']['UserLite'] | null; - toRoomId?: string | null; - toRoom?: components['schemas']['ChatRoom'] | null; - text?: string | null; - fileId?: string | null; - file?: components['schemas']['DriveFile'] | null; - isRead?: boolean; - reactions: { - reaction: string; - user: components['schemas']['UserLite']; - }[]; + '/admin/get-user-ips': { + /** + * admin/get-user-ips + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:user-ips* + */ + post: operations['admin___get-user-ips']; }; - ChatMessageLite: { - id: string; - /** Format: date-time */ - createdAt: string; - fromUserId: string; - fromUser?: components['schemas']['UserLite']; - toUserId?: string | null; - toRoomId?: string | null; - text?: string | null; - fileId?: string | null; - file?: components['schemas']['DriveFile'] | null; - reactions: ({ - reaction: string; - user?: components['schemas']['UserLite'] | null; - })[]; + '/admin/invite/create': { + /** + * admin/invite/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:invite-codes* + */ + post: operations['admin___invite___create']; }; - ChatMessageLiteFor1on1: { - id: string; - /** Format: date-time */ - createdAt: string; - fromUserId: string; - toUserId: string; - text?: string | null; - fileId?: string | null; - file?: components['schemas']['DriveFile'] | null; - reactions: { - reaction: string; - }[]; + '/admin/invite/list': { + /** + * admin/invite/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:invite-codes* + */ + post: operations['admin___invite___list']; }; - ChatMessageLiteForRoom: { - id: string; - /** Format: date-time */ - createdAt: string; - fromUserId: string; - fromUser: components['schemas']['UserLite']; - toRoomId: string; - text?: string | null; - fileId?: string | null; - file?: components['schemas']['DriveFile'] | null; - reactions: { - reaction: string; - user: components['schemas']['UserLite']; - }[]; + '/admin/meta': { + /** + * admin/meta + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:meta* + */ + post: operations['admin___meta']; }; - ChatRoom: { - id: string; - /** Format: date-time */ - createdAt: string; - ownerId: string; - owner: components['schemas']['UserLite']; - name: string; - description: string; - isMuted?: boolean; - invitationExists?: boolean; + '/admin/promo/create': { + /** + * admin/promo/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:promo* + */ + post: operations['admin___promo___create']; }; - ChatRoomInvitation: { - id: string; - /** Format: date-time */ - createdAt: string; - userId: string; - user: components['schemas']['UserLite']; - roomId: string; - room: components['schemas']['ChatRoom']; + '/admin/queue/clear': { + /** + * admin/queue/clear + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:queue* + */ + post: operations['admin___queue___clear']; }; - ChatRoomMembership: { - id: string; - /** Format: date-time */ - createdAt: string; - userId: string; - user?: components['schemas']['UserLite']; - roomId: string; - room?: components['schemas']['ChatRoom']; + '/admin/queue/deliver-delayed': { + /** + * admin/queue/deliver-delayed + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:queue* + */ + post: operations['admin___queue___deliver-delayed']; }; - }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; -}; - -export type $defs = Record<string, never>; - -export type external = Record<string, never>; - -export type operations = { - - /** - * admin/abuse-report/notification-recipient/create - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* - */ - 'admin___abuse-report___notification-recipient___create': { - requestBody: { - content: { - 'application/json': { - isActive: boolean; - name: string; - /** @enum {string} */ - method: 'email' | 'webhook'; - /** Format: misskey:id */ - userId?: string; - /** Format: misskey:id */ - systemWebhookId?: string; - }; - }; + '/admin/queue/inbox-delayed': { + /** + * admin/queue/inbox-delayed + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:queue* + */ + post: operations['admin___queue___inbox-delayed']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['AbuseReportNotificationRecipient']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/queue/jobs': { + /** + * admin/queue/jobs + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:queue* + */ + post: operations['admin___queue___jobs']; }; - }; - /** - * admin/abuse-report/notification-recipient/delete - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* - */ - 'admin___abuse-report___notification-recipient___delete': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - }; - }; + '/admin/queue/promote-jobs': { + /** + * admin/queue/promote-jobs + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:queue* + */ + post: operations['admin___queue___promote-jobs']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/queue/queue-stats': { + /** + * admin/queue/queue-stats + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:queue* + */ + post: operations['admin___queue___queue-stats']; }; - }; - /** - * admin/abuse-report/notification-recipient/list - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-report:notification-recipient* - */ - 'admin___abuse-report___notification-recipient___list': { - requestBody: { - content: { - 'application/json': { - method?: ('email' | 'webhook')[]; - }; - }; + '/admin/queue/queues': { + /** + * admin/queue/queues + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:queue* + */ + post: operations['admin___queue___queues']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['AbuseReportNotificationRecipient'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/queue/remove-job': { + /** + * admin/queue/remove-job + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:queue* + */ + post: operations['admin___queue___remove-job']; }; - }; - /** - * admin/abuse-report/notification-recipient/show - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-report:notification-recipient* - */ - 'admin___abuse-report___notification-recipient___show': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - }; - }; + '/admin/queue/retry-job': { + /** + * admin/queue/retry-job + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:queue* + */ + post: operations['admin___queue___retry-job']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['AbuseReportNotificationRecipient']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/queue/show-job': { + /** + * admin/queue/show-job + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:queue* + */ + post: operations['admin___queue___show-job']; }; - }; - /** - * admin/abuse-report/notification-recipient/update - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:abuse-report:notification-recipient* - */ - 'admin___abuse-report___notification-recipient___update': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - isActive: boolean; - name: string; - /** @enum {string} */ - method: 'email' | 'webhook'; - /** Format: misskey:id */ - userId?: string; - /** Format: misskey:id */ - systemWebhookId?: string; - }; - }; + '/admin/queue/stats': { + /** + * admin/queue/stats + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* + */ + post: operations['admin___queue___stats']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['AbuseReportNotificationRecipient']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/relays/add': { + /** + * admin/relays/add + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:relays* + */ + post: operations['admin___relays___add']; }; - }; - /** - * admin/abuse-user-reports - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:abuse-user-reports* - */ - 'admin___abuse-user-reports': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default null */ - state?: string | null; - /** - * @default combined - * @enum {string} - */ - reporterOrigin?: 'combined' | 'local' | 'remote'; - /** - * @default combined - * @enum {string} - */ - targetUserOrigin?: 'combined' | 'local' | 'remote'; - }; - }; + '/admin/relays/list': { + /** + * admin/relays/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:relays* + */ + post: operations['admin___relays___list']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - comment: string; - /** @example false */ - resolved: boolean; - /** Format: id */ - reporterId: string; - /** Format: id */ - targetUserId: string; - /** Format: id */ - assigneeId: string | null; - reporter: components['schemas']['UserDetailedNotMe']; - targetUser: components['schemas']['UserDetailedNotMe']; - assignee: components['schemas']['UserDetailedNotMe'] | null; - forwarded: boolean; - /** @enum {string|null} */ - resolvedAs: 'accept' | 'reject' | null; - moderationNote: string; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/relays/remove': { + /** + * admin/relays/remove + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:relays* + */ + post: operations['admin___relays___remove']; }; - }; - /** - * admin/accounts/create - * @description No description provided. - * - * **Credential required**: *No* - */ - admin___accounts___create: { - requestBody: { - content: { - 'application/json': { - username: string; - password: string; - setupPassword?: string | null; - }; - }; + '/admin/reset-password': { + /** + * admin/reset-password + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:reset-password* + */ + post: operations['admin___reset-password']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['MeDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/resolve-abuse-user-report': { + /** + * admin/resolve-abuse-user-report + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* + */ + post: operations['admin___resolve-abuse-user-report']; }; - }; - /** - * admin/accounts/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:account* - */ - admin___accounts___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/admin/roles/assign': { + /** + * admin/roles/assign + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:roles* + */ + post: operations['admin___roles___assign']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/roles/create': { + /** + * admin/roles/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:roles* + */ + post: operations['admin___roles___create']; }; - }; - /** - * admin/accounts/find-by-email - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:account* - */ - 'admin___accounts___find-by-email': { - requestBody: { - content: { - 'application/json': { - email: string; - }; - }; + '/admin/roles/delete': { + /** + * admin/roles/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:roles* + */ + post: operations['admin___roles___delete']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailedNotMe']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/roles/list': { + /** + * admin/roles/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:roles* + */ + post: operations['admin___roles___list']; }; - }; - /** - * admin/ad/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:ad* - */ - admin___ad___create: { - requestBody: { - content: { - 'application/json': { - url: string; - memo: string; - place: string; - priority: string; - ratio: number; - expiresAt: number; - startsAt: number; - imageUrl: string; - dayOfWeek: number; - }; - }; + '/admin/roles/show': { + /** + * admin/roles/show + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:roles* + */ + post: operations['admin___roles___show']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Ad']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/roles/unassign': { + /** + * admin/roles/unassign + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:roles* + */ + post: operations['admin___roles___unassign']; }; - }; - /** - * admin/ad/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:ad* - */ - admin___ad___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - }; - }; + '/admin/roles/update': { + /** + * admin/roles/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:roles* + */ + post: operations['admin___roles___update']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/roles/update-default-policies': { + /** + * admin/roles/update-default-policies + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:roles* + */ + post: operations['admin___roles___update-default-policies']; }; - }; - /** - * admin/ad/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:ad* - */ - admin___ad___list: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default null */ - publishing?: boolean | null; - }; - }; + '/admin/roles/users': { + /** + * admin/roles/users + * @description No description provided. + * + * **Credential required**: *No* / **Permission**: *read:admin:roles* + */ + post: operations['admin___roles___users']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Ad'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/send-email': { + /** + * admin/send-email + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:send-email* + */ + post: operations['admin___send-email']; }; - }; - /** - * admin/ad/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:ad* - */ - admin___ad___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - memo?: string; - url?: string; - imageUrl?: string; - place?: string; - priority?: string; - ratio?: number; - expiresAt?: number; - startsAt?: number; - dayOfWeek?: number; - }; - }; + '/admin/server-info': { + /** + * admin/server-info + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:server-info* + */ + post: operations['admin___server-info']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/show-moderation-logs': { + /** + * admin/show-moderation-logs + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:show-moderation-log* + */ + post: operations['admin___show-moderation-logs']; }; - }; - /** - * admin/announcements/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* - */ - admin___announcements___create: { - requestBody: { - content: { - 'application/json': { - title: string; - text: string; - imageUrl: string | null; - /** - * @default info - * @enum {string} - */ - icon?: 'info' | 'warning' | 'error' | 'success'; - /** - * @default normal - * @enum {string} - */ - display?: 'normal' | 'banner' | 'dialog'; - /** @default false */ - forExistingUsers?: boolean; - /** @default false */ - silence?: boolean; - /** @default false */ - needConfirmationToRead?: boolean; - /** - * Format: misskey:id - * @default null - */ - userId?: string | null; - }; - }; + '/admin/show-user': { + /** + * admin/show-user + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:show-user* + */ + post: operations['admin___show-user']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string | null; - title: string; - text: string; - imageUrl: string | null; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/show-users': { + /** + * admin/show-users + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:show-user* + */ + post: operations['admin___show-users']; }; - }; - /** - * admin/announcements/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* - */ - admin___announcements___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - }; - }; + '/admin/suspend-user': { + /** + * admin/suspend-user + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:suspend-user* + */ + post: operations['admin___suspend-user']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/system-webhook/create': { + /** + * admin/system-webhook/create + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* + */ + post: operations['admin___system-webhook___create']; }; - }; - /** - * admin/announcements/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:announcements* - */ - admin___announcements___list: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** Format: misskey:id */ - userId?: string | null; - /** - * @default active - * @enum {string} - */ - status?: 'all' | 'active' | 'archived'; - }; - }; + '/admin/system-webhook/delete': { + /** + * admin/system-webhook/delete + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* + */ + post: operations['admin___system-webhook___delete']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string | null; - text: string; - title: string; - imageUrl: string | null; - reads: number; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/system-webhook/list': { + /** + * admin/system-webhook/list + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* + */ + post: operations['admin___system-webhook___list']; }; - }; - /** - * admin/announcements/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:announcements* - */ - admin___announcements___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - title?: string; - text?: string; - imageUrl?: string | null; - /** @enum {string} */ - icon?: 'info' | 'warning' | 'error' | 'success'; - /** @enum {string} */ - display?: 'normal' | 'banner' | 'dialog'; - forExistingUsers?: boolean; - silence?: boolean; - needConfirmationToRead?: boolean; - isActive?: boolean; - }; - }; + '/admin/system-webhook/show': { + /** + * admin/system-webhook/show + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* + */ + post: operations['admin___system-webhook___show']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/system-webhook/test': { + /** + * admin/system-webhook/test + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *read:admin:system-webhook* + */ + post: operations['admin___system-webhook___test']; }; - }; - /** - * admin/avatar-decorations/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* - */ - 'admin___avatar-decorations___create': { - requestBody: { - content: { - 'application/json': { - name: string; - description: string; - url: string; - roleIdsThatCanBeUsedThisDecoration?: string[]; - }; - }; + '/admin/system-webhook/update': { + /** + * admin/system-webhook/update + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* + */ + post: operations['admin___system-webhook___update']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string | null; - name: string; - description: string; - url: string; - roleIdsThatCanBeUsedThisDecoration: string[]; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/unset-user-avatar': { + /** + * admin/unset-user-avatar + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:unset-user-avatar* + */ + post: operations['admin___unset-user-avatar']; }; - }; - /** - * admin/avatar-decorations/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* - */ - 'admin___avatar-decorations___delete': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - }; - }; + '/admin/unset-user-banner': { + /** + * admin/unset-user-banner + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:unset-user-banner* + */ + post: operations['admin___unset-user-banner']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/unsuspend-user': { + /** + * admin/unsuspend-user + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:unsuspend-user* + */ + post: operations['admin___unsuspend-user']; }; - }; - /** - * admin/avatar-decorations/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:avatar-decorations* - */ - 'admin___avatar-decorations___list': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** Format: misskey:id */ - userId?: string | null; - }; - }; + '/admin/update-abuse-user-report': { + /** + * admin/update-abuse-user-report + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* + */ + post: operations['admin___update-abuse-user-report']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string | null; - name: string; - description: string; - url: string; - roleIdsThatCanBeUsedThisDecoration: string[]; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/update-meta': { + /** + * admin/update-meta + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:meta* + */ + post: operations['admin___update-meta']; }; - }; - /** - * admin/avatar-decorations/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:avatar-decorations* - */ - 'admin___avatar-decorations___update': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - name?: string; - description?: string; - url?: string; - roleIdsThatCanBeUsedThisDecoration?: string[]; - }; - }; + '/admin/update-proxy-account': { + /** + * admin/update-proxy-account + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:account* + */ + post: operations['admin___update-proxy-account']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/admin/update-user-note': { + /** + * admin/update-user-note + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:admin:user-note* + */ + post: operations['admin___update-user-note']; }; - }; - /** - * admin/captcha/current - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:meta* - */ - admin___captcha___current: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** @enum {string} */ - provider: 'none' | 'hcaptcha' | 'mcaptcha' | 'recaptcha' | 'turnstile' | 'testcaptcha'; - hcaptcha: { - siteKey: string | null; - secretKey: string | null; - }; - mcaptcha: { - siteKey: string | null; - secretKey: string | null; - instanceUrl: string | null; - }; - recaptcha: { - siteKey: string | null; - secretKey: string | null; - }; - turnstile: { - siteKey: string | null; - secretKey: string | null; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/announcements': { + /** + * announcements + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['announcements']; }; - }; - /** - * admin/captcha/save - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:meta* - */ - admin___captcha___save: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - provider: 'none' | 'hcaptcha' | 'mcaptcha' | 'recaptcha' | 'turnstile' | 'testcaptcha'; - captchaResult?: string | null; - sitekey?: string | null; - secret?: string | null; - instanceUrl?: string | null; - }; - }; + '/announcements/show': { + /** + * announcements/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['announcements___show']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/antennas/create': { + /** + * antennas/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['antennas___create']; }; - }; - /** - * admin/delete-account - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:delete-account* - */ - 'admin___delete-account': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/antennas/delete': { + /** + * antennas/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['antennas___delete']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/antennas/list': { + /** + * antennas/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['antennas___list']; }; - }; - /** - * admin/delete-all-files-of-a-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:delete-all-files-of-a-user* - */ - 'admin___delete-all-files-of-a-user': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/antennas/notes': { + /** + * antennas/notes + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['antennas___notes']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/antennas/show': { + /** + * antennas/show + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['antennas___show']; }; - }; - /** - * admin/drive/clean-remote-files - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:drive* - */ - 'admin___drive___clean-remote-files': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/antennas/update': { + /** + * antennas/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['antennas___update']; }; - }; - /** - * admin/drive/cleanup - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:drive* - */ - admin___drive___cleanup: { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/ap/get': { + /** + * ap/get + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:federation* + */ + post: operations['ap___get']; }; - }; - /** - * admin/drive/files - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:drive* - */ - admin___drive___files: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** Format: misskey:id */ - userId?: string | null; - type?: string | null; - /** - * @default local - * @enum {string} - */ - origin?: 'combined' | 'local' | 'remote'; - /** - * @description The local host is represented with `null`. - * @default null - */ - hostname?: string | null; - }; - }; + '/ap/show': { + /** + * ap/show + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['ap___show']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFile'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/app/create': { + /** + * app/create + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['app___create']; }; - }; - /** - * admin/drive/show-file - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:drive* - */ - 'admin___drive___show-file': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; - } | { - url: string; - }; - }; + '/app/show': { + /** + * app/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['app___show']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - /** Format: date-time */ - createdAt: string; - /** - * Format: id - * @example xxxxxxxxxx - */ - userId: string | null; - /** @description The local host is represented with `null`. */ - userHost: string | null; - /** - * Format: md5 - * @example 15eca7fba0480996e2245f5185bf39f2 - */ - md5: string; - /** @example 192.jpg */ - name: string; - /** @example image/jpeg */ - type: string; - /** @example 51469 */ - size: number; - comment: string | null; - blurhash: string | null; - properties: { - width?: number; - height?: number; - orientation?: number; - avgColor?: string; - }; - /** @example true */ - storedInternal: boolean | null; - /** Format: url */ - url: string | null; - /** Format: url */ - thumbnailUrl: string | null; - /** Format: url */ - webpublicUrl: string | null; - accessKey: string | null; - thumbnailAccessKey: string | null; - webpublicAccessKey: string | null; - uri: string | null; - src: string | null; - /** - * Format: id - * @example xxxxxxxxxx - */ - folderId: string | null; - isSensitive: boolean; - isLink: boolean; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/auth/accept': { + /** + * auth/accept + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['auth___accept']; }; - }; - /** - * admin/emoji/add - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - admin___emoji___add: { - requestBody: { - content: { - 'application/json': { - name: string; - /** Format: misskey:id */ - fileId: string; - /** @description Use `null` to reset the category. */ - category?: string | null; - aliases?: string[]; - license?: string | null; - isSensitive?: boolean; - localOnly?: boolean; - roleIdsThatCanBeUsedThisEmojiAsReaction?: string[]; - }; - }; + '/auth/session/generate': { + /** + * auth/session/generate + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['auth___session___generate']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['EmojiDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/auth/session/show': { + /** + * auth/session/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['auth___session___show']; }; - }; - /** - * admin/emoji/add-aliases-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - 'admin___emoji___add-aliases-bulk': { - requestBody: { - content: { - 'application/json': { - ids: string[]; - aliases: string[]; - }; - }; + '/auth/session/userkey': { + /** + * auth/session/userkey + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['auth___session___userkey']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/blocking/create': { + /** + * blocking/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:blocks* + */ + post: operations['blocking___create']; }; - }; - /** - * admin/emoji/copy - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - admin___emoji___copy: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - emojiId: string; - }; - }; + '/blocking/delete': { + /** + * blocking/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:blocks* + */ + post: operations['blocking___delete']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/blocking/list': { + /** + * blocking/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:blocks* + */ + post: operations['blocking___list']; }; - }; - /** - * admin/emoji/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - admin___emoji___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - }; - }; + '/bubble-game/ranking': { + /** + * bubble-game/ranking + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['bubble-game___ranking']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/bubble-game/register': { + /** + * bubble-game/register + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['bubble-game___register']; }; - }; - /** - * admin/emoji/delete-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - 'admin___emoji___delete-bulk': { - requestBody: { - content: { - 'application/json': { - ids: string[]; - }; - }; + '/channels/create': { + /** + * channels/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:channels* + */ + post: operations['channels___create']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/channels/favorite': { + /** + * channels/favorite + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:channels* + */ + post: operations['channels___favorite']; }; - }; - /** - * admin/emoji/import-zip - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'admin___emoji___import-zip': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; - }; - }; + '/channels/featured': { + /** + * channels/featured + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['channels___featured']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/channels/follow': { + /** + * channels/follow + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:channels* + */ + post: operations['channels___follow']; }; - }; - /** - * admin/emoji/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* - */ - admin___emoji___list: { - requestBody: { - content: { - 'application/json': { - /** @default null */ - query?: string | null; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/channels/followed': { + /** + * channels/followed + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:channels* + */ + post: operations['channels___followed']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** Format: id */ - id: string; - aliases: string[]; - name: string; - category: string | null; - /** @description The local host is represented with `null`. The field exists for compatibility with other API endpoints that return files. */ - host: string | null; - url: string; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/channels/my-favorites': { + /** + * channels/my-favorites + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:channels* + */ + post: operations['channels___my-favorites']; }; - }; - /** - * admin/emoji/list-remote - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* - */ - 'admin___emoji___list-remote': { - requestBody: { - content: { - 'application/json': { - /** @default null */ - query?: string | null; - /** - * @description Use `null` to represent the local host. - * @default null - */ - host?: string | null; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/channels/owned': { + /** + * channels/owned + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:channels* + */ + post: operations['channels___owned']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** Format: id */ - id: string; - aliases: string[]; - name: string; - category: string | null; - /** @description The local host is represented with `null`. */ - host: string | null; - url: string; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/channels/search': { + /** + * channels/search + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['channels___search']; }; - }; - /** - * admin/emoji/remove-aliases-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - 'admin___emoji___remove-aliases-bulk': { - requestBody: { - content: { - 'application/json': { - ids: string[]; - aliases: string[]; - }; - }; + '/channels/show': { + /** + * channels/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['channels___show']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/channels/timeline': { + /** + * channels/timeline + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['channels___timeline']; }; - }; - /** - * admin/emoji/set-aliases-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - 'admin___emoji___set-aliases-bulk': { - requestBody: { - content: { - 'application/json': { - ids: string[]; - aliases: string[]; - }; - }; + '/channels/unfavorite': { + /** + * channels/unfavorite + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:channels* + */ + post: operations['channels___unfavorite']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/channels/unfollow': { + /** + * channels/unfollow + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:channels* + */ + post: operations['channels___unfollow']; }; - }; - /** - * admin/emoji/set-category-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - 'admin___emoji___set-category-bulk': { - requestBody: { - content: { - 'application/json': { - ids: string[]; - /** @description Use `null` to reset the category. */ - category?: string | null; - }; - }; + '/channels/update': { + /** + * channels/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:channels* + */ + post: operations['channels___update']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/charts/active-users': { + /** + * charts/active-users + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___active-users']; }; - }; - /** - * admin/emoji/set-license-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - 'admin___emoji___set-license-bulk': { - requestBody: { - content: { - 'application/json': { - ids: string[]; - /** @description Use `null` to reset the license. */ - license?: string | null; - }; - }; + '/charts/ap-request': { + /** + * charts/ap-request + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___ap-request']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/charts/drive': { + /** + * charts/drive + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___drive']; }; - }; - /** - * admin/emoji/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:emoji* - */ - admin___emoji___update: { - requestBody: { - content: { - 'application/json': ({ - /** Format: misskey:id */ - id: string; - } | { - name: string; - }) & ({ - /** Format: misskey:id */ - fileId?: string; - /** @description Use `null` to reset the category. */ - category?: string | null; - aliases?: string[]; - license?: string | null; - isSensitive?: boolean; - localOnly?: boolean; - roleIdsThatCanBeUsedThisEmojiAsReaction?: string[]; - }); - }; + '/charts/federation': { + /** + * charts/federation + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___federation']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/charts/instance': { + /** + * charts/instance + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___instance']; }; - }; - /** - * admin/federation/delete-all-files - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:federation* - */ - 'admin___federation___delete-all-files': { - requestBody: { - content: { - 'application/json': { - host: string; - }; - }; + '/charts/notes': { + /** + * charts/notes + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___notes']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/charts/user/drive': { + /** + * charts/user/drive + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___user___drive']; }; - }; - /** - * admin/federation/refresh-remote-instance-metadata - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:federation* - */ - 'admin___federation___refresh-remote-instance-metadata': { - requestBody: { - content: { - 'application/json': { - host: string; - }; - }; + '/charts/user/following': { + /** + * charts/user/following + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___user___following']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/charts/user/notes': { + /** + * charts/user/notes + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___user___notes']; }; - }; - /** - * admin/federation/remove-all-following - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:federation* - */ - 'admin___federation___remove-all-following': { - requestBody: { - content: { - 'application/json': { - host: string; - }; - }; + '/charts/user/pv': { + /** + * charts/user/pv + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___user___pv']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/charts/user/reactions': { + /** + * charts/user/reactions + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___user___reactions']; }; - }; - /** - * admin/federation/update-instance - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:federation* - */ - 'admin___federation___update-instance': { - requestBody: { - content: { - 'application/json': { - host: string; - isSuspended?: boolean; - moderationNote?: string; - }; - }; + '/charts/users': { + /** + * charts/users + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['charts___users']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/history': { + /** + * chat/history + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___history']; }; - }; - /** - * admin/forward-abuse-user-report - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* - */ - 'admin___forward-abuse-user-report': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - reportId: string; - }; - }; + '/chat/messages/create-to-room': { + /** + * chat/messages/create-to-room + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___messages___create-to-room']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/messages/create-to-user': { + /** + * chat/messages/create-to-user + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___messages___create-to-user']; }; - }; - /** - * admin/get-index-stats - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:index-stats* - */ - 'admin___get-index-stats': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - tablename: string; - indexname: string; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/messages/delete': { + /** + * chat/messages/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___messages___delete']; }; - }; - /** - * admin/get-table-stats - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:table-stats* - */ - 'admin___get-table-stats': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - [key: string]: { - count: number; - size: number; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/messages/react': { + /** + * chat/messages/react + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___messages___react']; }; - }; - /** - * admin/get-user-ips - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:user-ips* - */ - 'admin___get-user-ips': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/chat/messages/room-timeline': { + /** + * chat/messages/room-timeline + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___messages___room-timeline']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - ip: string; - /** Format: date-time */ - createdAt: string; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/messages/search': { + /** + * chat/messages/search + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___messages___search']; }; - }; - /** - * admin/invite/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:invite-codes* - */ - admin___invite___create: { - requestBody: { - content: { - 'application/json': { - /** @default 1 */ - count?: number; - expiresAt?: string | null; - }; - }; + '/chat/messages/show': { + /** + * chat/messages/show + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___messages___show']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['InviteCode'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/messages/unreact': { + /** + * chat/messages/unreact + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___messages___unreact']; }; - }; - /** - * admin/invite/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:invite-codes* - */ - admin___invite___list: { - requestBody: { - content: { - 'application/json': { - /** @default 30 */ - limit?: number; - /** @default 0 */ - offset?: number; - /** - * @default all - * @enum {string} - */ - type?: 'unused' | 'used' | 'expired' | 'all'; - /** @enum {string} */ - sort?: '+createdAt' | '-createdAt' | '+usedAt' | '-usedAt'; - }; - }; + '/chat/messages/user-timeline': { + /** + * chat/messages/user-timeline + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___messages___user-timeline']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['InviteCode'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/read-all': { + /** + * chat/read-all + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___read-all']; }; - }; - /** - * admin/meta - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:meta* - */ - admin___meta: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - cacheRemoteFiles: boolean; - cacheRemoteSensitiveFiles: boolean; - emailRequiredForSignup: boolean; - enableHcaptcha: boolean; - hcaptchaSiteKey: string | null; - enableMcaptcha: boolean; - mcaptchaSiteKey: string | null; - mcaptchaInstanceUrl: string | null; - enableRecaptcha: boolean; - recaptchaSiteKey: string | null; - enableTurnstile: boolean; - turnstileSiteKey: string | null; - enableTestcaptcha: boolean; - googleAnalyticsMeasurementId: string | null; - swPublickey: string | null; - /** @default /assets/ai.png */ - mascotImageUrl: string | null; - bannerUrl: string | null; - serverErrorImageUrl: string | null; - infoImageUrl: string | null; - notFoundImageUrl: string | null; - iconUrl: string | null; - app192IconUrl: string | null; - app512IconUrl: string | null; - enableEmail: boolean; - enableServiceWorker: boolean; - translatorAvailable: boolean; - silencedHosts?: string[]; - mediaSilencedHosts: string[]; - pinnedUsers: string[]; - hiddenTags: string[]; - blockedHosts: string[]; - sensitiveWords: string[]; - prohibitedWords: string[]; - prohibitedWordsForNameOfUser: string[]; - bannedEmailDomains?: string[]; - preservedUsernames: string[]; - hcaptchaSecretKey: string | null; - mcaptchaSecretKey: string | null; - recaptchaSecretKey: string | null; - turnstileSecretKey: string | null; - sensitiveMediaDetection: string; - sensitiveMediaDetectionSensitivity: string; - setSensitiveFlagAutomatically: boolean; - enableSensitiveMediaDetectionForVideos: boolean; - /** Format: id */ - proxyAccountId: string; - email: string | null; - smtpSecure: boolean; - smtpHost: string | null; - smtpPort: number | null; - smtpUser: string | null; - smtpPass: string | null; - swPrivateKey: string | null; - useObjectStorage: boolean; - objectStorageBaseUrl: string | null; - objectStorageBucket: string | null; - objectStoragePrefix: string | null; - objectStorageEndpoint: string | null; - objectStorageRegion: string | null; - objectStoragePort: number | null; - objectStorageAccessKey: string | null; - objectStorageSecretKey: string | null; - objectStorageUseSSL: boolean; - objectStorageUseProxy: boolean; - objectStorageSetPublicRead: boolean; - enableIpLogging: boolean; - enableActiveEmailValidation: boolean; - enableVerifymailApi: boolean; - verifymailAuthKey: string | null; - enableTruemailApi: boolean; - truemailInstance: string | null; - truemailAuthKey: string | null; - enableChartsForRemoteUser: boolean; - enableChartsForFederatedInstances: boolean; - enableStatsForFederatedInstances: boolean; - enableServerMachineStats: boolean; - enableIdenticonGeneration: boolean; - manifestJsonOverride: string; - policies: Record<string, never>; - enableFanoutTimeline: boolean; - enableFanoutTimelineDbFallback: boolean; - perLocalUserUserTimelineCacheMax: number; - perRemoteUserUserTimelineCacheMax: number; - perUserHomeTimelineCacheMax: number; - perUserListTimelineCacheMax: number; - enableReactionsBuffering: boolean; - notesPerOneAd: number; - backgroundImageUrl: string | null; - deeplAuthKey: string | null; - deeplIsPro: boolean; - defaultDarkTheme: string | null; - defaultLightTheme: string | null; - description: string | null; - disableRegistration: boolean; - impressumUrl: string | null; - maintainerEmail: string | null; - maintainerName: string | null; - name: string | null; - shortName: string | null; - objectStorageS3ForcePathStyle: boolean; - privacyPolicyUrl: string | null; - inquiryUrl: string | null; - repositoryUrl: string | null; - /** - * @deprecated - * @description [Deprecated] Use "urlPreviewSummaryProxyUrl" instead. - */ - summalyProxy: string | null; - themeColor: string | null; - tosUrl: string | null; - uri: string; - version: string; - urlPreviewEnabled: boolean; - urlPreviewAllowRedirect: boolean; - urlPreviewTimeout: number; - urlPreviewMaximumContentLength: number; - urlPreviewRequireContentLength: boolean; - urlPreviewUserAgent: string | null; - urlPreviewSummaryProxyUrl: string | null; - /** @enum {string} */ - federation: 'all' | 'specified' | 'none'; - federationHosts: string[]; - deliverSuspendedSoftware: { - software: string; - versionRange: string; - }[]; - singleUserMode: boolean; - /** @enum {string} */ - ugcVisibilityForVisitor: 'all' | 'local' | 'none'; - proxyRemoteFiles: boolean; - signToActivityPubGet: boolean; - allowExternalApRedirect: boolean; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/create': { + /** + * chat/rooms/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___create']; }; - }; - /** - * admin/promo/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:promo* - */ - admin___promo___create: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - expiresAt: number; - }; - }; + '/chat/rooms/delete': { + /** + * chat/rooms/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___delete']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/invitations/create': { + /** + * chat/rooms/invitations/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___invitations___create']; }; - }; - /** - * admin/queue/clear - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:queue* - */ - admin___queue___clear: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - /** @enum {string} */ - state: '*' | 'completed' | 'wait' | 'active' | 'paused' | 'prioritized' | 'delayed' | 'failed'; - }; - }; + '/chat/rooms/invitations/ignore': { + /** + * chat/rooms/invitations/ignore + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___invitations___ignore']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/invitations/inbox': { + /** + * chat/rooms/invitations/inbox + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___rooms___invitations___inbox']; }; - }; - /** - * admin/queue/deliver-delayed - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - 'admin___queue___deliver-delayed': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': [string, number][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/invitations/outbox': { + /** + * chat/rooms/invitations/outbox + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___rooms___invitations___outbox']; }; - }; - /** - * admin/queue/inbox-delayed - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - 'admin___queue___inbox-delayed': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': [string, number][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/join': { + /** + * chat/rooms/join + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___join']; }; - }; - /** - * admin/queue/jobs - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - admin___queue___jobs: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - state: ('active' | 'wait' | 'delayed' | 'completed' | 'failed' | 'paused')[]; - search?: string; - }; - }; + '/chat/rooms/joining': { + /** + * chat/rooms/joining + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___rooms___joining']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['QueueJob'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/leave': { + /** + * chat/rooms/leave + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___leave']; }; - }; - /** - * admin/queue/promote-jobs - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:queue* - */ - 'admin___queue___promote-jobs': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - }; - }; + '/chat/rooms/members': { + /** + * chat/rooms/members + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___members']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/mute': { + /** + * chat/rooms/mute + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___mute']; }; - }; - /** - * admin/queue/queue-stats - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - 'admin___queue___queue-stats': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - }; - }; + '/chat/rooms/owned': { + /** + * chat/rooms/owned + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___rooms___owned']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** @enum {string} */ - name: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - qualifiedName: string; - counts: { - [key: string]: number; - }; - isPaused: boolean; - metrics: { - completed: components['schemas']['QueueMetrics']; - failed: components['schemas']['QueueMetrics']; - }; - db: { - version: string; - /** @enum {string} */ - mode: 'cluster' | 'standalone' | 'sentinel'; - runId: string; - processId: string; - port: number; - os: string; - uptime: number; - memory: { - total: number; - used: number; - fragmentationRatio: number; - peak: number; - }; - clients: { - blocked: number; - connected: number; - }; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/show': { + /** + * chat/rooms/show + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:chat* + */ + post: operations['chat___rooms___show']; }; - }; - /** - * admin/queue/queues - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - admin___queue___queues: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** @enum {string} */ - name: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - counts: { - [key: string]: number; - }; - isPaused: boolean; - metrics: { - completed: components['schemas']['QueueMetrics']; - failed: components['schemas']['QueueMetrics']; - }; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/chat/rooms/update': { + /** + * chat/rooms/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:chat* + */ + post: operations['chat___rooms___update']; }; - }; - /** - * admin/queue/remove-job - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:queue* - */ - 'admin___queue___remove-job': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - jobId: string; - }; - }; + '/clips/add-note': { + /** + * clips/add-note + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['clips___add-note']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/clips/create': { + /** + * clips/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['clips___create']; }; - }; - /** - * admin/queue/retry-job - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:queue* - */ - 'admin___queue___retry-job': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - jobId: string; - }; - }; + '/clips/delete': { + /** + * clips/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['clips___delete']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/clips/favorite': { + /** + * clips/favorite + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:clip-favorite* + */ + post: operations['clips___favorite']; }; - }; - /** - * admin/queue/show-job - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:queue* - */ - 'admin___queue___show-job': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; - jobId: string; - }; - }; + '/clips/list': { + /** + * clips/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['clips___list']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['QueueJob']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/clips/my-favorites': { + /** + * clips/my-favorites + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:clip-favorite* + */ + post: operations['clips___my-favorites']; }; - }; - /** - * admin/queue/stats - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* - */ - admin___queue___stats: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - deliver: components['schemas']['QueueCount']; - inbox: components['schemas']['QueueCount']; - db: components['schemas']['QueueCount']; - objectStorage: components['schemas']['QueueCount']; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/clips/notes': { + /** + * clips/notes + * @description No description provided. + * + * **Credential required**: *No* / **Permission**: *read:account* + */ + post: operations['clips___notes']; }; - }; - /** - * admin/relays/add - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:relays* - */ - admin___relays___add: { - requestBody: { - content: { - 'application/json': { - inbox: string; - }; - }; + '/clips/remove-note': { + /** + * clips/remove-note + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['clips___remove-note']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - /** Format: url */ - inbox: string; - /** - * @default requesting - * @enum {string} - */ - status: 'requesting' | 'accepted' | 'rejected'; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/clips/show': { + /** + * clips/show + * @description No description provided. + * + * **Credential required**: *No* / **Permission**: *read:account* + */ + post: operations['clips___show']; }; - }; - /** - * admin/relays/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:relays* - */ - admin___relays___list: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** Format: id */ - id: string; - /** Format: url */ - inbox: string; - /** - * @default requesting - * @enum {string} - */ - status: 'requesting' | 'accepted' | 'rejected'; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/clips/unfavorite': { + /** + * clips/unfavorite + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:clip-favorite* + */ + post: operations['clips___unfavorite']; }; - }; - /** - * admin/relays/remove - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:relays* - */ - admin___relays___remove: { - requestBody: { - content: { - 'application/json': { - inbox: string; - }; - }; + '/clips/update': { + /** + * clips/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['clips___update']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive': { + /** + * drive + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive']; }; - }; - /** - * admin/reset-password - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:reset-password* - */ - 'admin___reset-password': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/drive/files': { + /** + * drive/files + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___files']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - password: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/files/attached-notes': { + /** + * drive/files/attached-notes + * @description Find the notes to which the given file is attached. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___files___attached-notes']; }; - }; - /** - * admin/resolve-abuse-user-report - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* - */ - 'admin___resolve-abuse-user-report': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - reportId: string; - /** @enum {string|null} */ - resolvedAs?: 'accept' | 'reject' | null; - }; - }; + '/drive/files/check-existence': { + /** + * drive/files/check-existence + * @description Check if a given file exists. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___files___check-existence']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/files/create': { + /** + * drive/files/create + * @description Upload a new drive file. + * + * **Credential required**: *Yes* / **Permission**: *write:drive* + */ + post: operations['drive___files___create']; }; - }; - /** - * admin/roles/assign - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - admin___roles___assign: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; - /** Format: misskey:id */ - userId: string; - expiresAt?: number | null; - }; - }; + '/drive/files/delete': { + /** + * drive/files/delete + * @description Delete an existing drive file. + * + * **Credential required**: *Yes* / **Permission**: *write:drive* + */ + post: operations['drive___files___delete']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/files/find': { + /** + * drive/files/find + * @description Search for a drive file by the given parameters. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___files___find']; }; - }; - /** - * admin/roles/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - admin___roles___create: { - requestBody: { - content: { - 'application/json': { - name: string; - description: string; - color: string | null; - iconUrl: string | null; - /** @enum {string} */ - target: 'manual' | 'conditional'; - condFormula: Record<string, never>; - isPublic: boolean; - isModerator: boolean; - isAdministrator: boolean; - /** @default false */ - isExplorable?: boolean; - asBadge: boolean; - preserveAssignmentOnMoveAccount?: boolean; - canEditMembersByModerator: boolean; - displayOrder: number; - policies: Record<string, never>; - }; - }; + '/drive/files/find-by-hash': { + /** + * drive/files/find-by-hash + * @description Search for a drive file by a hash of the contents. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___files___find-by-hash']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Role']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/files/move-bulk': { + /** + * drive/files/move-bulk + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:drive* + */ + post: operations['drive___files___move-bulk']; }; - }; - /** - * admin/roles/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - admin___roles___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; - }; - }; + '/drive/files/show': { + /** + * drive/files/show + * @description Show the properties of a drive file. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___files___show']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/files/update': { + /** + * drive/files/update + * @description Update the properties of a drive file. + * + * **Credential required**: *Yes* / **Permission**: *write:drive* + */ + post: operations['drive___files___update']; }; - }; - /** - * admin/roles/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:roles* - */ - admin___roles___list: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Role'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/files/upload-from-url': { + /** + * drive/files/upload-from-url + * @description Request the server to download a new drive file from the specified URL. + * + * **Credential required**: *Yes* / **Permission**: *write:drive* + */ + post: operations['drive___files___upload-from-url']; }; - }; - /** - * admin/roles/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:roles* - */ - admin___roles___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; - }; - }; + '/drive/folders': { + /** + * drive/folders + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___folders']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Role']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/folders/create': { + /** + * drive/folders/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:drive* + */ + post: operations['drive___folders___create']; }; - }; - /** - * admin/roles/unassign - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - admin___roles___unassign: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; - /** Format: misskey:id */ - userId: string; - }; - }; + '/drive/folders/delete': { + /** + * drive/folders/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:drive* + */ + post: operations['drive___folders___delete']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/folders/find': { + /** + * drive/folders/find + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___folders___find']; }; - }; - /** - * admin/roles/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - admin___roles___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; - name?: string; - description?: string; - color?: string | null; - iconUrl?: string | null; - /** @enum {string} */ - target?: 'manual' | 'conditional'; - condFormula?: Record<string, never>; - isPublic?: boolean; - isModerator?: boolean; - isAdministrator?: boolean; - isExplorable?: boolean; - asBadge?: boolean; - preserveAssignmentOnMoveAccount?: boolean; - canEditMembersByModerator?: boolean; - displayOrder?: number; - policies?: Record<string, never>; - }; - }; + '/drive/folders/show': { + /** + * drive/folders/show + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___folders___show']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/drive/folders/update': { + /** + * drive/folders/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:drive* + */ + post: operations['drive___folders___update']; }; - }; - /** - * admin/roles/update-default-policies - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:roles* - */ - 'admin___roles___update-default-policies': { - requestBody: { - content: { - 'application/json': { - policies: Record<string, never>; - }; - }; + '/drive/stream': { + /** + * drive/stream + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:drive* + */ + post: operations['drive___stream']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/email-address/available': { + /** + * email-address/available + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['email-address___available']; }; - }; - /** - * admin/roles/users - * @description No description provided. - * - * **Credential required**: *No* / **Permission**: *read:admin:roles* - */ - admin___roles___users: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; - }; - }; + '/emoji': { + /** + * emoji + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['emoji']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** Format: misskey:id */ - id: string; - /** Format: date-time */ - createdAt: string; - user: components['schemas']['UserDetailed']; - /** Format: date-time */ - expiresAt: string | null; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/emojis': { + /** + * emojis + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['emojis']; }; - }; - /** - * admin/send-email - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:send-email* - */ - 'admin___send-email': { - requestBody: { - content: { - 'application/json': { - to: string; - subject: string; - text: string; - }; - }; + '/endpoint': { + /** + * endpoint + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['endpoint']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/endpoints': { + /** + * endpoints + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['endpoints']; }; - }; - /** - * admin/server-info - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:server-info* - */ - 'admin___server-info': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - machine: string; - /** @example linux */ - os: string; - node: string; - psql: string; - cpu: { - model: string; - cores: number; - }; - mem: { - /** Format: bytes */ - total: number; - }; - fs: { - /** Format: bytes */ - total: number; - /** Format: bytes */ - used: number; - }; - net: { - /** @example eth0 */ - interface: string; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/export-custom-emojis': { + /** + * export-custom-emojis + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['export-custom-emojis']; }; - }; - /** - * admin/show-moderation-logs - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:show-moderation-log* - */ - 'admin___show-moderation-logs': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - type?: string | null; - /** Format: misskey:id */ - userId?: string | null; - }; - }; + '/federation/followers': { + /** + * federation/followers + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['federation___followers']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - /** Format: date-time */ - createdAt: string; - type: string; - info: Record<string, never>; - /** Format: id */ - userId: string; - user: components['schemas']['UserDetailedNotMe']; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/federation/following': { + /** + * federation/following + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['federation___following']; }; - }; - /** - * admin/show-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:show-user* - */ - 'admin___show-user': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/federation/instances': { + /** + * federation/instances + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['federation___instances']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - email: string | null; - emailVerified: boolean; - followedMessage: string | null; - autoAcceptFollowed: boolean; - noCrawle: boolean; - preventAiLearning: boolean; - alwaysMarkNsfw: boolean; - autoSensitive: boolean; - carefulBot: boolean; - injectFeaturedNote: boolean; - receiveAnnouncementEmail: boolean; - mutedWords: (string | string[])[]; - mutedInstances: string[]; - notificationRecieveConfig: { - note?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - follow?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - mention?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - reply?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - renote?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - quote?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - reaction?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - pollEnded?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - receiveFollowRequest?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - followRequestAccepted?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - roleAssigned?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - chatRoomInvitationReceived?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - achievementEarned?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - app?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - test?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - }; - isModerator: boolean; - isSilenced: boolean; - isSuspended: boolean; - isHibernated: boolean; - lastActiveDate: string | null; - moderationNote: string; - signins: components['schemas']['Signin'][]; - policies: components['schemas']['RolePolicies']; - roles: components['schemas']['Role'][]; - roleAssigns: ({ - createdAt: string; - expiresAt: string | null; - roleId: string; - })[]; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/federation/show-instance': { + /** + * federation/show-instance + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['federation___show-instance']; }; - }; - /** - * admin/show-users - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:show-user* - */ - 'admin___show-users': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** @default 0 */ - offset?: number; - /** @enum {string} */ - sort?: '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt' | '+lastActiveDate' | '-lastActiveDate'; - /** - * @default all - * @enum {string} - */ - state?: 'all' | 'alive' | 'available' | 'admin' | 'moderator' | 'adminOrModerator' | 'suspended'; - /** - * @default combined - * @enum {string} - */ - origin?: 'combined' | 'local' | 'remote'; - /** @default null */ - username?: string | null; - /** - * @description The local host is represented with `null`. - * @default null - */ - hostname?: string | null; - }; - }; + '/federation/stats': { + /** + * federation/stats + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['federation___stats']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailed'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/federation/update-remote-user': { + /** + * federation/update-remote-user + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['federation___update-remote-user']; }; - }; - /** - * admin/suspend-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:suspend-user* - */ - 'admin___suspend-user': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/federation/users': { + /** + * federation/users + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['federation___users']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/fetch-external-resources': { + /** + * fetch-external-resources + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['fetch-external-resources']; }; - }; - /** - * admin/system-webhook/create - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - 'admin___system-webhook___create': { - requestBody: { - content: { - 'application/json': { - isActive: boolean; - name: string; - on: ('abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged')[]; - url: string; - secret: string; - }; - }; + '/fetch-rss': { + /** + * fetch-rss + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['fetch-rss']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['SystemWebhook']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/flash/create': { + /** + * flash/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:flash* + */ + post: operations['flash___create']; }; - }; - /** - * admin/system-webhook/delete - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - 'admin___system-webhook___delete': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - }; - }; + '/flash/delete': { + /** + * flash/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:flash* + */ + post: operations['flash___delete']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/flash/featured': { + /** + * flash/featured + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['flash___featured']; }; - }; - /** - * admin/system-webhook/list - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - 'admin___system-webhook___list': { - requestBody: { - content: { - 'application/json': { - isActive?: boolean; - on?: ('abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged')[]; - }; - }; + '/flash/like': { + /** + * flash/like + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:flash-likes* + */ + post: operations['flash___like']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['SystemWebhook'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/flash/my': { + /** + * flash/my + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:flash* + */ + post: operations['flash___my']; }; - }; - /** - * admin/system-webhook/show - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - 'admin___system-webhook___show': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - }; - }; + '/flash/my-likes': { + /** + * flash/my-likes + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:flash-likes* + */ + post: operations['flash___my-likes']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['SystemWebhook']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/flash/show': { + /** + * flash/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['flash___show']; }; - }; - /** - * admin/system-webhook/test - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *read:admin:system-webhook* - */ - 'admin___system-webhook___test': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - webhookId: string; - /** @enum {string} */ - type: 'abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged'; - override?: { - url?: string; - secret?: string; - }; - }; - }; + '/flash/unlike': { + /** + * flash/unlike + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:flash-likes* + */ + post: operations['flash___unlike']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/flash/update': { + /** + * flash/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:flash* + */ + post: operations['flash___update']; }; - }; - /** - * admin/system-webhook/update - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *write:admin:system-webhook* - */ - 'admin___system-webhook___update': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - isActive: boolean; - name: string; - on: ('abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged')[]; - url: string; - secret: string; - }; - }; + '/following/create': { + /** + * following/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:following* + */ + post: operations['following___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['SystemWebhook']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/following/delete': { + /** + * following/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:following* + */ + post: operations['following___delete']; }; - }; - /** - * admin/unset-user-avatar - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:unset-user-avatar* - */ - 'admin___unset-user-avatar': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/following/invalidate': { + /** + * following/invalidate + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:following* + */ + post: operations['following___invalidate']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/following/requests/accept': { + /** + * following/requests/accept + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:following* + */ + post: operations['following___requests___accept']; }; - }; - /** - * admin/unset-user-banner - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:unset-user-banner* - */ - 'admin___unset-user-banner': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/following/requests/cancel': { + /** + * following/requests/cancel + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:following* + */ + post: operations['following___requests___cancel']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/following/requests/list': { + /** + * following/requests/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:following* + */ + post: operations['following___requests___list']; }; - }; - /** - * admin/unsuspend-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:unsuspend-user* - */ - 'admin___unsuspend-user': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/following/requests/reject': { + /** + * following/requests/reject + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:following* + */ + post: operations['following___requests___reject']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/following/requests/sent': { + /** + * following/requests/sent + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:following* + */ + post: operations['following___requests___sent']; }; - }; - /** - * admin/update-abuse-user-report - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:resolve-abuse-user-report* - */ - 'admin___update-abuse-user-report': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - reportId: string; - moderationNote?: string; - }; - }; + '/following/update': { + /** + * following/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:following* + */ + post: operations['following___update']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/following/update-all': { + /** + * following/update-all + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:following* + */ + post: operations['following___update-all']; }; - }; - /** - * admin/update-meta - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:meta* - */ - 'admin___update-meta': { - requestBody: { - content: { - 'application/json': { - disableRegistration?: boolean | null; - pinnedUsers?: string[] | null; - hiddenTags?: string[] | null; - blockedHosts?: string[] | null; - sensitiveWords?: string[] | null; - prohibitedWords?: string[] | null; - prohibitedWordsForNameOfUser?: string[] | null; - themeColor?: string | null; - mascotImageUrl?: string | null; - bannerUrl?: string | null; - serverErrorImageUrl?: string | null; - infoImageUrl?: string | null; - notFoundImageUrl?: string | null; - iconUrl?: string | null; - app192IconUrl?: string | null; - app512IconUrl?: string | null; - backgroundImageUrl?: string | null; - logoImageUrl?: string | null; - name?: string | null; - shortName?: string | null; - description?: string | null; - defaultLightTheme?: string | null; - defaultDarkTheme?: string | null; - cacheRemoteFiles?: boolean; - cacheRemoteSensitiveFiles?: boolean; - emailRequiredForSignup?: boolean; - enableHcaptcha?: boolean; - hcaptchaSiteKey?: string | null; - hcaptchaSecretKey?: string | null; - enableMcaptcha?: boolean; - mcaptchaSiteKey?: string | null; - mcaptchaInstanceUrl?: string | null; - mcaptchaSecretKey?: string | null; - enableRecaptcha?: boolean; - recaptchaSiteKey?: string | null; - recaptchaSecretKey?: string | null; - enableTurnstile?: boolean; - turnstileSiteKey?: string | null; - turnstileSecretKey?: string | null; - enableTestcaptcha?: boolean; - googleAnalyticsMeasurementId?: string | null; - /** @enum {string} */ - sensitiveMediaDetection?: 'none' | 'all' | 'local' | 'remote'; - /** @enum {string} */ - sensitiveMediaDetectionSensitivity?: 'medium' | 'low' | 'high' | 'veryLow' | 'veryHigh'; - setSensitiveFlagAutomatically?: boolean; - enableSensitiveMediaDetectionForVideos?: boolean; - maintainerName?: string | null; - maintainerEmail?: string | null; - langs?: string[]; - deeplAuthKey?: string | null; - deeplIsPro?: boolean; - enableEmail?: boolean; - email?: string | null; - smtpSecure?: boolean; - smtpHost?: string | null; - smtpPort?: number | null; - smtpUser?: string | null; - smtpPass?: string | null; - enableServiceWorker?: boolean; - swPublicKey?: string | null; - swPrivateKey?: string | null; - tosUrl?: string | null; - repositoryUrl?: string | null; - feedbackUrl?: string | null; - impressumUrl?: string | null; - privacyPolicyUrl?: string | null; - inquiryUrl?: string | null; - useObjectStorage?: boolean; - objectStorageBaseUrl?: string | null; - objectStorageBucket?: string | null; - objectStoragePrefix?: string | null; - objectStorageEndpoint?: string | null; - objectStorageRegion?: string | null; - objectStoragePort?: number | null; - objectStorageAccessKey?: string | null; - objectStorageSecretKey?: string | null; - objectStorageUseSSL?: boolean; - objectStorageUseProxy?: boolean; - objectStorageSetPublicRead?: boolean; - objectStorageS3ForcePathStyle?: boolean; - enableIpLogging?: boolean; - enableActiveEmailValidation?: boolean; - enableVerifymailApi?: boolean; - verifymailAuthKey?: string | null; - enableTruemailApi?: boolean; - truemailInstance?: string | null; - truemailAuthKey?: string | null; - enableChartsForRemoteUser?: boolean; - enableChartsForFederatedInstances?: boolean; - enableStatsForFederatedInstances?: boolean; - enableServerMachineStats?: boolean; - enableIdenticonGeneration?: boolean; - serverRules?: string[]; - bannedEmailDomains?: string[]; - preservedUsernames?: string[]; - manifestJsonOverride?: string; - enableFanoutTimeline?: boolean; - enableFanoutTimelineDbFallback?: boolean; - perLocalUserUserTimelineCacheMax?: number; - perRemoteUserUserTimelineCacheMax?: number; - perUserHomeTimelineCacheMax?: number; - perUserListTimelineCacheMax?: number; - enableReactionsBuffering?: boolean; - notesPerOneAd?: number; - silencedHosts?: string[] | null; - mediaSilencedHosts?: string[] | null; - /** @description [Deprecated] Use "urlPreviewSummaryProxyUrl" instead. */ - summalyProxy?: string | null; - urlPreviewEnabled?: boolean; - urlPreviewAllowRedirect?: boolean; - urlPreviewTimeout?: number; - urlPreviewMaximumContentLength?: number; - urlPreviewRequireContentLength?: boolean; - urlPreviewUserAgent?: string | null; - urlPreviewSummaryProxyUrl?: string | null; - /** @enum {string} */ - federation?: 'all' | 'none' | 'specified'; - federationHosts?: string[]; - deliverSuspendedSoftware?: { - software: string; - versionRange: string; - }[]; - singleUserMode?: boolean; - /** @enum {string} */ - ugcVisibilityForVisitor?: 'all' | 'local' | 'none'; - proxyRemoteFiles?: boolean; - signToActivityPubGet?: boolean; - allowExternalApRedirect?: boolean; - }; - }; + '/gallery/featured': { + /** + * gallery/featured + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['gallery___featured']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/gallery/popular': { + /** + * gallery/popular + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['gallery___popular']; }; - }; - /** - * admin/update-proxy-account - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:account* - */ - 'admin___update-proxy-account': { - requestBody: { - content: { - 'application/json': { - description?: string | null; - }; - }; + '/gallery/posts': { + /** + * gallery/posts + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['gallery___posts']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/gallery/posts/create': { + /** + * gallery/posts/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:gallery* + */ + post: operations['gallery___posts___create']; }; - }; - /** - * admin/update-user-note - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:admin:user-note* - */ - 'admin___update-user-note': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - text: string; - }; - }; + '/gallery/posts/delete': { + /** + * gallery/posts/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:gallery* + */ + post: operations['gallery___posts___delete']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/gallery/posts/like': { + /** + * gallery/posts/like + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:gallery-likes* + */ + post: operations['gallery___posts___like']; }; - }; - /** - * announcements - * @description No description provided. - * - * **Credential required**: *No* - */ - announcements: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default true */ - isActive?: boolean; - }; - }; + '/gallery/posts/show': { + /** + * gallery/posts/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['gallery___posts___show']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Announcement'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/gallery/posts/unlike': { + /** + * gallery/posts/unlike + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:gallery-likes* + */ + post: operations['gallery___posts___unlike']; }; - }; - /** - * announcements/show - * @description No description provided. - * - * **Credential required**: *No* - */ - announcements___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - announcementId: string; - }; - }; + '/gallery/posts/update': { + /** + * gallery/posts/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:gallery* + */ + post: operations['gallery___posts___update']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Announcement']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/get-avatar-decorations': { + /** + * get-avatar-decorations + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['get-avatar-decorations']; }; - }; - /** - * antennas/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - antennas___create: { - requestBody: { - content: { - 'application/json': { - name: string; - /** @enum {string} */ - src: 'home' | 'all' | 'users' | 'list' | 'users_blacklist'; - /** Format: misskey:id */ - userListId?: string | null; - keywords: string[][]; - excludeKeywords: string[][]; - users: string[]; - caseSensitive: boolean; - localOnly?: boolean; - excludeBots?: boolean; - withReplies: boolean; - withFile: boolean; - excludeNotesInSensitiveChannel?: boolean; - }; - }; + '/get-online-users-count': { + /** + * get-online-users-count + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['get-online-users-count']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Antenna']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/hashtags/list': { + /** + * hashtags/list + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['hashtags___list']; }; - }; - /** - * antennas/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - antennas___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - antennaId: string; - }; - }; + '/hashtags/search': { + /** + * hashtags/search + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['hashtags___search']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/hashtags/show': { + /** + * hashtags/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['hashtags___show']; }; - }; - /** - * antennas/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - antennas___list: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Antenna'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/hashtags/trend': { + /** + * hashtags/trend + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['hashtags___trend']; }; - }; - /** - * antennas/notes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - antennas___notes: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - antennaId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; - }; - }; + '/hashtags/users': { + /** + * hashtags/users + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['hashtags___users']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i': { + /** + * i + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i']; }; - }; - /** - * antennas/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - antennas___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - antennaId: string; - }; - }; + '/i/2fa/done': { + /** + * i/2fa/done + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___2fa___done']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Antenna']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/2fa/key-done': { + /** + * i/2fa/key-done + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___2fa___key-done']; }; - }; - /** - * antennas/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - antennas___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - antennaId: string; - name?: string; - /** @enum {string} */ - src?: 'home' | 'all' | 'users' | 'list' | 'users_blacklist'; - /** Format: misskey:id */ - userListId?: string | null; - keywords?: string[][]; - excludeKeywords?: string[][]; - users?: string[]; - caseSensitive?: boolean; - localOnly?: boolean; - excludeBots?: boolean; - withReplies?: boolean; - withFile?: boolean; - excludeNotesInSensitiveChannel?: boolean; - }; - }; + '/i/2fa/password-less': { + /** + * i/2fa/password-less + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___2fa___password-less']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Antenna']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/2fa/register': { + /** + * i/2fa/register + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___2fa___register']; }; - }; - /** - * ap/get - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:federation* - */ - ap___get: { - requestBody: { - content: { - 'application/json': { - uri: string; - }; - }; + '/i/2fa/register-key': { + /** + * i/2fa/register-key + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___2fa___register-key']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': Record<string, never>; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/2fa/remove-key': { + /** + * i/2fa/remove-key + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___2fa___remove-key']; }; - }; - /** - * ap/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - ap___show: { - requestBody: { - content: { - 'application/json': { - uri: string; - }; - }; + '/i/2fa/unregister': { + /** + * i/2fa/unregister + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___2fa___unregister']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': OneOf<[{ - /** @enum {string} */ - type: 'User'; - object: components['schemas']['UserDetailedNotMe']; - }, { - /** @enum {string} */ - type: 'Note'; - object: components['schemas']['Note']; - }]>; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/2fa/update-key': { + /** + * i/2fa/update-key + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___2fa___update-key']; }; - }; - /** - * app/create - * @description No description provided. - * - * **Credential required**: *No* - */ - app___create: { - requestBody: { - content: { - 'application/json': { - name: string; - description: string; - permission: string[]; - callbackUrl?: string | null; - }; - }; + '/i/apps': { + /** + * i/apps + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___apps']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['App']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/authorized-apps': { + /** + * i/authorized-apps + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___authorized-apps']; }; - }; - /** - * app/show - * @description No description provided. - * - * **Credential required**: *No* - */ - app___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - appId: string; - }; - }; + '/i/change-password': { + /** + * i/change-password + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___change-password']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['App']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/claim-achievement': { + /** + * i/claim-achievement + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___claim-achievement']; }; - }; - /** - * auth/accept - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - auth___accept: { - requestBody: { - content: { - 'application/json': { - token: string; - }; - }; + '/i/delete-account': { + /** + * i/delete-account + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___delete-account']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/export-antennas': { + /** + * i/export-antennas + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___export-antennas']; }; - }; - /** - * auth/session/generate - * @description No description provided. - * - * **Credential required**: *No* - */ - auth___session___generate: { - requestBody: { - content: { - 'application/json': { - appSecret: string; - }; - }; + '/i/export-blocking': { + /** + * i/export-blocking + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___export-blocking']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - token: string; - /** Format: url */ - url: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/export-clips': { + /** + * i/export-clips + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___export-clips']; }; - }; - /** - * auth/session/show - * @description No description provided. - * - * **Credential required**: *No* - */ - auth___session___show: { - requestBody: { - content: { - 'application/json': { - token: string; - }; - }; + '/i/export-favorites': { + /** + * i/export-favorites + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___export-favorites']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - app: components['schemas']['App']; - token: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/export-following': { + /** + * i/export-following + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___export-following']; }; - }; - /** - * auth/session/userkey - * @description No description provided. - * - * **Credential required**: *No* - */ - auth___session___userkey: { - requestBody: { - content: { - 'application/json': { - appSecret: string; - token: string; - }; - }; + '/i/export-mute': { + /** + * i/export-mute + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___export-mute']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - accessToken: string; - user: components['schemas']['UserDetailedNotMe']; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/export-notes': { + /** + * i/export-notes + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___export-notes']; }; - }; - /** - * blocking/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:blocks* - */ - blocking___create: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/i/export-user-lists': { + /** + * i/export-user-lists + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___export-user-lists']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailedNotMe']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/favorites': { + /** + * i/favorites + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:favorites* + */ + post: operations['i___favorites']; }; - }; - /** - * blocking/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:blocks* - */ - blocking___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - }; - }; + '/i/gallery/likes': { + /** + * i/gallery/likes + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:gallery-likes* + */ + post: operations['i___gallery___likes']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailedNotMe']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/gallery/posts': { + /** + * i/gallery/posts + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:gallery* + */ + post: operations['i___gallery___posts']; }; - }; - /** - * blocking/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:blocks* - */ - blocking___list: { - requestBody: { - content: { - 'application/json': { - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/i/import-antennas': { + /** + * i/import-antennas + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___import-antennas']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Blocking'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/import-blocking': { + /** + * i/import-blocking + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___import-blocking']; }; - }; - /** - * bubble-game/ranking - * @description No description provided. - * - * **Credential required**: *No* - */ - 'bubble-game___ranking': { - requestBody: { - content: { - 'application/json': { - gameMode: string; - }; - }; + '/i/import-following': { + /** + * i/import-following + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___import-following']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - score: number; - user?: components['schemas']['UserLite']; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/import-muting': { + /** + * i/import-muting + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___import-muting']; }; - }; - /** - * bubble-game/register - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'bubble-game___register': { - requestBody: { - content: { - 'application/json': { - score: number; - seed: string; - logs: number[][]; - gameMode: string; - gameVersion: number; - }; - }; + '/i/import-user-lists': { + /** + * i/import-user-lists + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___import-user-lists']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/move': { + /** + * i/move + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___move']; }; - }; - /** - * channels/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - channels___create: { - requestBody: { - content: { - 'application/json': { - name: string; - description?: string | null; - /** Format: misskey:id */ - bannerId?: string | null; - color?: string; - isSensitive?: boolean | null; - allowRenoteToExternal?: boolean | null; - }; - }; + '/i/notifications': { + /** + * i/notifications + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:notifications* + */ + post: operations['i___notifications']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Channel']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/notifications-grouped': { + /** + * i/notifications-grouped + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:notifications* + */ + post: operations['i___notifications-grouped']; }; - }; - /** - * channels/favorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - channels___favorite: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - channelId: string; - }; - }; + '/i/page-likes': { + /** + * i/page-likes + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:page-likes* + */ + post: operations['i___page-likes']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/pages': { + /** + * i/pages + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:pages* + */ + post: operations['i___pages']; }; - }; - /** - * channels/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - channels___featured: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Channel'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/pin': { + /** + * i/pin + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___pin']; }; - }; - /** - * channels/follow - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - channels___follow: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - channelId: string; - }; - }; + '/i/read-announcement': { + /** + * i/read-announcement + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___read-announcement']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/regenerate-token': { + /** + * i/regenerate-token + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___regenerate-token']; }; - }; - /** - * channels/followed - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:channels* - */ - channels___followed: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 5 */ - limit?: number; - }; - }; + '/i/registry/get': { + /** + * i/registry/get + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i___registry___get']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Channel'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/registry/get-all': { + /** + * i/registry/get-all + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i___registry___get-all']; }; - }; - /** - * channels/my-favorites - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:channels* - */ - 'channels___my-favorites': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Channel'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/registry/get-detail': { + /** + * i/registry/get-detail + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i___registry___get-detail']; }; - }; - /** - * channels/owned - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:channels* - */ - channels___owned: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 5 */ - limit?: number; - }; - }; + '/i/registry/keys': { + /** + * i/registry/keys + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i___registry___keys']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Channel'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/registry/keys-with-type': { + /** + * i/registry/keys-with-type + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i___registry___keys-with-type']; }; - }; - /** - * channels/search - * @description No description provided. - * - * **Credential required**: *No* - */ - channels___search: { - requestBody: { - content: { - 'application/json': { - query: string; - /** - * @default nameAndDescription - * @enum {string} - */ - type?: 'nameAndDescription' | 'nameOnly'; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 5 */ - limit?: number; - }; - }; + '/i/registry/remove': { + /** + * i/registry/remove + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___registry___remove']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Channel'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/registry/scopes-with-domain': { + /** + * i/registry/scopes-with-domain + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___registry___scopes-with-domain']; }; - }; - /** - * channels/show - * @description No description provided. - * - * **Credential required**: *No* - */ - channels___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - channelId: string; - }; - }; + '/i/registry/set': { + /** + * i/registry/set + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___registry___set']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Channel']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/revoke-token': { + /** + * i/revoke-token + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___revoke-token']; }; - }; - /** - * channels/timeline - * @description No description provided. - * - * **Credential required**: *No* - */ - channels___timeline: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - channelId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; - /** @default false */ - allowPartial?: boolean; - }; - }; + '/i/signin-history': { + /** + * i/signin-history + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___signin-history']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/unpin': { + /** + * i/unpin + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___unpin']; }; - }; - /** - * channels/unfavorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - channels___unfavorite: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - channelId: string; - }; - }; + '/i/update': { + /** + * i/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___update']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/update-email': { + /** + * i/update-email + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['i___update-email']; }; - }; - /** - * channels/unfollow - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - channels___unfollow: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - channelId: string; - }; - }; + '/i/webhooks/create': { + /** + * i/webhooks/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___webhooks___create']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/webhooks/delete': { + /** + * i/webhooks/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___webhooks___delete']; }; - }; - /** - * channels/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:channels* - */ - channels___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - channelId: string; - name?: string; - description?: string | null; - /** Format: misskey:id */ - bannerId?: string | null; - isArchived?: boolean | null; - pinnedNoteIds?: string[]; - color?: string; - isSensitive?: boolean | null; - allowRenoteToExternal?: boolean | null; - }; - }; + '/i/webhooks/list': { + /** + * i/webhooks/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i___webhooks___list']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Channel']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/webhooks/show': { + /** + * i/webhooks/show + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i___webhooks___show']; }; - }; - /** - * charts/active-users - * @description No description provided. - * - * **Credential required**: *No* - */ - 'charts___active-users': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - }; - }; + '/i/webhooks/test': { + /** + * i/webhooks/test + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['i___webhooks___test']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - readWrite: number[]; - read: number[]; - write: number[]; - registeredWithinWeek: number[]; - registeredWithinMonth: number[]; - registeredWithinYear: number[]; - registeredOutsideWeek: number[]; - registeredOutsideMonth: number[]; - registeredOutsideYear: number[]; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/i/webhooks/update': { + /** + * i/webhooks/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['i___webhooks___update']; }; - }; - /** - * charts/ap-request - * @description No description provided. - * - * **Credential required**: *No* - */ - 'charts___ap-request': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - }; - }; + '/invite/create': { + /** + * invite/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:invite-codes* + */ + post: operations['invite___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - deliverFailed: number[]; - deliverSucceeded: number[]; - inboxReceived: number[]; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/invite/delete': { + /** + * invite/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:invite-codes* + */ + post: operations['invite___delete']; }; - }; - /** - * charts/drive - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___drive: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - }; - }; + '/invite/limit': { + /** + * invite/limit + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:invite-codes* + */ + post: operations['invite___limit']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - local: { - incCount: number[]; - incSize: number[]; - decCount: number[]; - decSize: number[]; - }; - remote: { - incCount: number[]; - incSize: number[]; - decCount: number[]; - decSize: number[]; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/invite/list': { + /** + * invite/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:invite-codes* + */ + post: operations['invite___list']; }; - }; - /** - * charts/federation - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___federation: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - }; - }; + '/meta': { + /** + * meta + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['meta']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - deliveredInstances: number[]; - inboxInstances: number[]; - stalled: number[]; - sub: number[]; - pub: number[]; - pubsub: number[]; - subActive: number[]; - pubActive: number[]; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/miauth/gen-token': { + /** + * miauth/gen-token + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['miauth___gen-token']; }; - }; - /** - * charts/instance - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___instance: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - host: string; - }; - }; + '/mute/create': { + /** + * mute/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:mutes* + */ + post: operations['mute___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - requests: { - failed: number[]; - succeeded: number[]; - received: number[]; - }; - notes: { - total: number[]; - inc: number[]; - dec: number[]; - diffs: { - normal: number[]; - reply: number[]; - renote: number[]; - withFile: number[]; - }; - }; - users: { - total: number[]; - inc: number[]; - dec: number[]; - }; - following: { - total: number[]; - inc: number[]; - dec: number[]; - }; - followers: { - total: number[]; - inc: number[]; - dec: number[]; - }; - drive: { - totalFiles: number[]; - incFiles: number[]; - decFiles: number[]; - incUsage: number[]; - decUsage: number[]; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/mute/delete': { + /** + * mute/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:mutes* + */ + post: operations['mute___delete']; }; - }; - /** - * charts/notes - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___notes: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - }; - }; + '/mute/list': { + /** + * mute/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:mutes* + */ + post: operations['mute___list']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - local: { - total: number[]; - inc: number[]; - dec: number[]; - diffs: { - normal: number[]; - reply: number[]; - renote: number[]; - withFile: number[]; - }; - }; - remote: { - total: number[]; - inc: number[]; - dec: number[]; - diffs: { - normal: number[]; - reply: number[]; - renote: number[]; - withFile: number[]; - }; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/my/apps': { + /** + * my/apps + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['my___apps']; }; - }; - /** - * charts/user/drive - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___user___drive: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - /** Format: misskey:id */ - userId: string; - }; - }; + '/notes': { + /** + * notes + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - totalCount: number[]; - totalSize: number[]; - incCount: number[]; - incSize: number[]; - decCount: number[]; - decSize: number[]; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/children': { + /** + * notes/children + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___children']; }; - }; - /** - * charts/user/following - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___user___following: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - /** Format: misskey:id */ - userId: string; - }; - }; + '/notes/clips': { + /** + * notes/clips + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___clips']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - local: { - followings: { - total: number[]; - inc: number[]; - dec: number[]; - }; - followers: { - total: number[]; - inc: number[]; - dec: number[]; - }; - }; - remote: { - followings: { - total: number[]; - inc: number[]; - dec: number[]; - }; - followers: { - total: number[]; - inc: number[]; - dec: number[]; - }; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/conversation': { + /** + * notes/conversation + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___conversation']; }; - }; - /** - * charts/user/notes - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___user___notes: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - /** Format: misskey:id */ - userId: string; - }; - }; + '/notes/create': { + /** + * notes/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:notes* + */ + post: operations['notes___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - total: number[]; - inc: number[]; - dec: number[]; - diffs: { - normal: number[]; - reply: number[]; - renote: number[]; - withFile: number[]; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/delete': { + /** + * notes/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:notes* + */ + post: operations['notes___delete']; }; - }; - /** - * charts/user/pv - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___user___pv: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - /** Format: misskey:id */ - userId: string; - }; - }; + '/notes/favorites/create': { + /** + * notes/favorites/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:favorites* + */ + post: operations['notes___favorites___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - upv: { - user: number[]; - visitor: number[]; - }; - pv: { - user: number[]; - visitor: number[]; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/favorites/delete': { + /** + * notes/favorites/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:favorites* + */ + post: operations['notes___favorites___delete']; }; - }; - /** - * charts/user/reactions - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___user___reactions: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - /** Format: misskey:id */ - userId: string; - }; - }; + '/notes/featured': { + /** + * notes/featured + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___featured']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - local: { - count: number[]; - }; - remote: { - count: number[]; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/global-timeline': { + /** + * notes/global-timeline + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___global-timeline']; }; - }; - /** - * charts/users - * @description No description provided. - * - * **Credential required**: *No* - */ - charts___users: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - span: 'day' | 'hour'; - /** @default 30 */ - limit?: number; - /** @default null */ - offset?: number | null; - }; - }; + '/notes/hybrid-timeline': { + /** + * notes/hybrid-timeline + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['notes___hybrid-timeline']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - local: { - total: number[]; - inc: number[]; - dec: number[]; - }; - remote: { - total: number[]; - inc: number[]; - dec: number[]; - }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/local-timeline': { + /** + * notes/local-timeline + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___local-timeline']; }; - }; - /** - * chat/history - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - chat___history: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** @default false */ - room?: boolean; - }; - }; + '/notes/mentions': { + /** + * notes/mentions + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['notes___mentions']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatMessage'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/polls/recommendation': { + /** + * notes/polls/recommendation + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['notes___polls___recommendation']; }; - }; - /** - * chat/messages/create-to-room - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - 'chat___messages___create-to-room': { - requestBody: { - content: { - 'application/json': { - text?: string | null; - /** Format: misskey:id */ - fileId?: string; - /** Format: misskey:id */ - toRoomId: string; - }; - }; + '/notes/polls/vote': { + /** + * notes/polls/vote + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:votes* + */ + post: operations['notes___polls___vote']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatMessageLiteForRoom']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/reactions': { + /** + * notes/reactions + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___reactions']; }; - }; - /** - * chat/messages/create-to-user - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - 'chat___messages___create-to-user': { - requestBody: { - content: { - 'application/json': { - text?: string | null; - /** Format: misskey:id */ - fileId?: string; - /** Format: misskey:id */ - toUserId: string; - }; - }; + '/notes/reactions/create': { + /** + * notes/reactions/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:reactions* + */ + post: operations['notes___reactions___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatMessageLiteFor1on1']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/reactions/delete': { + /** + * notes/reactions/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:reactions* + */ + post: operations['notes___reactions___delete']; }; - }; - /** - * chat/messages/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___messages___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - messageId: string; - }; - }; + '/notes/renotes': { + /** + * notes/renotes + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___renotes']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/replies': { + /** + * notes/replies + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___replies']; }; - }; - /** - * chat/messages/react - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___messages___react: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - messageId: string; - reaction: string; - }; - }; + '/notes/search': { + /** + * notes/search + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___search']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/search-by-tag': { + /** + * notes/search-by-tag + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___search-by-tag']; }; - }; - /** - * chat/messages/room-timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - 'chat___messages___room-timeline': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** Format: misskey:id */ - roomId: string; - }; - }; + '/notes/show': { + /** + * notes/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___show']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatMessageLiteForRoom'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/show-partial-bulk': { + /** + * notes/show-partial-bulk + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['notes___show-partial-bulk']; }; - }; - /** - * chat/messages/search - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - chat___messages___search: { - requestBody: { - content: { - 'application/json': { - query: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - userId?: string | null; - /** Format: misskey:id */ - roomId?: string | null; - }; - }; + '/notes/state': { + /** + * notes/state + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['notes___state']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatMessage'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/thread-muting/create': { + /** + * notes/thread-muting/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['notes___thread-muting___create']; }; - }; - /** - * chat/messages/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - chat___messages___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - messageId: string; - }; - }; + '/notes/thread-muting/delete': { + /** + * notes/thread-muting/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['notes___thread-muting___delete']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatMessage']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/timeline': { + /** + * notes/timeline + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['notes___timeline']; }; - }; - /** - * chat/messages/unreact - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___messages___unreact: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - messageId: string; - reaction: string; - }; - }; + '/notes/translate': { + /** + * notes/translate + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['notes___translate']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notes/unrenote': { + /** + * notes/unrenote + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:notes* + */ + post: operations['notes___unrenote']; }; - }; - /** - * chat/messages/user-timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - 'chat___messages___user-timeline': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** Format: misskey:id */ - userId: string; - }; - }; + '/notes/user-list-timeline': { + /** + * notes/user-list-timeline + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['notes___user-list-timeline']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatMessageLiteFor1on1'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notifications/create': { + /** + * notifications/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:notifications* + */ + post: operations['notifications___create']; }; - }; - /** - * chat/rooms/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___create: { - requestBody: { - content: { - 'application/json': { - name: string; - description?: string; - }; - }; + '/notifications/flush': { + /** + * notifications/flush + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:notifications* + */ + post: operations['notifications___flush']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoom']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/notifications/mark-all-as-read': { + /** + * notifications/mark-all-as-read + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:notifications* + */ + post: operations['notifications___mark-all-as-read']; }; - }; - /** - * chat/rooms/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - }; - }; + '/notifications/test-notification': { + /** + * notifications/test-notification + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:notifications* + */ + post: operations['notifications___test-notification']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/page-push': { + /** + * page-push + * @description No description provided. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['page-push']; }; - }; - /** - * chat/rooms/invitations/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___invitations___create: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - /** Format: misskey:id */ - userId: string; - }; - }; + '/pages/create': { + /** + * pages/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:pages* + */ + post: operations['pages___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoomInvitation']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/pages/delete': { + /** + * pages/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:pages* + */ + post: operations['pages___delete']; }; - }; - /** - * chat/rooms/invitations/ignore - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___invitations___ignore: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - }; - }; + '/pages/featured': { + /** + * pages/featured + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['pages___featured']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/pages/like': { + /** + * pages/like + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:page-likes* + */ + post: operations['pages___like']; }; - }; - /** - * chat/rooms/invitations/inbox - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - chat___rooms___invitations___inbox: { - requestBody: { - content: { - 'application/json': { - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/pages/show': { + /** + * pages/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['pages___show']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoomInvitation'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/pages/unlike': { + /** + * pages/unlike + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:page-likes* + */ + post: operations['pages___unlike']; }; - }; - /** - * chat/rooms/invitations/outbox - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - chat___rooms___invitations___outbox: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/pages/update': { + /** + * pages/update + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:pages* + */ + post: operations['pages___update']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoomInvitation'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/ping': { + /** + * ping + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['ping']; }; - }; - /** - * chat/rooms/join - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___join: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - }; - }; + '/pinned-users': { + /** + * pinned-users + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['pinned-users']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/promo/read': { + /** + * promo/read + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['promo___read']; }; - }; - /** - * chat/rooms/joining - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - chat___rooms___joining: { - requestBody: { - content: { - 'application/json': { - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/renote-mute/create': { + /** + * renote-mute/create + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:mutes* + */ + post: operations['renote-mute___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoomMembership'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/renote-mute/delete': { + /** + * renote-mute/delete + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:mutes* + */ + post: operations['renote-mute___delete']; }; - }; - /** - * chat/rooms/leave - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___leave: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - }; - }; + '/renote-mute/list': { + /** + * renote-mute/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:mutes* + */ + post: operations['renote-mute___list']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/request-reset-password': { + /** + * request-reset-password + * @description Request a users password to be reset. + * + * **Credential required**: *No* + */ + post: operations['request-reset-password']; }; - }; - /** - * chat/rooms/members - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___members: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/reset-db': { + /** + * reset-db + * @description Only available when running with <code>NODE_ENV=testing</code>. Reset the database and flush Redis. + * + * **Credential required**: *No* + */ + post: operations['reset-db']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoomMembership'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/reset-password': { + /** + * reset-password + * @description Complete the password reset that was previously requested. + * + * **Credential required**: *No* + */ + post: operations['reset-password']; }; - }; - /** - * chat/rooms/mute - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___mute: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - mute: boolean; - }; - }; + '/retention': { + /** + * retention + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['retention']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/reversi/cancel-match': { + /** + * reversi/cancel-match + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['reversi___cancel-match']; }; - }; - /** - * chat/rooms/owned - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - chat___rooms___owned: { - requestBody: { - content: { - 'application/json': { - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/reversi/games': { + /** + * reversi/games + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['reversi___games']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoom'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/reversi/invitations': { + /** + * reversi/invitations + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['reversi___invitations']; }; - }; - /** - * chat/rooms/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:chat* - */ - chat___rooms___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - }; - }; + '/reversi/match': { + /** + * reversi/match + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['reversi___match']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoom']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/reversi/show-game': { + /** + * reversi/show-game + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['reversi___show-game']; }; - }; - /** - * chat/rooms/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:chat* - */ - chat___rooms___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roomId: string; - name?: string; - description?: string; - }; - }; + '/reversi/surrender': { + /** + * reversi/surrender + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['reversi___surrender']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ChatRoom']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/reversi/verify': { + /** + * reversi/verify + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['reversi___verify']; }; - }; - /** - * clips/add-note - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'clips___add-note': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - clipId: string; - /** Format: misskey:id */ - noteId: string; - }; - }; + '/roles/list': { + /** + * roles/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['roles___list']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/roles/notes': { + /** + * roles/notes + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['roles___notes']; }; - }; - /** - * clips/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - clips___create: { - requestBody: { - content: { - 'application/json': { - name: string; - /** @default false */ - isPublic?: boolean; - description?: string | null; - }; - }; + '/roles/show': { + /** + * roles/show + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['roles___show']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Clip']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/roles/users': { + /** + * roles/users + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['roles___users']; }; - }; - /** - * clips/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - clips___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - clipId: string; - }; - }; + '/server-info': { + /** + * server-info + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['server-info']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/stats': { + /** + * stats + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['stats']; }; - }; - /** - * clips/favorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:clip-favorite* - */ - clips___favorite: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - clipId: string; - }; - }; + '/sw/register': { + /** + * sw/register + * @description Register to receive push notifications. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['sw___register']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/sw/show-registration': { + /** + * sw/show-registration + * @description Check push notification registration exists. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['sw___show-registration']; }; - }; - /** - * clips/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - clips___list: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Clip'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/sw/unregister': { + /** + * sw/unregister + * @description Unregister from receiving push notifications. + * + * **Credential required**: *No* + */ + post: operations['sw___unregister']; }; - }; - /** - * clips/my-favorites - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:clip-favorite* - */ - 'clips___my-favorites': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Clip'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/sw/update-registration': { + /** + * sw/update-registration + * @description Update push notification registration. + * + * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. + * **Credential required**: *Yes* + */ + post: operations['sw___update-registration']; }; - }; - /** - * clips/notes - * @description No description provided. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - clips___notes: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - clipId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - }; - }; + '/test': { + /** + * test + * @description Endpoint for testing input validation. + * + * **Credential required**: *No* + */ + post: operations['test']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/username/available': { + /** + * username/available + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['username___available']; }; - }; - /** - * clips/remove-note - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'clips___remove-note': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - clipId: string; - /** Format: misskey:id */ - noteId: string; - }; - }; + '/users': { + /** + * users + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['users']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/achievements': { + /** + * users/achievements + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['users___achievements']; }; - }; - /** - * clips/show - * @description No description provided. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - clips___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - clipId: string; - }; - }; + '/users/clips': { + /** + * users/clips + * @description Show all clips this user owns. + * + * **Credential required**: *No* + */ + post: operations['users___clips']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Clip']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/featured-notes': { + /** + * users/featured-notes + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['users___featured-notes']; }; - }; - /** - * clips/unfavorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:clip-favorite* - */ - clips___unfavorite: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - clipId: string; - }; - }; + '/users/flashs': { + /** + * users/flashs + * @description Show all flashs this user created. + * + * **Credential required**: *No* + */ + post: operations['users___flashs']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/followers': { + /** + * users/followers + * @description Show everyone that follows this user. + * + * **Credential required**: *No* + */ + post: operations['users___followers']; }; - }; - /** - * clips/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - clips___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - clipId: string; - name?: string; - isPublic?: boolean; - description?: string | null; - }; - }; + '/users/following': { + /** + * users/following + * @description Show everyone that this user is following. + * + * **Credential required**: *No* + */ + post: operations['users___following']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Clip']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/gallery/posts': { + /** + * users/gallery/posts + * @description Show all gallery posts by the given user. + * + * **Credential required**: *No* + */ + post: operations['users___gallery___posts']; }; - }; - /** - * drive - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - drive: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - capacity: number; - usage: number; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/get-frequently-replied-users': { + /** + * users/get-frequently-replied-users + * @description Get a list of other users that the specified user frequently replies to. + * + * **Credential required**: *No* + */ + post: operations['users___get-frequently-replied-users']; }; - }; - /** - * drive/files - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - drive___files: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** - * Format: misskey:id - * @default null - */ - folderId?: string | null; - type?: string | null; - /** @enum {string|null} */ - sort?: '+createdAt' | '-createdAt' | '+name' | '-name' | '+size' | '-size' | null; - }; - }; + '/users/lists/create': { + /** + * users/lists/create + * @description Create a new list of users. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___create']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFile'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/lists/create-from-public': { + /** + * users/lists/create-from-public + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___create-from-public']; }; - }; - /** - * drive/files/attached-notes - * @description Find the notes to which the given file is attached. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - 'drive___files___attached-notes': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - fileId: string; - }; - }; + '/users/lists/delete': { + /** + * users/lists/delete + * @description Delete an existing list of users. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___delete']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/lists/favorite': { + /** + * users/lists/favorite + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___favorite']; }; - }; - /** - * drive/files/check-existence - * @description Check if a given file exists. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - 'drive___files___check-existence': { - requestBody: { - content: { - 'application/json': { - md5: string; - }; - }; + '/users/lists/get-memberships': { + /** + * users/lists/get-memberships + * @description No description provided. + * + * **Credential required**: *No* / **Permission**: *read:account* + */ + post: operations['users___lists___get-memberships']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': boolean; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/lists/list': { + /** + * users/lists/list + * @description Show all lists that the authenticated user has created. + * + * **Credential required**: *No* / **Permission**: *read:account* + */ + post: operations['users___lists___list']; }; - }; - /** - * drive/files/create - * @description Upload a new drive file. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - drive___files___create: { - requestBody: { - content: { - 'multipart/form-data': { - /** - * Format: misskey:id - * @default null - */ - folderId?: string | null; - /** @default null */ - name?: string | null; - /** @default null */ - comment?: string | null; - /** @default false */ - isSensitive?: boolean; - /** @default false */ - force?: boolean; - /** - * Format: binary - * @description The file contents. - */ - file: Blob; - }; - }; + '/users/lists/pull': { + /** + * users/lists/pull + * @description Remove a user from a list. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___pull']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFile']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/lists/push': { + /** + * users/lists/push + * @description Add a user to an existing list. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___push']; }; - }; - /** - * drive/files/delete - * @description Delete an existing drive file. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - drive___files___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; - }; - }; + '/users/lists/show': { + /** + * users/lists/show + * @description Show the properties of a list. + * + * **Credential required**: *No* / **Permission**: *read:account* + */ + post: operations['users___lists___show']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/lists/unfavorite': { + /** + * users/lists/unfavorite + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___unfavorite']; }; - }; - /** - * drive/files/find - * @description Search for a drive file by the given parameters. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - drive___files___find: { - requestBody: { - content: { - 'application/json': { - name: string; - /** - * Format: misskey:id - * @default null - */ - folderId?: string | null; - }; - }; + '/users/lists/update': { + /** + * users/lists/update + * @description Update the properties of a list. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___update']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFile'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/lists/update-membership': { + /** + * users/lists/update-membership + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___lists___update-membership']; }; - }; - /** - * drive/files/find-by-hash - * @description Search for a drive file by a hash of the contents. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - 'drive___files___find-by-hash': { - requestBody: { - content: { - 'application/json': { - md5: string; - }; - }; + '/users/notes': { + /** + * users/notes + * @description No description provided. + * + * **Credential required**: *No* + */ + post: operations['users___notes']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFile'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/pages': { + /** + * users/pages + * @description Show all pages this user created. + * + * **Credential required**: *No* + */ + post: operations['users___pages']; }; - }; - /** - * drive/files/move-bulk - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - 'drive___files___move-bulk': { - requestBody: { - content: { - 'application/json': { - fileIds: string[]; - /** Format: misskey:id */ - folderId?: string | null; - }; - }; + '/users/reactions': { + /** + * users/reactions + * @description Show all reactions this user made. + * + * **Credential required**: *No* + */ + post: operations['users___reactions']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/recommendation': { + /** + * users/recommendation + * @description Show users that the authenticated user might be interested to follow. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['users___recommendation']; }; - }; - /** - * drive/files/show - * @description Show the properties of a drive file. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - drive___files___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; - } | { - url: string; - }; - }; + '/users/relation': { + /** + * users/relation + * @description Show the different kinds of relations between the authenticated user and the specified user(s). + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['users___relation']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFile']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/report-abuse': { + /** + * users/report-abuse + * @description File a report. + * + * **Credential required**: *Yes* / **Permission**: *write:report-abuse* + */ + post: operations['users___report-abuse']; }; - }; - /** - * drive/files/update - * @description Update the properties of a drive file. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - drive___files___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; - /** Format: misskey:id */ - folderId?: string | null; - name?: string; - isSensitive?: boolean; - comment?: string | null; - }; - }; + '/users/search': { + /** + * users/search + * @description Search for users. + * + * **Credential required**: *No* + */ + post: operations['users___search']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFile']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/search-by-username-and-host': { + /** + * users/search-by-username-and-host + * @description Search for a user by username and/or host. + * + * **Credential required**: *No* + */ + post: operations['users___search-by-username-and-host']; }; - }; - /** - * drive/files/upload-from-url - * @description Request the server to download a new drive file from the specified URL. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - 'drive___files___upload-from-url': { - requestBody: { - content: { - 'application/json': { - url: string; - /** - * Format: misskey:id - * @default null - */ - folderId?: string | null; - /** @default false */ - isSensitive?: boolean; - /** @default null */ - comment?: string | null; - /** @default null */ - marker?: string | null; - /** @default false */ - force?: boolean; - }; - }; + '/users/show': { + /** + * users/show + * @description Show the properties of a user. + * + * **Credential required**: *No* + */ + post: operations['users___show']; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; + '/users/update-memo': { + /** + * users/update-memo + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *write:account* + */ + post: operations['users___update-memo']; }; - }; - /** - * drive/folders - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - drive___folders: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** - * Format: misskey:id - * @default null - */ - folderId?: string | null; - }; - }; + '/v2/admin/emoji/list': { + /** + * v2/admin/emoji/list + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* + */ + post: operations['v2___admin___emoji___list']; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFolder'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; +}; +export type webhooks = Record<string, never>; +export type components = { + schemas: { + Error: { + /** @description An error object. */ + error: { + /** @description An error code. Unique within the endpoint. */ + code: string; + /** @description An error message. */ + message: string; + /** + * Format: uuid + * @description An error ID. This ID is static. + */ + id: string; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + UserLite: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** @example è— */ + name: string | null; + /** @example ai */ + username: string; + /** + * @description The local host is represented with `null`. + * @example misskey.example.com + */ + host: string | null; + /** Format: url */ + avatarUrl: string | null; + avatarBlurhash: string | null; + avatarDecorations: { + /** Format: id */ + id: string; + angle?: number; + flipH?: boolean; + /** Format: url */ + url: string; + offsetX?: number; + offsetY?: number; + }[]; + isBot?: boolean; + isCat?: boolean; + requireSigninToViewContents?: boolean; + makeNotesFollowersOnlyBefore?: number | null; + makeNotesHiddenBefore?: number | null; + instance?: { + name: string | null; + softwareName: string | null; + softwareVersion: string | null; + iconUrl: string | null; + faviconUrl: string | null; + themeColor: string | null; + }; + emojis: { + [key: string]: string; + }; + /** @enum {string} */ + onlineStatus: 'unknown' | 'online' | 'active' | 'offline'; + badgeRoles?: { + name: string; + iconUrl: string | null; + displayOrder: number; + }[]; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + UserDetailedNotMeOnly: { + /** Format: url */ + url: string | null; + /** Format: uri */ + uri: string | null; + /** Format: uri */ + movedTo: string | null; + alsoKnownAs: string[] | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string | null; + /** Format: date-time */ + lastFetchedAt: string | null; + /** Format: url */ + bannerUrl: string | null; + bannerBlurhash: string | null; + isLocked: boolean; + isSilenced: boolean; + /** @example false */ + isSuspended: boolean; + /** @example Hi masters, I am Ai! */ + description: string | null; + location: string | null; + /** @example 2018-03-12 */ + birthday: string | null; + /** @example ja-JP */ + lang: string | null; + fields: { + name: string; + value: string; + }[]; + verifiedLinks: string[]; + followersCount: number; + followingCount: number; + notesCount: number; + pinnedNoteIds: string[]; + pinnedNotes: components['schemas']['Note'][]; + pinnedPageId: string | null; + pinnedPage: components['schemas']['Page'] | null; + publicReactions: boolean; + /** @enum {string} */ + followingVisibility: 'public' | 'followers' | 'private'; + /** @enum {string} */ + followersVisibility: 'public' | 'followers' | 'private'; + /** @enum {string} */ + chatScope: 'everyone' | 'following' | 'followers' | 'mutual' | 'none'; + canChat: boolean; + roles: components['schemas']['RoleLite'][]; + followedMessage?: string | null; + memo: string | null; + moderationNote?: string; + twoFactorEnabled?: boolean; + usePasswordLessLogin?: boolean; + securityKeys?: boolean; + isFollowing?: boolean; + isFollowed?: boolean; + hasPendingFollowRequestFromYou?: boolean; + hasPendingFollowRequestToYou?: boolean; + isBlocking?: boolean; + isBlocked?: boolean; + isMuted?: boolean; + isRenoteMuted?: boolean; + /** @enum {string} */ + notify?: 'normal' | 'none'; + withReplies?: boolean; }; - }; - }; - }; - /** - * drive/folders/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - drive___folders___create: { - requestBody: { - content: { - 'application/json': { - /** @default Untitled */ - name?: string; - /** Format: misskey:id */ - parentId?: string | null; + MeDetailedOnly: { + /** Format: id */ + avatarId: string | null; + /** Format: id */ + bannerId: string | null; + followedMessage: string | null; + isModerator: boolean | null; + isAdmin: boolean | null; + injectFeaturedNote: boolean; + receiveAnnouncementEmail: boolean; + alwaysMarkNsfw: boolean; + autoSensitive: boolean; + carefulBot: boolean; + autoAcceptFollowed: boolean; + noCrawle: boolean; + preventAiLearning: boolean; + isExplorable: boolean; + isDeleted: boolean; + /** @enum {string} */ + twoFactorBackupCodesStock: 'full' | 'partial' | 'none'; + hideOnlineStatus: boolean; + hasUnreadSpecifiedNotes: boolean; + hasUnreadMentions: boolean; + hasUnreadAnnouncement: boolean; + unreadAnnouncements: components['schemas']['Announcement'][]; + hasUnreadAntenna: boolean; + hasUnreadChannel: boolean; + hasUnreadChatMessages: boolean; + hasUnreadNotification: boolean; + hasPendingReceivedFollowRequest: boolean; + unreadNotificationsCount: number; + mutedWords: string[][]; + hardMutedWords: string[][]; + mutedInstances: string[] | null; + notificationRecieveConfig: { + note?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + follow?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + mention?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + reply?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + renote?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + quote?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + reaction?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + pollEnded?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + receiveFollowRequest?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + followRequestAccepted?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + roleAssigned?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + chatRoomInvitationReceived?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + achievementEarned?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + app?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + test?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + }; + emailNotificationTypes: string[]; + achievements: components['schemas']['Achievement'][]; + loggedInDays: number; + policies: components['schemas']['RolePolicies']; + /** @default false */ + twoFactorEnabled: boolean; + /** @default false */ + usePasswordLessLogin: boolean; + /** @default false */ + securityKeys: boolean; + email?: string | null; + emailVerified?: boolean | null; + securityKeysList?: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + name: string; + /** Format: date-time */ + lastUsed: string; + }[]; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFolder']; + UserDetailedNotMe: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly']; + MeDetailed: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly'] & components['schemas']['MeDetailedOnly']; + UserDetailed: components['schemas']['UserDetailedNotMe'] | components['schemas']['MeDetailed']; + User: components['schemas']['UserLite'] | components['schemas']['UserDetailed']; + UserList: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + name: string; + userIds?: string[]; + isPublic: boolean; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + Achievement: { + name: components['schemas']['AchievementName']; + unlockedAt: number; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + /** @enum {string} */ + AchievementName: 'notes1' | 'notes10' | 'notes100' | 'notes500' | 'notes1000' | 'notes5000' | 'notes10000' | 'notes20000' | 'notes30000' | 'notes40000' | 'notes50000' | 'notes60000' | 'notes70000' | 'notes80000' | 'notes90000' | 'notes100000' | 'login3' | 'login7' | 'login15' | 'login30' | 'login60' | 'login100' | 'login200' | 'login300' | 'login400' | 'login500' | 'login600' | 'login700' | 'login800' | 'login900' | 'login1000' | 'passedSinceAccountCreated1' | 'passedSinceAccountCreated2' | 'passedSinceAccountCreated3' | 'loggedInOnBirthday' | 'loggedInOnNewYearsDay' | 'noteClipped1' | 'noteFavorited1' | 'myNoteFavorited1' | 'profileFilled' | 'markedAsCat' | 'following1' | 'following10' | 'following50' | 'following100' | 'following300' | 'followers1' | 'followers10' | 'followers50' | 'followers100' | 'followers300' | 'followers500' | 'followers1000' | 'collectAchievements30' | 'viewAchievements3min' | 'iLoveMisskey' | 'foundTreasure' | 'client30min' | 'client60min' | 'noteDeletedWithin1min' | 'postedAtLateNight' | 'postedAt0min0sec' | 'selfQuote' | 'htl20npm' | 'viewInstanceChart' | 'outputHelloWorldOnScratchpad' | 'open3windows' | 'driveFolderCircularReference' | 'reactWithoutRead' | 'clickedClickHere' | 'justPlainLucky' | 'setNameToSyuilo' | 'cookieClicked' | 'brainDiver' | 'smashTestNotificationButton' | 'tutorialCompleted' | 'bubbleGameExplodingHead' | 'bubbleGameDoubleExplodingHead'; + Ad: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + expiresAt: string; + /** Format: date-time */ + startsAt: string; + place: string; + priority: string; + ratio: number; + url: string; + imageUrl: string; + memo: string; + dayOfWeek: number; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + Announcement: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string | null; + text: string; + title: string; + imageUrl: string | null; + /** @enum {string} */ + icon: 'info' | 'warning' | 'error' | 'success'; + /** @enum {string} */ + display: 'dialog' | 'normal' | 'banner'; + needConfirmationToRead: boolean; + silence: boolean; + forYou: boolean; + isRead?: boolean; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + App: { + id: string; + name: string; + callbackUrl: string | null; + permission: string[]; + secret?: string; + isAuthorized?: boolean; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + Note: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + deletedAt?: string | null; + text: string | null; + cw?: string | null; + /** Format: id */ + userId: string; + user: components['schemas']['UserLite']; + /** + * Format: id + * @example xxxxxxxxxx + */ + replyId?: string | null; + /** + * Format: id + * @example xxxxxxxxxx + */ + renoteId?: string | null; + reply?: components['schemas']['Note'] | null; + renote?: components['schemas']['Note'] | null; + isHidden?: boolean; + /** @enum {string} */ + visibility: 'public' | 'home' | 'followers' | 'specified'; + mentions?: string[]; + visibleUserIds?: string[]; + fileIds?: string[]; + files?: components['schemas']['DriveFile'][]; + tags?: string[]; + poll?: { + /** Format: date-time */ + expiresAt?: string | null; + multiple: boolean; + choices: { + isVoted: boolean; + text: string; + votes: number; + }[]; + } | null; + emojis?: { + [key: string]: string; + }; + /** + * Format: id + * @example xxxxxxxxxx + */ + channelId?: string | null; + channel?: { + id: string; + name: string; + color: string; + isSensitive: boolean; + allowRenoteToExternal: boolean; + userId: string | null; + } | null; + localOnly?: boolean; + /** @enum {string|null} */ + reactionAcceptance: 'likeOnly' | 'likeOnlyForRemote' | 'nonSensitiveOnly' | 'nonSensitiveOnlyForLocalLikeOnlyForRemote' | null; + reactionEmojis: { + [key: string]: string; + }; + reactions: { + [key: string]: number; + }; + reactionCount: number; + renoteCount: number; + repliesCount: number; + uri?: string; + url?: string; + reactionAndUserPairCache?: string[]; + clippedCount?: number; + hasPoll?: boolean; + myReaction?: string | null; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + NoteReaction: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + user: components['schemas']['UserLite']; + type: string; }; - }; - }; - }; - /** - * drive/folders/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - drive___folders___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - folderId: string; + NoteFavorite: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + note: components['schemas']['Note']; + /** Format: id */ + noteId: string; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + Notification: { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'note'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + note: components['schemas']['Note']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'mention'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + note: components['schemas']['Note']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'reply'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + note: components['schemas']['Note']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'renote'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + note: components['schemas']['Note']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'quote'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + note: components['schemas']['Note']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'reaction'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + note: components['schemas']['Note']; + reaction: string; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'pollEnded'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + note: components['schemas']['Note']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'follow'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'receiveFollowRequest'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'followRequestAccepted'; + user: components['schemas']['UserLite']; + /** Format: id */ + userId: string; + message: string | null; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'roleAssigned'; + role: components['schemas']['Role']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'chatRoomInvitationReceived'; + invitation: components['schemas']['ChatRoomInvitation']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'achievementEarned'; + achievement: components['schemas']['AchievementName']; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'exportCompleted'; + /** @enum {string} */ + exportedEntity: 'antenna' | 'blocking' | 'clip' | 'customEmoji' | 'favorite' | 'following' | 'muting' | 'note' | 'userList'; + /** Format: id */ + fileId: string; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'login'; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'createToken'; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'app'; + body: string; + header: string | null; + icon: string | null; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'reaction:grouped'; + note: components['schemas']['Note']; + reactions: { + user: components['schemas']['UserLite']; + reaction: string; + }[]; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'renote:grouped'; + note: components['schemas']['Note']; + users: components['schemas']['UserLite'][]; + } | { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @enum {string} */ + type: 'test'; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + DriveFile: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** @example 192.jpg */ + name: string; + /** @example image/jpeg */ + type: string; + /** + * Format: md5 + * @example 15eca7fba0480996e2245f5185bf39f2 + */ + md5: string; + /** @example 51469 */ + size: number; + isSensitive: boolean; + blurhash: string | null; + properties: { + /** @example 1280 */ + width?: number; + /** @example 720 */ + height?: number; + /** @example 8 */ + orientation?: number; + /** @example rgb(40,65,87) */ + avgColor?: string; + }; + /** Format: url */ + url: string; + /** Format: url */ + thumbnailUrl: string | null; + comment: string | null; + /** + * Format: id + * @example xxxxxxxxxx + */ + folderId: string | null; + folder?: components['schemas']['DriveFolder'] | null; + /** + * Format: id + * @example xxxxxxxxxx + */ + userId: string | null; + user?: components['schemas']['UserLite'] | null; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + DriveFolder: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + name: string; + /** + * Format: id + * @example xxxxxxxxxx + */ + parentId: string | null; + foldersCount?: number; + filesCount?: number; + parent?: components['schemas']['DriveFolder'] | null; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + Following: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: id */ + followeeId: string; + /** Format: id */ + followerId: string; + followee?: components['schemas']['UserDetailedNotMe']; + follower?: components['schemas']['UserDetailedNotMe']; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + Muting: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + expiresAt: string | null; + /** Format: id */ + muteeId: string; + mutee: components['schemas']['UserDetailedNotMe']; }; - }; - }; - }; - /** - * drive/folders/find - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - drive___folders___find: { - requestBody: { - content: { - 'application/json': { - name: string; - /** - * Format: misskey:id - * @default null - */ - parentId?: string | null; + RenoteMuting: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: id */ + muteeId: string; + mutee: components['schemas']['UserDetailedNotMe']; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFolder'][]; + Blocking: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: id */ + blockeeId: string; + blockee: components['schemas']['UserDetailedNotMe']; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + Hashtag: { + /** @example misskey */ + tag: string; + mentionedUsersCount: number; + mentionedLocalUsersCount: number; + mentionedRemoteUsersCount: number; + attachedUsersCount: number; + attachedLocalUsersCount: number; + attachedRemoteUsersCount: number; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + InviteCode: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** @example GR6S02ERUA5VR */ + code: string; + /** Format: date-time */ + expiresAt: string | null; + /** Format: date-time */ + createdAt: string; + createdBy: components['schemas']['UserLite'] | null; + usedBy: components['schemas']['UserLite'] | null; + /** Format: date-time */ + usedAt: string | null; + used: boolean; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + Page: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + /** Format: id */ + userId: string; + user: components['schemas']['UserLite']; + content: components['schemas']['PageBlock'][]; + variables: Record<string, never>[]; + title: string; + name: string; + summary: string | null; + hideTitleWhenPinned: boolean; + alignCenter: boolean; + font: string; + script: string; + eyeCatchingImageId: string | null; + eyeCatchingImage: components['schemas']['DriveFile'] | null; + attachedFiles: components['schemas']['DriveFile'][]; + likedCount: number; + isLiked?: boolean; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + PageBlock: { + id: string; + /** @enum {string} */ + type: 'text'; + text: string; + } | { + id: string; + /** @enum {string} */ + type: 'section'; + title: string; + children: components['schemas']['PageBlock'][]; + } | { + id: string; + /** @enum {string} */ + type: 'image'; + fileId: string | null; + } | { + id: string; + /** @enum {string} */ + type: 'note'; + detailed: boolean; + note: string | null; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + Channel: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + lastNotedAt: string | null; + name: string; + description: string | null; + /** Format: id */ + userId: string | null; + /** Format: url */ + bannerUrl: string | null; + pinnedNoteIds: string[]; + color: string; + isArchived: boolean; + usersCount: number; + notesCount: number; + isSensitive: boolean; + allowRenoteToExternal: boolean; + isFollowing?: boolean; + isFavorited?: boolean; + pinnedNotes?: components['schemas']['Note'][]; }; - }; - }; - }; - /** - * drive/folders/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - drive___folders___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - folderId: string; + QueueCount: { + waiting: number; + active: number; + completed: number; + failed: number; + delayed: number; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFolder']; + QueueMetrics: { + meta: { + count: number; + prevTS: number; + prevCount: number; + }; + data: number[]; + count: number; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + QueueJob: { + id: string; + name: string; + data: Record<string, never>; + opts: Record<string, never>; + timestamp: number; + processedOn?: number; + processedBy?: string; + finishedOn?: number; + progress: Record<string, never>; + attempts: number; + delay: number; + failedReason: string; + stacktrace: string[]; + returnValue: Record<string, never>; + isFailed: boolean; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + Antenna: { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + name: string; + keywords: string[][]; + excludeKeywords: string[][]; + /** @enum {string} */ + src: 'home' | 'all' | 'users' | 'list' | 'users_blacklist'; + /** Format: id */ + userListId: string | null; + users: string[]; + /** @default false */ + caseSensitive: boolean; + /** @default false */ + localOnly: boolean; + /** @default false */ + excludeBots: boolean; + /** @default false */ + withReplies: boolean; + withFile: boolean; + isActive: boolean; + /** @default false */ + hasUnreadNote: boolean; + /** @default false */ + notify: boolean; + /** @default false */ + excludeNotesInSensitiveChannel: boolean; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + Clip: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + lastClippedAt: string | null; + /** Format: id */ + userId: string; + user: components['schemas']['UserLite']; + name: string; + description: string | null; + isPublic: boolean; + favoritedCount: number; + isFavorited?: boolean; + notesCount?: number; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + FederationInstance: { + /** Format: id */ + id: string; + /** Format: date-time */ + firstRetrievedAt: string; + /** @example misskey.example.com */ + host: string; + usersCount: number; + notesCount: number; + followingCount: number; + followersCount: number; + isNotResponding: boolean; + isSuspended: boolean; + /** @enum {string} */ + suspensionState: 'none' | 'manuallySuspended' | 'goneSuspended' | 'autoSuspendedForNotResponding' | 'softwareSuspended'; + isBlocked: boolean; + /** @example misskey */ + softwareName: string | null; + softwareVersion: string | null; + /** @example true */ + openRegistrations: boolean | null; + name: string | null; + description: string | null; + maintainerName: string | null; + maintainerEmail: string | null; + isSilenced: boolean; + isMediaSilenced: boolean; + /** Format: url */ + iconUrl: string | null; + /** Format: url */ + faviconUrl: string | null; + themeColor: string | null; + /** Format: date-time */ + infoUpdatedAt: string | null; + /** Format: date-time */ + latestRequestReceivedAt: string | null; + moderationNote?: string | null; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + GalleryPost: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + /** Format: id */ + userId: string; + user: components['schemas']['UserLite']; + title: string; + description: string | null; + fileIds?: string[]; + files?: components['schemas']['DriveFile'][]; + tags?: string[]; + isSensitive: boolean; + likedCount: number; + isLiked?: boolean; }; - }; - }; - }; - /** - * drive/folders/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:drive* - */ - drive___folders___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - folderId: string; - name?: string; - /** Format: misskey:id */ - parentId?: string | null; + EmojiSimple: { + aliases: string[]; + name: string; + category: string | null; + url: string; + localOnly?: boolean; + isSensitive?: boolean; + roleIdsThatCanBeUsedThisEmojiAsReaction?: string[]; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFolder']; + EmojiDetailed: { + /** Format: id */ + id: string; + aliases: string[]; + name: string; + category: string | null; + /** @description The local host is represented with `null`. */ + host: string | null; + url: string; + license: string | null; + isSensitive: boolean; + localOnly: boolean; + roleIdsThatCanBeUsedThisEmojiAsReaction: string[]; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + EmojiDetailedAdmin: { + /** Format: id */ + id: string; + /** Format: date-time */ + updatedAt: string | null; + name: string; + /** @description The local host is represented with `null`. */ + host: string | null; + publicUrl: string; + originalUrl: string; + uri: string | null; + type: string | null; + aliases: string[]; + category: string | null; + license: string | null; + localOnly: boolean; + isSensitive: boolean; + roleIdsThatCanBeUsedThisEmojiAsReaction: { + /** Format: misskey:id */ + id: string; + name: string; + }[]; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + Flash: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + /** Format: id */ + userId: string; + user: components['schemas']['UserLite']; + title: string; + summary: string; + script: string; + /** @enum {string} */ + visibility: 'private' | 'public'; + likedCount: number | null; + isLiked?: boolean; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + Signin: { + id: string; + /** Format: date-time */ + createdAt: string; + ip: string; + headers: Record<string, never>; + success: boolean; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + RoleCondFormulaLogics: { + id: string; + /** @enum {string} */ + type: 'and' | 'or'; + values: components['schemas']['RoleCondFormulaValue'][]; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + RoleCondFormulaValueNot: { + id: string; + /** @enum {string} */ + type: 'not'; + value: components['schemas']['RoleCondFormulaValue']; }; - }; - }; - }; - /** - * drive/stream - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:drive* - */ - drive___stream: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - type?: string; + RoleCondFormulaValueIsLocalOrRemote: { + id: string; + /** @enum {string} */ + type: 'isLocal' | 'isRemote'; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['DriveFile'][]; + RoleCondFormulaValueUserSettingBooleanSchema: { + id: string; + /** @enum {string} */ + type: 'isSuspended' | 'isLocked' | 'isBot' | 'isCat' | 'isExplorable'; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + RoleCondFormulaValueAssignedRole: { + id: string; + /** @enum {string} */ + type: 'roleAssignedTo'; + /** + * Format: id + * @example xxxxxxxxxx + */ + roleId: string; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + RoleCondFormulaValueCreated: { + id: string; + /** @enum {string} */ + type: 'createdLessThan' | 'createdMoreThan'; + sec: number; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + RoleCondFormulaFollowersOrFollowingOrNotes: { + id: string; + /** @enum {string} */ + type: 'followersLessThanOrEq' | 'followersMoreThanOrEq' | 'followingLessThanOrEq' | 'followingMoreThanOrEq' | 'notesLessThanOrEq' | 'notesMoreThanOrEq'; + value: number; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + RoleCondFormulaValue: components['schemas']['RoleCondFormulaLogics'] | components['schemas']['RoleCondFormulaValueNot'] | components['schemas']['RoleCondFormulaValueIsLocalOrRemote'] | components['schemas']['RoleCondFormulaValueUserSettingBooleanSchema'] | components['schemas']['RoleCondFormulaValueAssignedRole'] | components['schemas']['RoleCondFormulaValueCreated'] | components['schemas']['RoleCondFormulaFollowersOrFollowingOrNotes']; + RoleLite: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** @example New Role */ + name: string; + /** @example #000000 */ + color: string | null; + iconUrl: string | null; + description: string; + /** @example false */ + isModerator: boolean; + /** @example false */ + isAdministrator: boolean; + /** @example 0 */ + displayOrder: number; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + Role: components['schemas']['RoleLite'] & { + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + /** @enum {string} */ + target: 'manual' | 'conditional'; + condFormula: components['schemas']['RoleCondFormulaValue']; + /** @example false */ + isPublic: boolean; + /** @example false */ + isExplorable: boolean; + /** @example false */ + asBadge: boolean; + /** @example false */ + preserveAssignmentOnMoveAccount: boolean; + /** @example false */ + canEditMembersByModerator: boolean; + policies: { + [key: string]: { + value?: number | boolean; + priority?: number; + useDefault?: boolean; + }; + }; + usersCount: number; }; - }; - }; - }; - /** - * email-address/available - * @description No description provided. - * - * **Credential required**: *No* - */ - 'email-address___available': { - requestBody: { - content: { - 'application/json': { - emailAddress: string; + RolePolicies: { + gtlAvailable: boolean; + ltlAvailable: boolean; + canPublicNote: boolean; + mentionLimit: number; + canInvite: boolean; + inviteLimit: number; + inviteLimitCycle: number; + inviteExpirationTime: number; + canManageCustomEmojis: boolean; + canManageAvatarDecorations: boolean; + canSearchNotes: boolean; + canUseTranslator: boolean; + canHideAds: boolean; + driveCapacityMb: number; + maxFileSizeMb: number; + uploadableFileTypes: string[]; + alwaysMarkNsfw: boolean; + canUpdateBioMedia: boolean; + pinLimit: number; + antennaLimit: number; + wordMuteLimit: number; + webhookLimit: number; + clipLimit: number; + noteEachClipsLimit: number; + userListLimit: number; + userEachUserListsLimit: number; + rateLimitFactor: number; + avatarDecorationLimit: number; + canImportAntennas: boolean; + canImportBlocking: boolean; + canImportFollowing: boolean; + canImportMuting: boolean; + canImportUserLists: boolean; + /** @enum {string} */ + chatAvailability: 'available' | 'readonly' | 'unavailable'; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - available: boolean; - reason: string | null; - }; + ReversiGameLite: { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + startedAt: string | null; + /** Format: date-time */ + endedAt: string | null; + isStarted: boolean; + isEnded: boolean; + /** Format: id */ + user1Id: string; + /** Format: id */ + user2Id: string; + user1: components['schemas']['UserLite']; + user2: components['schemas']['UserLite']; + /** Format: id */ + winnerId: string | null; + winner: components['schemas']['UserLite'] | null; + /** Format: id */ + surrenderedUserId: string | null; + /** Format: id */ + timeoutUserId: string | null; + black: number | null; + bw: string; + noIrregularRules: boolean; + isLlotheo: boolean; + canPutEverywhere: boolean; + loopedBoard: boolean; + timeLimitForEachTurn: number; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + ReversiGameDetailed: { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + startedAt: string | null; + /** Format: date-time */ + endedAt: string | null; + isStarted: boolean; + isEnded: boolean; + form1: Record<string, never> | null; + form2: Record<string, never> | null; + user1Ready: boolean; + user2Ready: boolean; + /** Format: id */ + user1Id: string; + /** Format: id */ + user2Id: string; + user1: components['schemas']['UserLite']; + user2: components['schemas']['UserLite']; + /** Format: id */ + winnerId: string | null; + winner: components['schemas']['UserLite'] | null; + /** Format: id */ + surrenderedUserId: string | null; + /** Format: id */ + timeoutUserId: string | null; + black: number | null; + bw: string; + noIrregularRules: boolean; + isLlotheo: boolean; + canPutEverywhere: boolean; + loopedBoard: boolean; + timeLimitForEachTurn: number; + logs: number[][]; + map: string[]; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + MetaLite: { + maintainerName: string | null; + maintainerEmail: string | null; + version: string; + providesTarball: boolean; + name: string | null; + shortName: string | null; + /** + * Format: url + * @example https://misskey.example.com + */ + uri: string; + description: string | null; + langs: string[]; + tosUrl: string | null; + /** @default https://github.com/misskey-dev/misskey */ + repositoryUrl: string | null; + /** @default https://github.com/misskey-dev/misskey/issues/new */ + feedbackUrl: string | null; + defaultDarkTheme: string | null; + defaultLightTheme: string | null; + disableRegistration: boolean; + emailRequiredForSignup: boolean; + enableHcaptcha: boolean; + hcaptchaSiteKey: string | null; + enableMcaptcha: boolean; + mcaptchaSiteKey: string | null; + mcaptchaInstanceUrl: string | null; + enableRecaptcha: boolean; + recaptchaSiteKey: string | null; + enableTurnstile: boolean; + turnstileSiteKey: string | null; + enableTestcaptcha: boolean; + googleAnalyticsMeasurementId: string | null; + swPublickey: string | null; + /** @default /assets/ai.png */ + mascotImageUrl: string; + bannerUrl: string | null; + serverErrorImageUrl: string | null; + infoImageUrl: string | null; + notFoundImageUrl: string | null; + iconUrl: string | null; + maxNoteTextLength: number; + ads: { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: url */ + url: string; + place: string; + ratio: number; + /** Format: url */ + imageUrl: string; + dayOfWeek: number; + }[]; + /** @default 0 */ + notesPerOneAd: number; + enableEmail: boolean; + enableServiceWorker: boolean; + translatorAvailable: boolean; + sentryForFrontend: { + options: { + dsn: string; + } & { + [key: string]: unknown; + }; + vueIntegration?: { + [key: string]: unknown; + } | null; + browserTracingIntegration?: { + [key: string]: unknown; + } | null; + replayIntegration?: { + [key: string]: unknown; + } | null; + } | null; + mediaProxy: string; + enableUrlPreview: boolean; + backgroundImageUrl: string | null; + impressumUrl: string | null; + logoImageUrl: string | null; + privacyPolicyUrl: string | null; + inquiryUrl: string | null; + serverRules: string[]; + themeColor: string | null; + policies: components['schemas']['RolePolicies']; + /** + * @default local + * @enum {string} + */ + noteSearchableScope: 'local' | 'global'; + maxFileSize: number; + /** @enum {string} */ + federation: 'all' | 'specified' | 'none'; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + MetaDetailedOnly: { + features?: { + registration: boolean; + emailRequiredForSignup: boolean; + localTimeline: boolean; + globalTimeline: boolean; + hcaptcha: boolean; + turnstile: boolean; + recaptcha: boolean; + objectStorage: boolean; + serviceWorker: boolean; + /** @default true */ + miauth: boolean; + }; + proxyAccountName: string | null; + /** @example false */ + requireSetup: boolean; + cacheRemoteFiles: boolean; + cacheRemoteSensitiveFiles: boolean; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + MetaDetailed: components['schemas']['MetaLite'] & components['schemas']['MetaDetailedOnly']; + SystemWebhook: { + id: string; + isActive: boolean; + /** Format: date-time */ + updatedAt: string; + /** Format: date-time */ + latestSentAt: string | null; + latestStatus: number | null; + name: string; + on: ('abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged')[]; + url: string; + secret: string; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + AbuseReportNotificationRecipient: { + id: string; + isActive: boolean; + /** Format: date-time */ + updatedAt: string; + name: string; + /** @enum {string} */ + method: 'email' | 'webhook'; + userId?: string; + user?: components['schemas']['UserLite']; + systemWebhookId?: string; + systemWebhook?: components['schemas']['SystemWebhook']; }; - }; - }; - }; - /** - * emoji - * @description No description provided. - * - * **Credential required**: *No* - */ - emoji: { - requestBody: { - content: { - 'application/json': { - name: string; + ChatMessage: { + id: string; + /** Format: date-time */ + createdAt: string; + fromUserId: string; + fromUser: components['schemas']['UserLite']; + toUserId?: string | null; + toUser?: components['schemas']['UserLite'] | null; + toRoomId?: string | null; + toRoom?: components['schemas']['ChatRoom'] | null; + text?: string | null; + fileId?: string | null; + file?: components['schemas']['DriveFile'] | null; + isRead?: boolean; + reactions: { + reaction: string; + user: components['schemas']['UserLite']; + }[]; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['EmojiDetailed']; + ChatMessageLite: { + id: string; + /** Format: date-time */ + createdAt: string; + fromUserId: string; + fromUser?: components['schemas']['UserLite']; + toUserId?: string | null; + toRoomId?: string | null; + text?: string | null; + fileId?: string | null; + file?: components['schemas']['DriveFile'] | null; + reactions: { + reaction: string; + user?: components['schemas']['UserLite'] | null; + }[]; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + ChatMessageLiteFor1on1: { + id: string; + /** Format: date-time */ + createdAt: string; + fromUserId: string; + toUserId: string; + text?: string | null; + fileId?: string | null; + file?: components['schemas']['DriveFile'] | null; + reactions: { + reaction: string; + }[]; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + ChatMessageLiteForRoom: { + id: string; + /** Format: date-time */ + createdAt: string; + fromUserId: string; + fromUser: components['schemas']['UserLite']; + toRoomId: string; + text?: string | null; + fileId?: string | null; + file?: components['schemas']['DriveFile'] | null; + reactions: { + reaction: string; + user: components['schemas']['UserLite']; + }[]; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + ChatRoom: { + id: string; + /** Format: date-time */ + createdAt: string; + ownerId: string; + owner: components['schemas']['UserLite']; + name: string; + description: string; + isMuted?: boolean; + invitationExists?: boolean; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + ChatRoomInvitation: { + id: string; + /** Format: date-time */ + createdAt: string; + userId: string; + user: components['schemas']['UserLite']; + roomId: string; + room: components['schemas']['ChatRoom']; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + ChatRoomMembership: { + id: string; + /** Format: date-time */ + createdAt: string; + userId: string; + user?: components['schemas']['UserLite']; + roomId: string; + room?: components['schemas']['ChatRoom']; }; - }; }; - }; - /** - * emojis - * @description No description provided. - * - * **Credential required**: *No* - */ - emojis: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - emojis: components['schemas']['EmojiSimple'][]; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +}; +export type $defs = Record<string, never>; +export interface operations { + 'admin___abuse-report___notification-recipient___create': { + requestBody: { + content: { + 'application/json': { + isActive: boolean; + name: string; + /** @enum {string} */ + method: 'email' | 'webhook'; + /** Format: misskey:id */ + userId?: string; + /** Format: misskey:id */ + systemWebhookId?: string; + }; + }; }; - }; - }; - }; - /** - * endpoint - * @description No description provided. - * - * **Credential required**: *No* - */ - endpoint: { - requestBody: { - content: { - 'application/json': { - endpoint: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['AbuseReportNotificationRecipient']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - params: { - name: string; - type: string; - }[]; - } | null; - }; - }; - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___abuse-report___notification-recipient___delete': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * endpoints - * @description No description provided. - * - * **Credential required**: *No* - */ - endpoints: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': string[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___abuse-report___notification-recipient___list': { + requestBody: { + content: { + 'application/json': { + method?: ('email' | 'webhook')[]; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['AbuseReportNotificationRecipient'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * export-custom-emojis - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'export-custom-emojis': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___abuse-report___notification-recipient___show': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + }; + }; }; - }; - }; - }; - /** - * federation/followers - * @description No description provided. - * - * **Credential required**: *No* - */ - federation___followers: { - requestBody: { - content: { - 'application/json': { - host: string; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['AbuseReportNotificationRecipient']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Following'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___abuse-report___notification-recipient___update': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + isActive: boolean; + name: string; + /** @enum {string} */ + method: 'email' | 'webhook'; + /** Format: misskey:id */ + userId?: string; + /** Format: misskey:id */ + systemWebhookId?: string; + }; + }; }; - }; - }; - }; - /** - * federation/following - * @description No description provided. - * - * **Credential required**: *No* - */ - federation___following: { - requestBody: { - content: { - 'application/json': { - host: string; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['AbuseReportNotificationRecipient']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Following'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___abuse-user-reports': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default null */ + state?: string | null; + /** + * @default combined + * @enum {string} + */ + reporterOrigin?: 'combined' | 'local' | 'remote'; + /** + * @default combined + * @enum {string} + */ + targetUserOrigin?: 'combined' | 'local' | 'remote'; + }; + }; }; - }; - }; - }; - /** - * federation/instances - * @description No description provided. - * - * **Credential required**: *No* - */ - federation___instances: { - requestBody: { - content: { - 'application/json': { - /** @description Omit or use `null` to not filter by host. */ - host?: string | null; - blocked?: boolean | null; - notResponding?: boolean | null; - suspended?: boolean | null; - silenced?: boolean | null; - federating?: boolean | null; - subscribing?: boolean | null; - publishing?: boolean | null; - /** @default 30 */ - limit?: number; - /** @default 0 */ - offset?: number; - /** @enum {string|null} */ - sort?: '+pubSub' | '-pubSub' | '+notes' | '-notes' | '+users' | '-users' | '+following' | '-following' | '+followers' | '-followers' | '+firstRetrievedAt' | '-firstRetrievedAt' | '+latestRequestReceivedAt' | '-latestRequestReceivedAt' | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + comment: string; + /** @example false */ + resolved: boolean; + /** Format: id */ + reporterId: string; + /** Format: id */ + targetUserId: string; + /** Format: id */ + assigneeId: string | null; + reporter: components['schemas']['UserDetailedNotMe']; + targetUser: components['schemas']['UserDetailedNotMe']; + assignee: components['schemas']['UserDetailedNotMe'] | null; + forwarded: boolean; + /** @enum {string|null} */ + resolvedAs: 'accept' | 'reject' | null; + moderationNote: string; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['FederationInstance'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___accounts___create: { + requestBody: { + content: { + 'application/json': { + username: string; + password: string; + setupPassword?: string | null; + }; + }; }; - }; - }; - }; - /** - * federation/show-instance - * @description No description provided. - * - * **Credential required**: *No* - */ - 'federation___show-instance': { - requestBody: { - content: { - 'application/json': { - host: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['MeDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['FederationInstance'] | null; - }; - }; - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___accounts___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * federation/stats - * @description No description provided. - * - * **Credential required**: *No* - */ - federation___stats: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - topSubInstances: components['schemas']['FederationInstance'][]; - otherFollowersCount: number; - topPubInstances: components['schemas']['FederationInstance'][]; - otherFollowingCount: number; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___accounts___find-by-email': { + requestBody: { + content: { + 'application/json': { + email: string; + }; + }; }; - }; - }; - }; - /** - * federation/update-remote-user - * @description No description provided. - * - * **Credential required**: *No* - */ - 'federation___update-remote-user': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailedNotMe']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___ad___create: { + requestBody: { + content: { + 'application/json': { + url: string; + memo: string; + place: string; + priority: string; + ratio: number; + expiresAt: number; + startsAt: number; + imageUrl: string; + dayOfWeek: number; + }; + }; }; - }; - }; - }; - /** - * federation/users - * @description No description provided. - * - * **Credential required**: *No* - */ - federation___users: { - requestBody: { - content: { - 'application/json': { - host: string; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Ad']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailedNotMe'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___ad___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + }; + }; }; - }; - }; - }; - /** - * fetch-external-resources - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'fetch-external-resources': { - requestBody: { - content: { - 'application/json': { - url: string; - hash: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - type: string; - data: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + admin___ad___list: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default null */ + publishing?: boolean | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Ad'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * fetch-rss - * @description No description provided. - * - * **Credential required**: *No* - */ - 'fetch-rss': { - requestBody: { - content: { - 'application/json': { - url: string; + admin___ad___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + memo?: string; + url?: string; + imageUrl?: string; + place?: string; + priority?: string; + ratio?: number; + expiresAt?: number; + startsAt?: number; + dayOfWeek?: number; + }; + }; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - image?: { - link?: string; - url: string; - title?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; }; - paginationLinks?: { - self?: string; - first?: string; - next?: string; - last?: string; - prev?: string; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; }; - link?: string; - title?: string; - items: { - link?: string; - guid?: string; - title?: string; - pubDate?: string; - creator?: string; - summary?: string; - content?: string; - isoDate?: string; - categories?: string[]; - contentSnippet?: string; - enclosure?: { - url: string; - length?: number; - type?: string; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; }; - }[]; - feedUrl?: string; - description?: string; - itunes?: { - image?: string; - owner?: { - name?: string; - email?: string; - }; - author?: string; - summary?: string; - explicit?: string; - categories?: string[]; - keywords?: string[]; - [key: string]: unknown; }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - }; - }; - /** - * flash/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash* - */ - flash___create: { - requestBody: { - content: { - 'application/json': { - title: string; - summary: string; - script: string; - permissions: string[]; - /** - * @default public - * @enum {string} - */ - visibility?: 'public' | 'private'; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Flash']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___announcements___create: { + requestBody: { + content: { + 'application/json': { + title: string; + text: string; + imageUrl: string | null; + /** + * @default info + * @enum {string} + */ + icon?: 'info' | 'warning' | 'error' | 'success'; + /** + * @default normal + * @enum {string} + */ + display?: 'normal' | 'banner' | 'dialog'; + /** @default false */ + forExistingUsers?: boolean; + /** @default false */ + silence?: boolean; + /** @default false */ + needConfirmationToRead?: boolean; + /** + * Format: misskey:id + * @default null + */ + userId?: string | null; + }; + }; }; - }; - }; - }; - /** - * flash/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash* - */ - flash___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - flashId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string | null; + title: string; + text: string; + imageUrl: string | null; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___announcements___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + }; + }; }; - }; - }; - }; - /** - * flash/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - flash___featured: { - requestBody: { - content: { - 'application/json': { - /** @default 0 */ - offset?: number; - /** @default 10 */ - limit?: number; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Flash'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___announcements___list: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** Format: misskey:id */ + userId?: string | null; + /** + * @default active + * @enum {string} + */ + status?: 'all' | 'active' | 'archived'; + }; + }; }; - }; - }; - }; - /** - * flash/like - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash-likes* - */ - flash___like: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - flashId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string | null; + text: string; + title: string; + imageUrl: string | null; + reads: number; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___announcements___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + title?: string; + text?: string; + imageUrl?: string | null; + /** @enum {string} */ + icon?: 'info' | 'warning' | 'error' | 'success'; + /** @enum {string} */ + display?: 'normal' | 'banner' | 'dialog'; + forExistingUsers?: boolean; + silence?: boolean; + needConfirmationToRead?: boolean; + isActive?: boolean; + }; + }; }; - }; - }; - }; - /** - * flash/my - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:flash* - */ - flash___my: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Flash'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___avatar-decorations___create': { + requestBody: { + content: { + 'application/json': { + name: string; + description: string; + url: string; + roleIdsThatCanBeUsedThisDecoration?: string[]; + }; + }; }; - }; - }; - }; - /** - * flash/my-likes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:flash-likes* - */ - 'flash___my-likes': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string | null; + name: string; + description: string; + url: string; + roleIdsThatCanBeUsedThisDecoration: string[]; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - flash: components['schemas']['Flash']; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___avatar-decorations___delete': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + }; + }; }; - }; - }; - }; - /** - * flash/show - * @description No description provided. - * - * **Credential required**: *No* - */ - flash___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - flashId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Flash']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___avatar-decorations___list': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** Format: misskey:id */ + userId?: string | null; + }; + }; }; - }; - }; - }; - /** - * flash/unlike - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash-likes* - */ - flash___unlike: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - flashId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string | null; + name: string; + description: string; + url: string; + roleIdsThatCanBeUsedThisDecoration: string[]; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___avatar-decorations___update': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + name?: string; + description?: string; + url?: string; + roleIdsThatCanBeUsedThisDecoration?: string[]; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * flash/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:flash* - */ - flash___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - flashId: string; - title?: string; - summary?: string; - script?: string; - permissions?: string[]; - /** @enum {string} */ - visibility?: 'public' | 'private'; + admin___captcha___current: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** @enum {string} */ + provider: 'none' | 'hcaptcha' | 'mcaptcha' | 'recaptcha' | 'turnstile' | 'testcaptcha'; + hcaptcha: { + siteKey: string | null; + secretKey: string | null; + }; + mcaptcha: { + siteKey: string | null; + secretKey: string | null; + instanceUrl: string | null; + }; + recaptcha: { + siteKey: string | null; + secretKey: string | null; + }; + turnstile: { + siteKey: string | null; + secretKey: string | null; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___captcha___save: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + provider: 'none' | 'hcaptcha' | 'mcaptcha' | 'recaptcha' | 'turnstile' | 'testcaptcha'; + captchaResult?: string | null; + sitekey?: string | null; + secret?: string | null; + instanceUrl?: string | null; + }; + }; }; - }; - }; - }; - /** - * following/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - following___create: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - withReplies?: boolean; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserLite']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___delete-account': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * following/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - following___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserLite']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___delete-all-files-of-a-user': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * following/invalidate - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - following___invalidate: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserLite']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___drive___clean-remote-files': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * following/requests/accept - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - following___requests___accept: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + admin___drive___cleanup: { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___drive___files: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** Format: misskey:id */ + userId?: string | null; + type?: string | null; + /** + * @default local + * @enum {string} + */ + origin?: 'combined' | 'local' | 'remote'; + /** + * @description The local host is represented with `null`. + * @default null + */ + hostname?: string | null; + }; + }; }; - }; - }; - }; - /** - * following/requests/cancel - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - following___requests___cancel: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFile'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserLite']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___drive___show-file': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + } | { + url: string; + }; + }; }; - }; - }; - }; - /** - * following/requests/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:following* - */ - following___requests___list: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + /** Format: date-time */ + createdAt: string; + /** + * Format: id + * @example xxxxxxxxxx + */ + userId: string | null; + /** @description The local host is represented with `null`. */ + userHost: string | null; + /** + * Format: md5 + * @example 15eca7fba0480996e2245f5185bf39f2 + */ + md5: string; + /** @example 192.jpg */ + name: string; + /** @example image/jpeg */ + type: string; + /** @example 51469 */ + size: number; + comment: string | null; + blurhash: string | null; + properties: { + width?: number; + height?: number; + orientation?: number; + avgColor?: string; + }; + /** @example true */ + storedInternal: boolean | null; + /** Format: url */ + url: string | null; + /** Format: url */ + thumbnailUrl: string | null; + /** Format: url */ + webpublicUrl: string | null; + accessKey: string | null; + thumbnailAccessKey: string | null; + webpublicAccessKey: string | null; + uri: string | null; + src: string | null; + /** + * Format: id + * @example xxxxxxxxxx + */ + folderId: string | null; + isSensitive: boolean; + isLink: boolean; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - follower: components['schemas']['UserLite']; - followee: components['schemas']['UserLite']; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___emoji___add: { + requestBody: { + content: { + 'application/json': { + name: string; + /** Format: misskey:id */ + fileId: string; + /** @description Use `null` to reset the category. */ + category?: string | null; + aliases?: string[]; + license?: string | null; + isSensitive?: boolean; + localOnly?: boolean; + roleIdsThatCanBeUsedThisEmojiAsReaction?: string[]; + }; + }; }; - }; - }; - }; - /** - * following/requests/reject - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - following___requests___reject: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['EmojiDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___emoji___add-aliases-bulk': { + requestBody: { + content: { + 'application/json': { + ids: string[]; + aliases: string[]; + }; + }; }; - }; - }; - }; - /** - * following/requests/sent - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:following* - */ - following___requests___sent: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - follower: components['schemas']['UserLite']; - followee: components['schemas']['UserLite']; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___emoji___copy: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + emojiId: string; + }; + }; }; - }; - }; - }; - /** - * following/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - following___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @enum {string} */ - notify?: 'normal' | 'none'; - withReplies?: boolean; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserLite']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___emoji___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + }; + }; }; - }; - }; - }; - /** - * following/update-all - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:following* - */ - 'following___update-all': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - notify?: 'normal' | 'none'; - withReplies?: boolean; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___emoji___delete-bulk': { + requestBody: { + content: { + 'application/json': { + ids: string[]; + }; + }; }; - }; - }; - }; - /** - * gallery/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - gallery___featured: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['GalleryPost'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___emoji___import-zip': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * gallery/popular - * @description No description provided. - * - * **Credential required**: *No* - */ - gallery___popular: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['GalleryPost'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___emoji___list: { + requestBody: { + content: { + 'application/json': { + /** @default null */ + query?: string | null; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - }; - }; - /** - * gallery/posts - * @description No description provided. - * - * **Credential required**: *No* - */ - gallery___posts: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + aliases: string[]; + name: string; + category: string | null; + /** @description The local host is represented with `null`. The field exists for compatibility with other API endpoints that return files. */ + host: string | null; + url: string; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['GalleryPost'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___emoji___list-remote': { + requestBody: { + content: { + 'application/json': { + /** @default null */ + query?: string | null; + /** + * @description Use `null` to represent the local host. + * @default null + */ + host?: string | null; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - }; - }; - /** - * gallery/posts/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery* - */ - gallery___posts___create: { - requestBody: { - content: { - 'application/json': { - title: string; - description?: string | null; - fileIds: string[]; - /** @default false */ - isSensitive?: boolean; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + aliases: string[]; + name: string; + category: string | null; + /** @description The local host is represented with `null`. */ + host: string | null; + url: string; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['GalleryPost']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___emoji___remove-aliases-bulk': { + requestBody: { + content: { + 'application/json': { + ids: string[]; + aliases: string[]; + }; + }; }; - }; - }; - }; - /** - * gallery/posts/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery* - */ - gallery___posts___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - postId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___emoji___set-aliases-bulk': { + requestBody: { + content: { + 'application/json': { + ids: string[]; + aliases: string[]; + }; + }; }; - }; - }; - }; - /** - * gallery/posts/like - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery-likes* - */ - gallery___posts___like: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - postId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___emoji___set-category-bulk': { + requestBody: { + content: { + 'application/json': { + ids: string[]; + /** @description Use `null` to reset the category. */ + category?: string | null; + }; + }; }; - }; - }; - }; - /** - * gallery/posts/show - * @description No description provided. - * - * **Credential required**: *No* - */ - gallery___posts___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - postId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['GalleryPost']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___emoji___set-license-bulk': { + requestBody: { + content: { + 'application/json': { + ids: string[]; + /** @description Use `null` to reset the license. */ + license?: string | null; + }; + }; }; - }; - }; - }; - /** - * gallery/posts/unlike - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery-likes* - */ - gallery___posts___unlike: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - postId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___emoji___update: { + requestBody: { + content: { + 'application/json': ({ + /** Format: misskey:id */ + id: string; + } | { + name: string; + }) & { + /** Format: misskey:id */ + fileId?: string; + /** @description Use `null` to reset the category. */ + category?: string | null; + aliases?: string[]; + license?: string | null; + isSensitive?: boolean; + localOnly?: boolean; + roleIdsThatCanBeUsedThisEmojiAsReaction?: string[]; + }; + }; }; - }; - }; - }; - /** - * gallery/posts/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:gallery* - */ - gallery___posts___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - postId: string; - title?: string; - description?: string | null; - fileIds?: string[]; - /** @default false */ - isSensitive?: boolean; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['GalleryPost']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___federation___delete-all-files': { + requestBody: { + content: { + 'application/json': { + host: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * get-avatar-decorations - * @description No description provided. - * - * **Credential required**: *No* - */ - 'get-avatar-decorations': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** - * Format: id - * @example xxxxxxxxxx - */ - id: string; - name: string; - description: string; - url: string; - roleIdsThatCanBeUsedThisDecoration: string[]; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___federation___refresh-remote-instance-metadata': { + requestBody: { + content: { + 'application/json': { + host: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * get-online-users-count - * @description No description provided. - * - * **Credential required**: *No* - */ - 'get-online-users-count': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - count: number; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___federation___remove-all-following': { + requestBody: { + content: { + 'application/json': { + host: string; + }; + }; }; - }; - }; - }; - /** - * hashtags/list - * @description No description provided. - * - * **Credential required**: *No* - */ - hashtags___list: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** @default false */ - attachedToUserOnly?: boolean; - /** @default false */ - attachedToLocalUserOnly?: boolean; - /** @default false */ - attachedToRemoteUserOnly?: boolean; - /** @enum {string} */ - sort: '+mentionedUsers' | '-mentionedUsers' | '+mentionedLocalUsers' | '-mentionedLocalUsers' | '+mentionedRemoteUsers' | '-mentionedRemoteUsers' | '+attachedUsers' | '-attachedUsers' | '+attachedLocalUsers' | '-attachedLocalUsers' | '+attachedRemoteUsers' | '-attachedRemoteUsers'; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Hashtag'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___federation___update-instance': { + requestBody: { + content: { + 'application/json': { + host: string; + isSuspended?: boolean; + moderationNote?: string; + }; + }; }; - }; - }; - }; - /** - * hashtags/search - * @description No description provided. - * - * **Credential required**: *No* - */ - hashtags___search: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - query: string; - /** @default 0 */ - offset?: number; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': string[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___forward-abuse-user-report': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + reportId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * hashtags/show - * @description No description provided. - * - * **Credential required**: *No* - */ - hashtags___show: { - requestBody: { - content: { - 'application/json': { - tag: string; + 'admin___get-index-stats': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + tablename: string; + indexname: string; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Hashtag']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___get-table-stats': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + [key: string]: { + count: number; + size: number; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * hashtags/trend - * @description No description provided. - * - * **Credential required**: *No* - */ - hashtags___trend: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - tag: string; - chart: number[]; - usersCount: number; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___get-user-ips': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * hashtags/users - * @description No description provided. - * - * **Credential required**: *No* - */ - hashtags___users: { - requestBody: { - content: { - 'application/json': { - tag: string; - /** @default 10 */ - limit?: number; - /** @enum {string} */ - sort: '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt'; - /** - * @default all - * @enum {string} - */ - state?: 'all' | 'alive'; - /** - * @default local - * @enum {string} - */ - origin?: 'combined' | 'local' | 'remote'; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + ip: string; + /** Format: date-time */ + createdAt: string; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailed'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + admin___invite___create: { + requestBody: { + content: { + 'application/json': { + /** @default 1 */ + count?: number; + expiresAt?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['InviteCode'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - i: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['MeDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + admin___invite___list: { + requestBody: { + content: { + 'application/json': { + /** @default 30 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** + * @default all + * @enum {string} + */ + type?: 'unused' | 'used' | 'expired' | 'all'; + /** @enum {string} */ + sort?: '+createdAt' | '-createdAt' | '+usedAt' | '-usedAt'; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['InviteCode'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/2fa/done - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - i___2fa___done: { - requestBody: { - content: { - 'application/json': { - token: string; + admin___meta: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + cacheRemoteFiles: boolean; + cacheRemoteSensitiveFiles: boolean; + emailRequiredForSignup: boolean; + enableHcaptcha: boolean; + hcaptchaSiteKey: string | null; + enableMcaptcha: boolean; + mcaptchaSiteKey: string | null; + mcaptchaInstanceUrl: string | null; + enableRecaptcha: boolean; + recaptchaSiteKey: string | null; + enableTurnstile: boolean; + turnstileSiteKey: string | null; + enableTestcaptcha: boolean; + googleAnalyticsMeasurementId: string | null; + swPublickey: string | null; + /** @default /assets/ai.png */ + mascotImageUrl: string | null; + bannerUrl: string | null; + serverErrorImageUrl: string | null; + infoImageUrl: string | null; + notFoundImageUrl: string | null; + iconUrl: string | null; + app192IconUrl: string | null; + app512IconUrl: string | null; + enableEmail: boolean; + enableServiceWorker: boolean; + translatorAvailable: boolean; + silencedHosts?: string[]; + mediaSilencedHosts: string[]; + pinnedUsers: string[]; + hiddenTags: string[]; + blockedHosts: string[]; + sensitiveWords: string[]; + prohibitedWords: string[]; + prohibitedWordsForNameOfUser: string[]; + bannedEmailDomains?: string[]; + preservedUsernames: string[]; + hcaptchaSecretKey: string | null; + mcaptchaSecretKey: string | null; + recaptchaSecretKey: string | null; + turnstileSecretKey: string | null; + sensitiveMediaDetection: string; + sensitiveMediaDetectionSensitivity: string; + setSensitiveFlagAutomatically: boolean; + enableSensitiveMediaDetectionForVideos: boolean; + /** Format: id */ + proxyAccountId: string; + email: string | null; + smtpSecure: boolean; + smtpHost: string | null; + smtpPort: number | null; + smtpUser: string | null; + smtpPass: string | null; + swPrivateKey: string | null; + useObjectStorage: boolean; + objectStorageBaseUrl: string | null; + objectStorageBucket: string | null; + objectStoragePrefix: string | null; + objectStorageEndpoint: string | null; + objectStorageRegion: string | null; + objectStoragePort: number | null; + objectStorageAccessKey: string | null; + objectStorageSecretKey: string | null; + objectStorageUseSSL: boolean; + objectStorageUseProxy: boolean; + objectStorageSetPublicRead: boolean; + enableIpLogging: boolean; + enableActiveEmailValidation: boolean; + enableVerifymailApi: boolean; + verifymailAuthKey: string | null; + enableTruemailApi: boolean; + truemailInstance: string | null; + truemailAuthKey: string | null; + enableChartsForRemoteUser: boolean; + enableChartsForFederatedInstances: boolean; + enableStatsForFederatedInstances: boolean; + enableServerMachineStats: boolean; + enableIdenticonGeneration: boolean; + manifestJsonOverride: string; + policies: Record<string, never>; + enableFanoutTimeline: boolean; + enableFanoutTimelineDbFallback: boolean; + perLocalUserUserTimelineCacheMax: number; + perRemoteUserUserTimelineCacheMax: number; + perUserHomeTimelineCacheMax: number; + perUserListTimelineCacheMax: number; + enableReactionsBuffering: boolean; + notesPerOneAd: number; + backgroundImageUrl: string | null; + deeplAuthKey: string | null; + deeplIsPro: boolean; + defaultDarkTheme: string | null; + defaultLightTheme: string | null; + description: string | null; + disableRegistration: boolean; + impressumUrl: string | null; + maintainerEmail: string | null; + maintainerName: string | null; + name: string | null; + shortName: string | null; + objectStorageS3ForcePathStyle: boolean; + privacyPolicyUrl: string | null; + inquiryUrl: string | null; + repositoryUrl: string | null; + /** + * @deprecated + * @description [Deprecated] Use "urlPreviewSummaryProxyUrl" instead. + */ + summalyProxy: string | null; + themeColor: string | null; + tosUrl: string | null; + uri: string; + version: string; + urlPreviewEnabled: boolean; + urlPreviewAllowRedirect: boolean; + urlPreviewTimeout: number; + urlPreviewMaximumContentLength: number; + urlPreviewRequireContentLength: boolean; + urlPreviewUserAgent: string | null; + urlPreviewSummaryProxyUrl: string | null; + /** @enum {string} */ + federation: 'all' | 'specified' | 'none'; + federationHosts: string[]; + deliverSuspendedSoftware: { + software: string; + versionRange: string; + }[]; + singleUserMode: boolean; + /** @enum {string} */ + ugcVisibilityForVisitor: 'all' | 'local' | 'none'; + proxyRemoteFiles: boolean; + signToActivityPubGet: boolean; + allowExternalApRedirect: boolean; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - backupCodes: string[]; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___promo___create: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + expiresAt: number; + }; + }; }; - }; - }; - }; - /** - * i/2fa/key-done - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___2fa___key-done': { - requestBody: { - content: { - 'application/json': { - password: string; - token?: string | null; - name: string; - credential: Record<string, never>; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - id: string; - name: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___queue___clear: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + /** @enum {string} */ + state: '*' | 'completed' | 'wait' | 'active' | 'paused' | 'prioritized' | 'delayed' | 'failed'; + }; + }; }; - }; - }; - }; - /** - * i/2fa/password-less - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___2fa___password-less': { - requestBody: { - content: { - 'application/json': { - value: boolean; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___queue___deliver-delayed': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': [ + string, + number, + ][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/2fa/register - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - i___2fa___register: { - requestBody: { - content: { - 'application/json': { - password: string; - token?: string | null; + 'admin___queue___inbox-delayed': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': [ + string, + number, + ][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - qr: string; - url: string; - secret: string; - label: string; - issuer: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + admin___queue___jobs: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + state: ('active' | 'wait' | 'delayed' | 'completed' | 'failed' | 'paused')[]; + search?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['QueueJob'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/2fa/register-key - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___2fa___register-key': { - requestBody: { - content: { - 'application/json': { - password: string; - token?: string | null; + 'admin___queue___promote-jobs': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + }; + }; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - rp: { - id?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; }; - user: { - id: string; - name: string; - displayName: string; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; }; - challenge: string; - pubKeyCredParams: { - type: string; - alg: number; - }[]; - timeout: number | null; - excludeCredentials: (({ - id: string; - type: string; - transports: ('ble' | 'cable' | 'hybrid' | 'internal' | 'nfc' | 'smart-card' | 'usb')[]; - })[]) | null; - authenticatorSelection: ({ - /** @enum {string} */ - authenticatorAttachment: 'cross-platform' | 'platform'; - requireResidentKey: boolean; - /** @enum {string} */ - userVerification: 'discouraged' | 'preferred' | 'required'; - }) | null; - /** @enum {string|null} */ - attestation: 'direct' | 'enterprise' | 'indirect' | 'none' | null; - extensions: ({ - appid: string | null; - credProps: boolean | null; - hmacCreateSecret: boolean | null; - }) | null; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - }; - }; - /** - * i/2fa/remove-key - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___2fa___remove-key': { - requestBody: { - content: { - 'application/json': { - password: string; - token?: string | null; - credentialId: string; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___queue___queue-stats': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** @enum {string} */ + name: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + qualifiedName: string; + counts: { + [key: string]: number; + }; + isPaused: boolean; + metrics: { + completed: components['schemas']['QueueMetrics']; + failed: components['schemas']['QueueMetrics']; + }; + db: { + version: string; + /** @enum {string} */ + mode: 'cluster' | 'standalone' | 'sentinel'; + runId: string; + processId: string; + port: number; + os: string; + uptime: number; + memory: { + total: number; + used: number; + fragmentationRatio: number; + peak: number; + }; + clients: { + blocked: number; + connected: number; + }; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/2fa/unregister - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - i___2fa___unregister: { - requestBody: { - content: { - 'application/json': { - password: string; - token?: string | null; + admin___queue___queues: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** @enum {string} */ + name: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + counts: { + [key: string]: number; + }; + isPaused: boolean; + metrics: { + completed: components['schemas']['QueueMetrics']; + failed: components['schemas']['QueueMetrics']; + }; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___queue___remove-job': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + jobId: string; + }; + }; }; - }; - }; - }; - /** - * i/2fa/update-key - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___2fa___update-key': { - requestBody: { - content: { - 'application/json': { - name: string; - credentialId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___queue___retry-job': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + jobId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'admin___queue___show-job': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + queue: 'system' | 'endedPollNotification' | 'deliver' | 'inbox' | 'db' | 'relationship' | 'objectStorage' | 'userWebhookDeliver' | 'systemWebhookDeliver'; + jobId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['QueueJob']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/apps - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - i___apps: { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - sort?: '+createdAt' | '-createdAt' | '+lastUsedAt' | '-lastUsedAt'; + admin___queue___stats: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + deliver: components['schemas']['QueueCount']; + inbox: components['schemas']['QueueCount']; + db: components['schemas']['QueueCount']; + objectStorage: components['schemas']['QueueCount']; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - name?: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - lastUsedAt?: string; - permission: string[]; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + admin___relays___add: { + requestBody: { + content: { + 'application/json': { + inbox: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + /** Format: url */ + inbox: string; + /** + * @default requesting + * @enum {string} + */ + status: 'requesting' | 'accepted' | 'rejected'; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/authorized-apps - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___authorized-apps': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** @default 0 */ - offset?: number; - /** - * @default desc - * @enum {string} - */ - sort?: 'desc' | 'asc'; + admin___relays___list: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + /** Format: url */ + inbox: string; + /** + * @default requesting + * @enum {string} + */ + status: 'requesting' | 'accepted' | 'rejected'; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** Format: misskey:id */ - id: string; - name: string; - callbackUrl: string | null; - permission: string[]; - isAuthorized?: boolean; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + admin___relays___remove: { + requestBody: { + content: { + 'application/json': { + inbox: string; + }; + }; }; - }; - }; - }; - /** - * i/change-password - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___change-password': { - requestBody: { - content: { - 'application/json': { - currentPassword: string; - newPassword: string; - token?: string | null; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___reset-password': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + password: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'admin___resolve-abuse-user-report': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + reportId: string; + /** @enum {string|null} */ + resolvedAs?: 'accept' | 'reject' | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/claim-achievement - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'i___claim-achievement': { - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - name: 'notes1' | 'notes10' | 'notes100' | 'notes500' | 'notes1000' | 'notes5000' | 'notes10000' | 'notes20000' | 'notes30000' | 'notes40000' | 'notes50000' | 'notes60000' | 'notes70000' | 'notes80000' | 'notes90000' | 'notes100000' | 'login3' | 'login7' | 'login15' | 'login30' | 'login60' | 'login100' | 'login200' | 'login300' | 'login400' | 'login500' | 'login600' | 'login700' | 'login800' | 'login900' | 'login1000' | 'passedSinceAccountCreated1' | 'passedSinceAccountCreated2' | 'passedSinceAccountCreated3' | 'loggedInOnBirthday' | 'loggedInOnNewYearsDay' | 'noteClipped1' | 'noteFavorited1' | 'myNoteFavorited1' | 'profileFilled' | 'markedAsCat' | 'following1' | 'following10' | 'following50' | 'following100' | 'following300' | 'followers1' | 'followers10' | 'followers50' | 'followers100' | 'followers300' | 'followers500' | 'followers1000' | 'collectAchievements30' | 'viewAchievements3min' | 'iLoveMisskey' | 'foundTreasure' | 'client30min' | 'client60min' | 'noteDeletedWithin1min' | 'postedAtLateNight' | 'postedAt0min0sec' | 'selfQuote' | 'htl20npm' | 'viewInstanceChart' | 'outputHelloWorldOnScratchpad' | 'open3windows' | 'driveFolderCircularReference' | 'reactWithoutRead' | 'clickedClickHere' | 'justPlainLucky' | 'setNameToSyuilo' | 'cookieClicked' | 'brainDiver' | 'smashTestNotificationButton' | 'tutorialCompleted' | 'bubbleGameExplodingHead' | 'bubbleGameDoubleExplodingHead'; + admin___roles___assign: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + /** Format: misskey:id */ + userId: string; + expiresAt?: number | null; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + admin___roles___create: { + requestBody: { + content: { + 'application/json': { + name: string; + description: string; + color: string | null; + iconUrl: string | null; + /** @enum {string} */ + target: 'manual' | 'conditional'; + condFormula: Record<string, never>; + isPublic: boolean; + isModerator: boolean; + isAdministrator: boolean; + /** @default false */ + isExplorable?: boolean; + asBadge: boolean; + preserveAssignmentOnMoveAccount?: boolean; + canEditMembersByModerator: boolean; + displayOrder: number; + policies: Record<string, never>; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Role']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + admin___roles___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/delete-account - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___delete-account': { - requestBody: { - content: { - 'application/json': { - password: string; - token?: string | null; + admin___roles___list: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Role'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + admin___roles___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Role']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/export-antennas - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___export-antennas': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + admin___roles___unassign: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/export-blocking - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___export-blocking': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + admin___roles___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + name?: string; + description?: string; + color?: string | null; + iconUrl?: string | null; + /** @enum {string} */ + target?: 'manual' | 'conditional'; + condFormula?: Record<string, never>; + isPublic?: boolean; + isModerator?: boolean; + isAdministrator?: boolean; + isExplorable?: boolean; + asBadge?: boolean; + preserveAssignmentOnMoveAccount?: boolean; + canEditMembersByModerator?: boolean; + displayOrder?: number; + policies?: Record<string, never>; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/export-clips - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___export-clips': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___roles___update-default-policies': { + requestBody: { + content: { + 'application/json': { + policies: Record<string, never>; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/export-favorites - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___export-favorites': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + admin___roles___users: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + /** Format: date-time */ + createdAt: string; + user: components['schemas']['UserDetailed']; + /** Format: date-time */ + expiresAt: string | null; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'admin___send-email': { + requestBody: { + content: { + 'application/json': { + to: string; + subject: string; + text: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/export-following - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___export-following': { - requestBody: { - content: { - 'application/json': { - /** @default false */ - excludeMuting?: boolean; - /** @default false */ - excludeInactive?: boolean; + 'admin___server-info': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + machine: string; + /** @example linux */ + os: string; + node: string; + psql: string; + cpu: { + model: string; + cores: number; + }; + mem: { + /** Format: bytes */ + total: number; + }; + fs: { + /** Format: bytes */ + total: number; + /** Format: bytes */ + used: number; + }; + net: { + /** @example eth0 */ + interface: string; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___show-moderation-logs': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + type?: string | null; + /** Format: misskey:id */ + userId?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + /** Format: date-time */ + createdAt: string; + type: string; + info: Record<string, never>; + /** Format: id */ + userId: string; + user: components['schemas']['UserDetailedNotMe']; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/export-mute - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___export-mute': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___show-user': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + email: string | null; + emailVerified: boolean; + followedMessage: string | null; + autoAcceptFollowed: boolean; + noCrawle: boolean; + preventAiLearning: boolean; + alwaysMarkNsfw: boolean; + autoSensitive: boolean; + carefulBot: boolean; + injectFeaturedNote: boolean; + receiveAnnouncementEmail: boolean; + mutedWords: (string | string[])[]; + mutedInstances: string[]; + notificationRecieveConfig: { + note?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + follow?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + mention?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + reply?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + renote?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + quote?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + reaction?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + pollEnded?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + receiveFollowRequest?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + followRequestAccepted?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + roleAssigned?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + chatRoomInvitationReceived?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + achievementEarned?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + app?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + test?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + }; + isModerator: boolean; + isSilenced: boolean; + isSuspended: boolean; + isHibernated: boolean; + lastActiveDate: string | null; + moderationNote: string; + signins: components['schemas']['Signin'][]; + policies: components['schemas']['RolePolicies']; + roles: components['schemas']['Role'][]; + roleAssigns: { + createdAt: string; + expiresAt: string | null; + roleId: string; + }[]; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/export-notes - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___export-notes': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___show-users': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** @enum {string} */ + sort?: '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt' | '+lastActiveDate' | '-lastActiveDate'; + /** + * @default all + * @enum {string} + */ + state?: 'all' | 'alive' | 'available' | 'admin' | 'moderator' | 'adminOrModerator' | 'suspended'; + /** + * @default combined + * @enum {string} + */ + origin?: 'combined' | 'local' | 'remote'; + /** @default null */ + username?: string | null; + /** + * @description The local host is represented with `null`. + * @default null + */ + hostname?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailed'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/export-user-lists - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___export-user-lists': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___suspend-user': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * i/favorites - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:favorites* - */ - i___favorites: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['NoteFavorite'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___system-webhook___create': { + requestBody: { + content: { + 'application/json': { + isActive: boolean; + name: string; + on: ('abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged')[]; + url: string; + secret: string; + }; + }; }; - }; - }; - }; - /** - * i/gallery/likes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:gallery-likes* - */ - i___gallery___likes: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['SystemWebhook']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - post: components['schemas']['GalleryPost']; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___system-webhook___delete': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + }; + }; }; - }; - }; - }; - /** - * i/gallery/posts - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:gallery* - */ - i___gallery___posts: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['GalleryPost'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___system-webhook___list': { + requestBody: { + content: { + 'application/json': { + isActive?: boolean; + on?: ('abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged')[]; + }; + }; }; - }; - }; - }; - /** - * i/import-antennas - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___import-antennas': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['SystemWebhook'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___system-webhook___show': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + }; + }; }; - }; - }; - }; - /** - * i/import-blocking - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___import-blocking': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['SystemWebhook']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___system-webhook___test': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + webhookId: string; + /** @enum {string} */ + type: 'abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged'; + override?: { + url?: string; + secret?: string; + }; + }; + }; }; - }; - }; - }; - /** - * i/import-following - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___import-following': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; - withReplies?: boolean; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___system-webhook___update': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + isActive: boolean; + name: string; + on: ('abuseReport' | 'abuseReportResolved' | 'userCreated' | 'inactiveModeratorsWarning' | 'inactiveModeratorsInvitationOnlyChanged')[]; + url: string; + secret: string; + }; + }; }; - }; - }; - }; - /** - * i/import-muting - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___import-muting': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['SystemWebhook']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___unset-user-avatar': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * i/import-user-lists - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___import-user-lists': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - fileId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___unset-user-banner': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * i/move - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - i___move: { - requestBody: { - content: { - 'application/json': { - moveToAccount: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': Record<string, never>; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___unsuspend-user': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * i/notifications - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:notifications* - */ - i___notifications: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default true */ - markAsRead?: boolean; - includeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'chatRoomInvitationReceived' | 'achievementEarned' | 'exportCompleted' | 'login' | 'createToken' | 'app' | 'test' | 'pollVote' | 'groupInvited')[]; - excludeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'chatRoomInvitationReceived' | 'achievementEarned' | 'exportCompleted' | 'login' | 'createToken' | 'app' | 'test' | 'pollVote' | 'groupInvited')[]; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Notification'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___update-abuse-user-report': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + reportId: string; + moderationNote?: string; + }; + }; }; - }; - }; - }; - /** - * i/notifications-grouped - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:notifications* - */ - 'i___notifications-grouped': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default true */ - markAsRead?: boolean; - includeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'chatRoomInvitationReceived' | 'achievementEarned' | 'exportCompleted' | 'login' | 'createToken' | 'app' | 'test' | 'pollVote' | 'groupInvited')[]; - excludeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'chatRoomInvitationReceived' | 'achievementEarned' | 'exportCompleted' | 'login' | 'createToken' | 'app' | 'test' | 'pollVote' | 'groupInvited')[]; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Notification'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___update-meta': { + requestBody: { + content: { + 'application/json': { + disableRegistration?: boolean | null; + pinnedUsers?: string[] | null; + hiddenTags?: string[] | null; + blockedHosts?: string[] | null; + sensitiveWords?: string[] | null; + prohibitedWords?: string[] | null; + prohibitedWordsForNameOfUser?: string[] | null; + themeColor?: string | null; + mascotImageUrl?: string | null; + bannerUrl?: string | null; + serverErrorImageUrl?: string | null; + infoImageUrl?: string | null; + notFoundImageUrl?: string | null; + iconUrl?: string | null; + app192IconUrl?: string | null; + app512IconUrl?: string | null; + backgroundImageUrl?: string | null; + logoImageUrl?: string | null; + name?: string | null; + shortName?: string | null; + description?: string | null; + defaultLightTheme?: string | null; + defaultDarkTheme?: string | null; + cacheRemoteFiles?: boolean; + cacheRemoteSensitiveFiles?: boolean; + emailRequiredForSignup?: boolean; + enableHcaptcha?: boolean; + hcaptchaSiteKey?: string | null; + hcaptchaSecretKey?: string | null; + enableMcaptcha?: boolean; + mcaptchaSiteKey?: string | null; + mcaptchaInstanceUrl?: string | null; + mcaptchaSecretKey?: string | null; + enableRecaptcha?: boolean; + recaptchaSiteKey?: string | null; + recaptchaSecretKey?: string | null; + enableTurnstile?: boolean; + turnstileSiteKey?: string | null; + turnstileSecretKey?: string | null; + enableTestcaptcha?: boolean; + googleAnalyticsMeasurementId?: string | null; + /** @enum {string} */ + sensitiveMediaDetection?: 'none' | 'all' | 'local' | 'remote'; + /** @enum {string} */ + sensitiveMediaDetectionSensitivity?: 'medium' | 'low' | 'high' | 'veryLow' | 'veryHigh'; + setSensitiveFlagAutomatically?: boolean; + enableSensitiveMediaDetectionForVideos?: boolean; + maintainerName?: string | null; + maintainerEmail?: string | null; + langs?: string[]; + deeplAuthKey?: string | null; + deeplIsPro?: boolean; + enableEmail?: boolean; + email?: string | null; + smtpSecure?: boolean; + smtpHost?: string | null; + smtpPort?: number | null; + smtpUser?: string | null; + smtpPass?: string | null; + enableServiceWorker?: boolean; + swPublicKey?: string | null; + swPrivateKey?: string | null; + tosUrl?: string | null; + repositoryUrl?: string | null; + feedbackUrl?: string | null; + impressumUrl?: string | null; + privacyPolicyUrl?: string | null; + inquiryUrl?: string | null; + useObjectStorage?: boolean; + objectStorageBaseUrl?: string | null; + objectStorageBucket?: string | null; + objectStoragePrefix?: string | null; + objectStorageEndpoint?: string | null; + objectStorageRegion?: string | null; + objectStoragePort?: number | null; + objectStorageAccessKey?: string | null; + objectStorageSecretKey?: string | null; + objectStorageUseSSL?: boolean; + objectStorageUseProxy?: boolean; + objectStorageSetPublicRead?: boolean; + objectStorageS3ForcePathStyle?: boolean; + enableIpLogging?: boolean; + enableActiveEmailValidation?: boolean; + enableVerifymailApi?: boolean; + verifymailAuthKey?: string | null; + enableTruemailApi?: boolean; + truemailInstance?: string | null; + truemailAuthKey?: string | null; + enableChartsForRemoteUser?: boolean; + enableChartsForFederatedInstances?: boolean; + enableStatsForFederatedInstances?: boolean; + enableServerMachineStats?: boolean; + enableIdenticonGeneration?: boolean; + serverRules?: string[]; + bannedEmailDomains?: string[]; + preservedUsernames?: string[]; + manifestJsonOverride?: string; + enableFanoutTimeline?: boolean; + enableFanoutTimelineDbFallback?: boolean; + perLocalUserUserTimelineCacheMax?: number; + perRemoteUserUserTimelineCacheMax?: number; + perUserHomeTimelineCacheMax?: number; + perUserListTimelineCacheMax?: number; + enableReactionsBuffering?: boolean; + notesPerOneAd?: number; + silencedHosts?: string[] | null; + mediaSilencedHosts?: string[] | null; + /** @description [Deprecated] Use "urlPreviewSummaryProxyUrl" instead. */ + summalyProxy?: string | null; + urlPreviewEnabled?: boolean; + urlPreviewAllowRedirect?: boolean; + urlPreviewTimeout?: number; + urlPreviewMaximumContentLength?: number; + urlPreviewRequireContentLength?: boolean; + urlPreviewUserAgent?: string | null; + urlPreviewSummaryProxyUrl?: string | null; + /** @enum {string} */ + federation?: 'all' | 'none' | 'specified'; + federationHosts?: string[]; + deliverSuspendedSoftware?: { + software: string; + versionRange: string; + }[]; + singleUserMode?: boolean; + /** @enum {string} */ + ugcVisibilityForVisitor?: 'all' | 'local' | 'none'; + proxyRemoteFiles?: boolean; + signToActivityPubGet?: boolean; + allowExternalApRedirect?: boolean; + }; + }; }; - }; - }; - }; - /** - * i/page-likes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:page-likes* - */ - 'i___page-likes': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: id */ - id: string; - page: components['schemas']['Page']; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___update-proxy-account': { + requestBody: { + content: { + 'application/json': { + description?: string | null; + }; + }; }; - }; - }; - }; - /** - * i/pages - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:pages* - */ - i___pages: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Page'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'admin___update-user-note': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + text: string; + }; + }; }; - }; - }; - }; - /** - * i/pin - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - i___pin: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['MeDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + announcements: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default true */ + isActive?: boolean; + }; + }; }; - }; - }; - }; - /** - * i/read-announcement - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'i___read-announcement': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - announcementId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Announcement'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + announcements___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + announcementId: string; + }; + }; }; - }; - }; - }; - /** - * i/regenerate-token - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___regenerate-token': { - requestBody: { - content: { - 'application/json': { - password: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Announcement']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + antennas___create: { + requestBody: { + content: { + 'application/json': { + name: string; + /** @enum {string} */ + src: 'home' | 'all' | 'users' | 'list' | 'users_blacklist'; + /** Format: misskey:id */ + userListId?: string | null; + keywords: string[][]; + excludeKeywords: string[][]; + users: string[]; + caseSensitive: boolean; + localOnly?: boolean; + excludeBots?: boolean; + withReplies: boolean; + withFile: boolean; + excludeNotesInSensitiveChannel?: boolean; + }; + }; }; - }; - }; - }; - /** - * i/registry/get - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - i___registry___get: { - requestBody: { - content: { - 'application/json': { - key: string; - /** @default [] */ - scope: string[]; - domain?: string | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Antenna']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': Record<string, never>; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + antennas___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + antennaId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/registry/get-all - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - 'i___registry___get-all': { - requestBody: { - content: { - 'application/json': { - /** @default [] */ - scope: string[]; - domain?: string | null; + antennas___list: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Antenna'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': Record<string, never>; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + antennas___notes: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + antennaId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + }; + }; }; - }; - }; - }; - /** - * i/registry/get-detail - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - 'i___registry___get-detail': { - requestBody: { - content: { - 'application/json': { - key: string; - /** @default [] */ - scope: string[]; - domain?: string | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - updatedAt: string; - value: unknown; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + antennas___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + antennaId: string; + }; + }; }; - }; - }; - }; - /** - * i/registry/keys - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - i___registry___keys: { - requestBody: { - content: { - 'application/json': { - /** @default [] */ - scope: string[]; - domain?: string | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Antenna']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': string[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + antennas___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + antennaId: string; + name?: string; + /** @enum {string} */ + src?: 'home' | 'all' | 'users' | 'list' | 'users_blacklist'; + /** Format: misskey:id */ + userListId?: string | null; + keywords?: string[][]; + excludeKeywords?: string[][]; + users?: string[]; + caseSensitive?: boolean; + localOnly?: boolean; + excludeBots?: boolean; + withReplies?: boolean; + withFile?: boolean; + excludeNotesInSensitiveChannel?: boolean; + }; + }; }; - }; - }; - }; - /** - * i/registry/keys-with-type - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - 'i___registry___keys-with-type': { - requestBody: { - content: { - 'application/json': { - /** @default [] */ - scope: string[]; - domain?: string | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Antenna']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - [key: string]: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + ap___get: { + requestBody: { + content: { + 'application/json': { + uri: string; + }; + }; }; - }; - }; - }; - /** - * i/registry/remove - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - i___registry___remove: { - requestBody: { - content: { - 'application/json': { - key: string; - /** @default [] */ - scope: string[]; - domain?: string | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': Record<string, never>; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + ap___show: { + requestBody: { + content: { + 'application/json': { + uri: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** @enum {string} */ + type: 'User'; + object: components['schemas']['UserDetailedNotMe']; + } | { + /** @enum {string} */ + type: 'Note'; + object: components['schemas']['Note']; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/registry/scopes-with-domain - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___registry___scopes-with-domain': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - scopes: string[][]; - domain: string | null; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + app___create: { + requestBody: { + content: { + 'application/json': { + name: string; + description: string; + permission: string[]; + callbackUrl?: string | null; + }; + }; }; - }; - }; - }; - /** - * i/registry/set - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - i___registry___set: { - requestBody: { - content: { - 'application/json': { - key: string; - value: unknown; - /** @default [] */ - scope: string[]; - domain?: string | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['App']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + app___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + appId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['App']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - }; - }; - /** - * i/revoke-token - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___revoke-token': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - tokenId: string; - } | ({ - token: string | null; - }); - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + auth___accept: { + requestBody: { + content: { + 'application/json': { + token: string; + }; + }; }; - }; - }; - }; - /** - * i/signin-history - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___signin-history': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Signin'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + auth___session___generate: { + requestBody: { + content: { + 'application/json': { + appSecret: string; + }; + }; }; - }; - }; - }; - /** - * i/unpin - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - i___unpin: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + token: string; + /** Format: url */ + url: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['MeDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + auth___session___show: { + requestBody: { + content: { + 'application/json': { + token: string; + }; + }; }; - }; - }; - }; - /** - * i/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - i___update: { - requestBody: { - content: { - 'application/json': { - name?: string | null; - description?: string | null; - followedMessage?: string | null; - location?: string | null; - birthday?: string | null; - /** @enum {string|null} */ - lang?: null | 'ach' | 'ady' | 'af' | 'af-NA' | 'af-ZA' | 'ak' | 'ar' | 'ar-AR' | 'ar-MA' | 'ar-SA' | 'ay-BO' | 'az' | 'az-AZ' | 'be-BY' | 'bg' | 'bg-BG' | 'bn' | 'bn-IN' | 'bn-BD' | 'br' | 'bs-BA' | 'ca' | 'ca-ES' | 'cak' | 'ck-US' | 'cs' | 'cs-CZ' | 'cy' | 'cy-GB' | 'da' | 'da-DK' | 'de' | 'de-AT' | 'de-DE' | 'de-CH' | 'dsb' | 'el' | 'el-GR' | 'en' | 'en-GB' | 'en-AU' | 'en-CA' | 'en-IE' | 'en-IN' | 'en-PI' | 'en-SG' | 'en-UD' | 'en-US' | 'en-ZA' | 'en@pirate' | 'eo' | 'eo-EO' | 'es' | 'es-AR' | 'es-419' | 'es-CL' | 'es-CO' | 'es-EC' | 'es-ES' | 'es-LA' | 'es-NI' | 'es-MX' | 'es-US' | 'es-VE' | 'et' | 'et-EE' | 'eu' | 'eu-ES' | 'fa' | 'fa-IR' | 'fb-LT' | 'ff' | 'fi' | 'fi-FI' | 'fo' | 'fo-FO' | 'fr' | 'fr-CA' | 'fr-FR' | 'fr-BE' | 'fr-CH' | 'fy-NL' | 'ga' | 'ga-IE' | 'gd' | 'gl' | 'gl-ES' | 'gn-PY' | 'gu-IN' | 'gv' | 'gx-GR' | 'he' | 'he-IL' | 'hi' | 'hi-IN' | 'hr' | 'hr-HR' | 'hsb' | 'ht' | 'hu' | 'hu-HU' | 'hy' | 'hy-AM' | 'id' | 'id-ID' | 'is' | 'is-IS' | 'it' | 'it-IT' | 'ja' | 'ja-JP' | 'jv-ID' | 'ka-GE' | 'kk-KZ' | 'km' | 'kl' | 'km-KH' | 'kab' | 'kn' | 'kn-IN' | 'ko' | 'ko-KR' | 'ku-TR' | 'kw' | 'la' | 'la-VA' | 'lb' | 'li-NL' | 'lt' | 'lt-LT' | 'lv' | 'lv-LV' | 'mai' | 'mg-MG' | 'mk' | 'mk-MK' | 'ml' | 'ml-IN' | 'mn-MN' | 'mr' | 'mr-IN' | 'ms' | 'ms-MY' | 'mt' | 'mt-MT' | 'my' | 'no' | 'nb' | 'nb-NO' | 'ne' | 'ne-NP' | 'nl' | 'nl-BE' | 'nl-NL' | 'nn-NO' | 'oc' | 'or-IN' | 'pa' | 'pa-IN' | 'pl' | 'pl-PL' | 'ps-AF' | 'pt' | 'pt-BR' | 'pt-PT' | 'qu-PE' | 'rm-CH' | 'ro' | 'ro-RO' | 'ru' | 'ru-RU' | 'sa-IN' | 'se-NO' | 'sh' | 'si-LK' | 'sk' | 'sk-SK' | 'sl' | 'sl-SI' | 'so-SO' | 'sq' | 'sq-AL' | 'sr' | 'sr-RS' | 'su' | 'sv' | 'sv-SE' | 'sw' | 'sw-KE' | 'ta' | 'ta-IN' | 'te' | 'te-IN' | 'tg' | 'tg-TJ' | 'th' | 'th-TH' | 'fil' | 'tlh' | 'tr' | 'tr-TR' | 'tt-RU' | 'uk' | 'uk-UA' | 'ur' | 'ur-PK' | 'uz' | 'uz-UZ' | 'vi' | 'vi-VN' | 'xh-ZA' | 'yi' | 'yi-DE' | 'zh' | 'zh-Hans' | 'zh-Hant' | 'zh-CN' | 'zh-HK' | 'zh-SG' | 'zh-TW' | 'zu-ZA'; - /** Format: misskey:id */ - avatarId?: string | null; - avatarDecorations?: ({ - /** Format: misskey:id */ - id: string; - angle?: number | null; - flipH?: boolean | null; - offsetX?: number | null; - offsetY?: number | null; - })[]; - /** Format: misskey:id */ - bannerId?: string | null; - fields?: { - name: string; - value: string; - }[]; - isLocked?: boolean; - isExplorable?: boolean; - hideOnlineStatus?: boolean; - publicReactions?: boolean; - carefulBot?: boolean; - autoAcceptFollowed?: boolean; - noCrawle?: boolean; - preventAiLearning?: boolean; - requireSigninToViewContents?: boolean; - makeNotesFollowersOnlyBefore?: number | null; - makeNotesHiddenBefore?: number | null; - isBot?: boolean; - isCat?: boolean; - injectFeaturedNote?: boolean; - receiveAnnouncementEmail?: boolean; - alwaysMarkNsfw?: boolean; - autoSensitive?: boolean; - /** @enum {string} */ - followingVisibility?: 'public' | 'followers' | 'private'; - /** @enum {string} */ - followersVisibility?: 'public' | 'followers' | 'private'; - /** @enum {string} */ - chatScope?: 'everyone' | 'followers' | 'following' | 'mutual' | 'none'; - /** Format: misskey:id */ - pinnedPageId?: string | null; - mutedWords?: (string[] | string)[]; - hardMutedWords?: (string[] | string)[]; - mutedInstances?: string[]; - notificationRecieveConfig?: { - note?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - follow?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - mention?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - reply?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - renote?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - quote?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - reaction?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - pollEnded?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - receiveFollowRequest?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - followRequestAccepted?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - roleAssigned?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - chatRoomInvitationReceived?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - achievementEarned?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - app?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - test?: OneOf<[{ - /** @enum {string} */ - type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; - }, { - /** @enum {string} */ - type: 'list'; - /** Format: misskey:id */ - userListId: string; - }]>; - }; - emailNotificationTypes?: string[]; - alsoKnownAs?: string[]; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + app: components['schemas']['App']; + token: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['MeDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + auth___session___userkey: { + requestBody: { + content: { + 'application/json': { + appSecret: string; + token: string; + }; + }; }; - }; - }; - }; - /** - * i/update-email - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'i___update-email': { - requestBody: { - content: { - 'application/json': { - password: string; - email?: string | null; - token?: string | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + accessToken: string; + user: components['schemas']['UserDetailedNotMe']; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['MeDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + blocking___create: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * i/webhooks/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - i___webhooks___create: { - requestBody: { - content: { - 'application/json': { - name: string; - url: string; - /** @default */ - secret?: string; - on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailedNotMe']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - /** Format: misskey:id */ - userId: string; - name: string; - on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; - url: string; - secret: string; - active: boolean; - /** Format: date-time */ - latestSentAt: string | null; - latestStatus: number | null; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + blocking___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * i/webhooks/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - i___webhooks___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - webhookId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailedNotMe']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + blocking___list: { + requestBody: { + content: { + 'application/json': { + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Blocking'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/webhooks/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - i___webhooks___list: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': ({ - /** Format: misskey:id */ - id: string; - /** Format: misskey:id */ - userId: string; - name: string; - on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; - url: string; - secret: string; - active: boolean; - /** Format: date-time */ - latestSentAt: string | null; - latestStatus: number | null; - })[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'bubble-game___ranking': { + requestBody: { + content: { + 'application/json': { + gameMode: string; + }; + }; }; - }; - }; - }; - /** - * i/webhooks/show - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - i___webhooks___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - webhookId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + score: number; + user?: components['schemas']['UserLite']; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - /** Format: misskey:id */ - userId: string; - name: string; - on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; - url: string; - secret: string; - active: boolean; - /** Format: date-time */ - latestSentAt: string | null; - latestStatus: number | null; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'bubble-game___register': { + requestBody: { + content: { + 'application/json': { + score: number; + seed: string; + logs: number[][]; + gameMode: string; + gameVersion: number; + }; + }; }; - }; - }; - }; - /** - * i/webhooks/test - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - i___webhooks___test: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - webhookId: string; - /** @enum {string} */ - type: 'mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction'; - override?: { - url?: string; - secret?: string; - }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + channels___create: { + requestBody: { + content: { + 'application/json': { + name: string; + description?: string | null; + /** Format: misskey:id */ + bannerId?: string | null; + color?: string; + isSensitive?: boolean | null; + allowRenoteToExternal?: boolean | null; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Channel']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + channels___favorite: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + channelId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * i/webhooks/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - i___webhooks___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - webhookId: string; - name?: string; - url?: string; - secret?: string | null; - on?: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; - active?: boolean; + channels___featured: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Channel'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + channels___follow: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + channelId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * invite/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:invite-codes* - */ - invite___create: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['InviteCode']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + channels___followed: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 5 */ + limit?: number; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Channel'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * invite/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:invite-codes* - */ - invite___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - inviteId: string; + 'channels___my-favorites': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Channel'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + channels___owned: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 5 */ + limit?: number; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Channel'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * invite/limit - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:invite-codes* - */ - invite___limit: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - remaining: number | null; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + channels___search: { + requestBody: { + content: { + 'application/json': { + query: string; + /** + * @default nameAndDescription + * @enum {string} + */ + type?: 'nameAndDescription' | 'nameOnly'; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 5 */ + limit?: number; + }; + }; }; - }; - }; - }; - /** - * invite/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:invite-codes* - */ - invite___list: { - requestBody: { - content: { - 'application/json': { - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Channel'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['InviteCode'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + channels___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + channelId: string; + }; + }; }; - }; - }; - }; - /** - * meta - * @description No description provided. - * - * **Credential required**: *No* - */ - meta: { - requestBody: { - content: { - 'application/json': { - /** @default true */ - detail?: boolean; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Channel']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['MetaLite'] | components['schemas']['MetaDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + channels___timeline: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + channelId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + /** @default false */ + allowPartial?: boolean; + }; + }; }; - }; - }; - }; - /** - * miauth/gen-token - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'miauth___gen-token': { - requestBody: { - content: { - 'application/json': { - session: string | null; - name?: string | null; - description?: string | null; - iconUrl?: string | null; - permission: string[]; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - token: string; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + channels___unfavorite: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + channelId: string; + }; + }; }; - }; - }; - }; - /** - * mute/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:mutes* - */ - mute___create: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @description A Unix Epoch timestamp that must lie in the future. `null` means an indefinite mute. */ - expiresAt?: number | null; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + channels___unfollow: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + channelId: string; + }; + }; }; - }; - }; - }; - /** - * mute/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:mutes* - */ - mute___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + channels___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + channelId: string; + name?: string; + description?: string | null; + /** Format: misskey:id */ + bannerId?: string | null; + isArchived?: boolean | null; + pinnedNoteIds?: string[]; + color?: string; + isSensitive?: boolean | null; + allowRenoteToExternal?: boolean | null; + }; + }; }; - }; - }; - }; - /** - * mute/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:mutes* - */ - mute___list: { - requestBody: { - content: { - 'application/json': { - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Channel']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Muting'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'charts___active-users': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + }; + }; }; - }; - }; - }; - /** - * my/apps - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - my___apps: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** @default 0 */ - offset?: number; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + readWrite: number[]; + read: number[]; + write: number[]; + registeredWithinWeek: number[]; + registeredWithinMonth: number[]; + registeredWithinYear: number[]; + registeredOutsideWeek: number[]; + registeredOutsideMonth: number[]; + registeredOutsideYear: number[]; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['App'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'charts___ap-request': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + }; + }; }; - }; - }; - }; - /** - * notes - * @description No description provided. - * - * **Credential required**: *No* - */ - notes: { - requestBody: { - content: { - 'application/json': { - /** @default false */ - local?: boolean; - reply?: boolean; - renote?: boolean; - withFiles?: boolean; - poll?: boolean; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + deliverFailed: number[]; + deliverSucceeded: number[]; + inboxReceived: number[]; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___drive: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + }; + }; }; - }; - }; - }; - /** - * notes/children - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___children: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + local: { + incCount: number[]; + incSize: number[]; + decCount: number[]; + decSize: number[]; + }; + remote: { + incCount: number[]; + incSize: number[]; + decCount: number[]; + decSize: number[]; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___federation: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + }; + }; }; - }; - }; - }; - /** - * notes/clips - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___clips: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + deliveredInstances: number[]; + inboxInstances: number[]; + stalled: number[]; + sub: number[]; + pub: number[]; + pubsub: number[]; + subActive: number[]; + pubActive: number[]; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Clip'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___instance: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + host: string; + }; + }; }; - }; - }; - }; - /** - * notes/conversation - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___conversation: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - /** @default 10 */ - limit?: number; - /** @default 0 */ - offset?: number; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + requests: { + failed: number[]; + succeeded: number[]; + received: number[]; + }; + notes: { + total: number[]; + inc: number[]; + dec: number[]; + diffs: { + normal: number[]; + reply: number[]; + renote: number[]; + withFile: number[]; + }; + }; + users: { + total: number[]; + inc: number[]; + dec: number[]; + }; + following: { + total: number[]; + inc: number[]; + dec: number[]; + }; + followers: { + total: number[]; + inc: number[]; + dec: number[]; + }; + drive: { + totalFiles: number[]; + incFiles: number[]; + decFiles: number[]; + incUsage: number[]; + decUsage: number[]; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___notes: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + }; + }; }; - }; - }; - }; - /** - * notes/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notes* - */ - notes___create: { - requestBody: { - content: { - 'application/json': { - /** - * @default public - * @enum {string} - */ - visibility?: 'public' | 'home' | 'followers' | 'specified'; - visibleUserIds?: string[]; - cw?: string | null; - /** @default false */ - localOnly?: boolean; - /** - * @default null - * @enum {string|null} - */ - reactionAcceptance?: null | 'likeOnly' | 'likeOnlyForRemote' | 'nonSensitiveOnly' | 'nonSensitiveOnlyForLocalLikeOnlyForRemote'; - /** @default false */ - noExtractMentions?: boolean; - /** @default false */ - noExtractHashtags?: boolean; - /** @default false */ - noExtractEmojis?: boolean; - /** Format: misskey:id */ - replyId?: string | null; - /** Format: misskey:id */ - renoteId?: string | null; - /** Format: misskey:id */ - channelId?: string | null; - text?: string | null; - fileIds?: string[]; - mediaIds?: string[]; - poll?: ({ - choices: string[]; - multiple?: boolean; - expiresAt?: number | null; - expiredAfter?: number | null; - }) | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + local: { + total: number[]; + inc: number[]; + dec: number[]; + diffs: { + normal: number[]; + reply: number[]; + renote: number[]; + withFile: number[]; + }; + }; + remote: { + total: number[]; + inc: number[]; + dec: number[]; + diffs: { + normal: number[]; + reply: number[]; + renote: number[]; + withFile: number[]; + }; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - createdNote: components['schemas']['Note']; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___user___drive: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * notes/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notes* - */ - notes___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + totalCount: number[]; + totalSize: number[]; + incCount: number[]; + incSize: number[]; + decCount: number[]; + decSize: number[]; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___user___following: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * notes/favorites/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:favorites* - */ - notes___favorites___create: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + local: { + followings: { + total: number[]; + inc: number[]; + dec: number[]; + }; + followers: { + total: number[]; + inc: number[]; + dec: number[]; + }; + }; + remote: { + followings: { + total: number[]; + inc: number[]; + dec: number[]; + }; + followers: { + total: number[]; + inc: number[]; + dec: number[]; + }; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___user___notes: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * notes/favorites/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:favorites* - */ - notes___favorites___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + total: number[]; + inc: number[]; + dec: number[]; + diffs: { + normal: number[]; + reply: number[]; + renote: number[]; + withFile: number[]; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___user___pv: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * notes/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___featured: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - untilId?: string; - /** Format: misskey:id */ - channelId?: string | null; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + upv: { + user: number[]; + visitor: number[]; + }; + pv: { + user: number[]; + visitor: number[]; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___user___reactions: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - }; - /** - * notes/global-timeline - * @description No description provided. - * - * **Credential required**: *No* - */ - 'notes___global-timeline': { - requestBody: { - content: { - 'application/json': { - /** @default false */ - withFiles?: boolean; - /** @default true */ - withRenotes?: boolean; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + local: { + count: number[]; + }; + remote: { + count: number[]; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + charts___users: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + span: 'day' | 'hour'; + /** @default 30 */ + limit?: number; + /** @default null */ + offset?: number | null; + }; + }; }; - }; - }; - }; - /** - * notes/hybrid-timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - 'notes___hybrid-timeline': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; - /** @default false */ - allowPartial?: boolean; - /** @default true */ - includeMyRenotes?: boolean; - /** @default true */ - includeRenotedMyNotes?: boolean; - /** @default true */ - includeLocalRenotes?: boolean; - /** @default false */ - withFiles?: boolean; - /** @default true */ - withRenotes?: boolean; - /** @default false */ - withReplies?: boolean; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + local: { + total: number[]; + inc: number[]; + dec: number[]; + }; + remote: { + total: number[]; + inc: number[]; + dec: number[]; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + chat___history: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** @default false */ + room?: boolean; + }; + }; }; - }; - }; - }; - /** - * notes/local-timeline - * @description No description provided. - * - * **Credential required**: *No* - */ - 'notes___local-timeline': { - requestBody: { - content: { - 'application/json': { - /** @default false */ - withFiles?: boolean; - /** @default true */ - withRenotes?: boolean; - /** @default false */ - withReplies?: boolean; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default false */ - allowPartial?: boolean; - sinceDate?: number; - untilDate?: number; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatMessage'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'chat___messages___create-to-room': { + requestBody: { + content: { + 'application/json': { + text?: string | null; + /** Format: misskey:id */ + fileId?: string; + /** Format: misskey:id */ + toRoomId: string; + }; + }; }; - }; - }; - }; - /** - * notes/mentions - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - notes___mentions: { - requestBody: { - content: { - 'application/json': { - /** @default false */ - following?: boolean; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - visibility?: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatMessageLiteForRoom']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'chat___messages___create-to-user': { + requestBody: { + content: { + 'application/json': { + text?: string | null; + /** Format: misskey:id */ + fileId?: string; + /** Format: misskey:id */ + toUserId: string; + }; + }; }; - }; - }; - }; - /** - * notes/polls/recommendation - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - notes___polls___recommendation: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** @default 0 */ - offset?: number; - /** @default false */ - excludeChannels?: boolean; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatMessageLiteFor1on1']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + chat___messages___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + messageId: string; + }; + }; }; - }; - }; - }; - /** - * notes/polls/vote - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:votes* - */ - notes___polls___vote: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - choice: number; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + chat___messages___react: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + messageId: string; + reaction: string; + }; + }; }; - }; - }; - }; - /** - * notes/reactions - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___reactions: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - type?: string | null; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['NoteReaction'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + 'chat___messages___room-timeline': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** Format: misskey:id */ + roomId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatMessageLiteForRoom'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___messages___search: { + requestBody: { + content: { + 'application/json': { + query: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + userId?: string | null; + /** Format: misskey:id */ + roomId?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatMessage'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/reactions/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:reactions* - */ - notes___reactions___create: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - reaction: string; + chat___messages___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + messageId: string; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatMessage']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___messages___unreact: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + messageId: string; + reaction: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'chat___messages___user-timeline': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatMessageLiteFor1on1'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/reactions/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:reactions* - */ - notes___reactions___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + 'chat___read-all': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + chat___rooms___create: { + requestBody: { + content: { + 'application/json': { + name: string; + description?: string; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoom']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___rooms___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___rooms___invitations___create: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoomInvitation']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/renotes - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___renotes: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + chat___rooms___invitations___ignore: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; + chat___rooms___invitations___inbox: { + requestBody: { + content: { + 'application/json': { + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoomInvitation'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___rooms___invitations___outbox: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoomInvitation'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___rooms___join: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/replies - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___replies: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; + chat___rooms___joining: { + requestBody: { + content: { + 'application/json': { + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoomMembership'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; + chat___rooms___leave: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___rooms___members: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoomMembership'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___rooms___mute: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + mute: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/search - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___search: { - requestBody: { - content: { - 'application/json': { - query: string; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; - /** @default 0 */ - offset?: number; - /** @description The local host is represented with `.`. */ - host?: string; - /** - * Format: misskey:id - * @default null - */ - userId?: string | null; - /** - * Format: misskey:id - * @default null - */ - channelId?: string | null; + chat___rooms___owned: { + requestBody: { + content: { + 'application/json': { + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoom'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; + chat___rooms___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoom']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + chat___rooms___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roomId: string; + name?: string; + description?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ChatRoom']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'clips___add-note': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + clipId: string; + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/search-by-tag - * @description No description provided. - * - * **Credential required**: *No* - */ - 'notes___search-by-tag': { - requestBody: { - content: { - 'application/json': ({ - tag: string; - } | { - /** @description The outer arrays are chained with OR, the inner arrays are chained with AND. */ - query: string[][]; - }) & ({ - /** @default null */ - reply?: boolean | null; - /** @default null */ - renote?: boolean | null; - /** - * @description Only show notes that have attached files. - * @default false - */ - withFiles?: boolean; - /** @default null */ - poll?: boolean | null; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; - }); - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; + clips___create: { + requestBody: { + content: { + 'application/json': { + name: string; + /** @default false */ + isPublic?: boolean; + description?: string | null; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Clip']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + clips___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + clipId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + clips___favorite: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + clipId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/show - * @description No description provided. - * - * **Credential required**: *No* - */ - notes___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + clips___list: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Clip'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + 'clips___my-favorites': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Clip'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + clips___notes: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + clipId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/show-partial-bulk - * @description No description provided. - * - * **Credential required**: *No* - */ - 'notes___show-partial-bulk': { - requestBody: { - content: { - 'application/json': { - noteIds: string[]; + 'clips___remove-note': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + clipId: string; + /** Format: misskey:id */ + noteId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - id: string; - reactions: { - [key: string]: number; - }; - reactionEmojis: { - [key: string]: string; - }; - }[]; + clips___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + clipId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Clip']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + clips___unfavorite: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + clipId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + clips___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + clipId: string; + name?: string; + isPublic?: boolean; + description?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Clip']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/state - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - notes___state: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + drive: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + capacity: number; + usage: number; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - isFavorited: boolean; - isMutedThread: boolean; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + drive___files: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** + * Format: misskey:id + * @default null + */ + folderId?: string | null; + type?: string | null; + /** @enum {string|null} */ + sort?: '+createdAt' | '-createdAt' | '+name' | '-name' | '+size' | '-size' | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFile'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/thread-muting/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'notes___thread-muting___create': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + 'drive___files___attached-notes': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + fileId: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + 'drive___files___check-existence': { + requestBody: { + content: { + 'application/json': { + md5: string; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': boolean; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + }; + drive___files___create: { + requestBody: { + content: { + 'multipart/form-data': { + /** + * Format: misskey:id + * @default null + */ + folderId?: string | null; + /** @default null */ + name?: string | null; + /** @default null */ + comment?: string | null; + /** @default false */ + isSensitive?: boolean; + /** @default false */ + force?: boolean; + /** + * Format: binary + * @description The file contents. + */ + file: Blob; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFile']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + drive___files___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/thread-muting/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'notes___thread-muting___delete': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + drive___files___find: { + requestBody: { + content: { + 'application/json': { + name: string; + /** + * Format: misskey:id + * @default null + */ + folderId?: string | null; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFile'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'drive___files___find-by-hash': { + requestBody: { + content: { + 'application/json': { + md5: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFile'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'drive___files___move-bulk': { + requestBody: { + content: { + 'application/json': { + fileIds: string[]; + /** Format: misskey:id */ + folderId?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - notes___timeline: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; - /** @default false */ - allowPartial?: boolean; - /** @default true */ - includeMyRenotes?: boolean; - /** @default true */ - includeRenotedMyNotes?: boolean; - /** @default true */ - includeLocalRenotes?: boolean; - /** @default false */ - withFiles?: boolean; - /** @default true */ - withRenotes?: boolean; + drive___files___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + } | { + url: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFile']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; + drive___files___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + /** Format: misskey:id */ + folderId?: string | null; + name?: string; + isSensitive?: boolean; + comment?: string | null; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFile']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'drive___files___upload-from-url': { + requestBody: { + content: { + 'application/json': { + url: string; + /** + * Format: misskey:id + * @default null + */ + folderId?: string | null; + /** @default false */ + isSensitive?: boolean; + /** @default null */ + comment?: string | null; + /** @default null */ + marker?: string | null; + /** @default false */ + force?: boolean; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + drive___folders: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** + * Format: misskey:id + * @default null + */ + folderId?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFolder'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/translate - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - notes___translate: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; - targetLang: string; + drive___folders___create: { + requestBody: { + content: { + 'application/json': { + /** @default Untitled */ + name?: string; + /** Format: misskey:id */ + parentId?: string | null; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFolder']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - sourceLang: string; - text: string; - }; + drive___folders___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + folderId: string; + }; + }; }; - }; - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + drive___folders___find: { + requestBody: { + content: { + 'application/json': { + name: string; + /** + * Format: misskey:id + * @default null + */ + parentId?: string | null; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFolder'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + drive___folders___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + folderId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFolder']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/unrenote - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notes* - */ - notes___unrenote: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + drive___folders___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + folderId: string; + name?: string; + /** Format: misskey:id */ + parentId?: string | null; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFolder']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + drive___stream: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + type?: string; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['DriveFile'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'email-address___available': { + requestBody: { + content: { + 'application/json': { + emailAddress: string; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + available: boolean; + reason: string | null; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + emoji: { + requestBody: { + content: { + 'application/json': { + name: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['EmojiDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notes/user-list-timeline - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - 'notes___user-list-timeline': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; - /** @default false */ - allowPartial?: boolean; - /** @default true */ - includeMyRenotes?: boolean; - /** @default true */ - includeRenotedMyNotes?: boolean; - /** @default true */ - includeLocalRenotes?: boolean; - /** @default true */ - withRenotes?: boolean; - /** - * @description Only show notes that have attached files. - * @default false - */ - withFiles?: boolean; + emojis: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + emojis: components['schemas']['EmojiSimple'][]; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + endpoint: { + requestBody: { + content: { + 'application/json': { + endpoint: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + params: { + name: string; + type: string; + }[]; + } | null; + }; + }; + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notifications/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notifications* - */ - notifications___create: { - requestBody: { - content: { - 'application/json': { - body: string; - header?: string | null; - icon?: string | null; + endpoints: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': string[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'export-custom-emojis': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notifications/flush - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notifications* - */ - notifications___flush: { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + federation___followers: { + requestBody: { + content: { + 'application/json': { + host: string; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Following'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notifications/mark-all-as-read - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notifications* - */ - 'notifications___mark-all-as-read': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + federation___following: { + requestBody: { + content: { + 'application/json': { + host: string; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Following'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + federation___instances: { + requestBody: { + content: { + 'application/json': { + /** @description Omit or use `null` to not filter by host. */ + host?: string | null; + blocked?: boolean | null; + notResponding?: boolean | null; + suspended?: boolean | null; + silenced?: boolean | null; + federating?: boolean | null; + subscribing?: boolean | null; + publishing?: boolean | null; + /** @default 30 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** @enum {string|null} */ + sort?: '+pubSub' | '-pubSub' | '+notes' | '-notes' | '+users' | '-users' | '+following' | '-following' | '+followers' | '-followers' | '+firstRetrievedAt' | '-firstRetrievedAt' | '+latestRequestReceivedAt' | '-latestRequestReceivedAt' | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['FederationInstance'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * notifications/test-notification - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:notifications* - */ - 'notifications___test-notification': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + 'federation___show-instance': { + requestBody: { + content: { + 'application/json': { + host: string; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['FederationInstance'] | null; + }; + }; + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + }; + federation___stats: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + topSubInstances: components['schemas']['FederationInstance'][]; + otherFollowersCount: number; + topPubInstances: components['schemas']['FederationInstance'][]; + otherFollowingCount: number; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'federation___update-remote-user': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * page-push - * @description No description provided. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'page-push': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - pageId: string; - event: string; - var?: unknown; + federation___users: { + requestBody: { + content: { + 'application/json': { + host: string; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailedNotMe'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'fetch-external-resources': { + requestBody: { + content: { + 'application/json': { + url: string; + hash: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + type: string; + data: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'fetch-rss': { + requestBody: { + content: { + 'application/json': { + url: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + image?: { + link?: string; + url: string; + title?: string; + }; + paginationLinks?: { + self?: string; + first?: string; + next?: string; + last?: string; + prev?: string; + }; + link?: string; + title?: string; + items: { + link?: string; + guid?: string; + title?: string; + pubDate?: string; + creator?: string; + summary?: string; + content?: string; + isoDate?: string; + categories?: string[]; + contentSnippet?: string; + enclosure?: { + url: string; + length?: number; + type?: string; + }; + }[]; + feedUrl?: string; + description?: string; + itunes?: { + image?: string; + owner?: { + name?: string; + email?: string; + }; + author?: string; + summary?: string; + explicit?: string; + categories?: string[]; + keywords?: string[]; + } & { + [key: string]: unknown; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * pages/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:pages* - */ - pages___create: { - requestBody: { - content: { - 'application/json': { - title: string; - name: string; - summary?: string | null; - content: { - [key: string]: unknown; - }[]; - variables: { - [key: string]: unknown; - }[]; - script: string; - /** Format: misskey:id */ - eyeCatchingImageId?: string | null; - /** - * @default sans-serif - * @enum {string} - */ - font?: 'serif' | 'sans-serif'; - /** @default false */ - alignCenter?: boolean; - /** @default false */ - hideTitleWhenPinned?: boolean; + flash___create: { + requestBody: { + content: { + 'application/json': { + title: string; + summary: string; + script: string; + permissions: string[]; + /** + * @default public + * @enum {string} + */ + visibility?: 'public' | 'private'; + }; + }; }; - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Page']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Flash']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + }; + flash___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + flashId: string; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + }; + flash___featured: { + requestBody: { + content: { + 'application/json': { + /** @default 0 */ + offset?: number; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Flash'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + flash___like: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + flashId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * pages/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:pages* - */ - pages___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - pageId: string; + flash___my: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Flash'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'flash___my-likes': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + flash: components['schemas']['Flash']; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + flash___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + flashId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Flash']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * pages/featured - * @description No description provided. - * - * **Credential required**: *No* - */ - pages___featured: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Page'][]; + flash___unlike: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + flashId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + flash___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + flashId: string; + title?: string; + summary?: string; + script?: string; + permissions?: string[]; + /** @enum {string} */ + visibility?: 'public' | 'private'; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + following___create: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + withReplies?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserLite']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * pages/like - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:page-likes* - */ - pages___like: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - pageId: string; + following___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserLite']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + following___invalidate: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserLite']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + following___requests___accept: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * pages/show - * @description No description provided. - * - * **Credential required**: *No* - */ - pages___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - pageId: string; - } | { - name: string; - username: string; + following___requests___cancel: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserLite']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Page']; + following___requests___list: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + follower: components['schemas']['UserLite']; + followee: components['schemas']['UserLite']; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + following___requests___reject: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + following___requests___sent: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + follower: components['schemas']['UserLite']; + followee: components['schemas']['UserLite']; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * pages/unlike - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:page-likes* - */ - pages___unlike: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - pageId: string; + following___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @enum {string} */ + notify?: 'normal' | 'none'; + withReplies?: boolean; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserLite']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'following___update-all': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + notify?: 'normal' | 'none'; + withReplies?: boolean; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + gallery___featured: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['GalleryPost'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * pages/update - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:pages* - */ - pages___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - pageId: string; - title?: string; - name?: string; - summary?: string | null; - content?: { - [key: string]: unknown; - }[]; - variables?: { - [key: string]: unknown; - }[]; - script?: string; - /** Format: misskey:id */ - eyeCatchingImageId?: string | null; - /** @enum {string} */ - font?: 'serif' | 'sans-serif'; - alignCenter?: boolean; - hideTitleWhenPinned?: boolean; + gallery___popular: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['GalleryPost'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + gallery___posts: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['GalleryPost'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * ping - * @description No description provided. - * - * **Credential required**: *No* - */ - ping: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - pong: number; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + gallery___posts___create: { + requestBody: { + content: { + 'application/json': { + title: string; + description?: string | null; + fileIds: string[]; + /** @default false */ + isSensitive?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['GalleryPost']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * pinned-users - * @description No description provided. - * - * **Credential required**: *No* - */ - 'pinned-users': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailed'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + gallery___posts___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + postId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + gallery___posts___like: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + postId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * promo/read - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - promo___read: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - noteId: string; + gallery___posts___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + postId: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['GalleryPost']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + gallery___posts___unlike: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + postId: string; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + }; + gallery___posts___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + postId: string; + title?: string; + description?: string | null; + fileIds?: string[]; + /** @default false */ + isSensitive?: boolean; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['GalleryPost']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'get-avatar-decorations': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** + * Format: id + * @example xxxxxxxxxx + */ + id: string; + name: string; + description: string; + url: string; + roleIdsThatCanBeUsedThisDecoration: string[]; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * renote-mute/create - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:mutes* - */ - 'renote-mute___create': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + 'get-online-users-count': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + count: number; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + hashtags___list: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** @default false */ + attachedToUserOnly?: boolean; + /** @default false */ + attachedToLocalUserOnly?: boolean; + /** @default false */ + attachedToRemoteUserOnly?: boolean; + /** @enum {string} */ + sort: '+mentionedUsers' | '-mentionedUsers' | '+mentionedLocalUsers' | '-mentionedLocalUsers' | '+mentionedRemoteUsers' | '-mentionedRemoteUsers' | '+attachedUsers' | '-attachedUsers' | '+attachedLocalUsers' | '-attachedLocalUsers' | '+attachedRemoteUsers' | '-attachedRemoteUsers'; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Hashtag'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + }; + hashtags___search: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + query: string; + /** @default 0 */ + offset?: number; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': string[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + hashtags___show: { + requestBody: { + content: { + 'application/json': { + tag: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Hashtag']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * renote-mute/delete - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:mutes* - */ - 'renote-mute___delete': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + hashtags___trend: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + tag: string; + chart: number[]; + usersCount: number; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + hashtags___users: { + requestBody: { + content: { + 'application/json': { + tag: string; + /** @default 10 */ + limit?: number; + /** @enum {string} */ + sort: '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt'; + /** + * @default all + * @enum {string} + */ + state?: 'all' | 'alive'; + /** + * @default local + * @enum {string} + */ + origin?: 'combined' | 'local' | 'remote'; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailed'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * renote-mute/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:mutes* - */ - 'renote-mute___list': { - requestBody: { - content: { - 'application/json': { - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + i: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['MeDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['RenoteMuting'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + i___2fa___done: { + requestBody: { + content: { + 'application/json': { + token: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + backupCodes: string[]; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * request-reset-password - * @description Request a users password to be reset. - * - * **Credential required**: *No* - */ - 'request-reset-password': { - requestBody: { - content: { - 'application/json': { - username: string; - email: string; + 'i___2fa___key-done': { + requestBody: { + content: { + 'application/json': { + password: string; + token?: string | null; + name: string; + credential: Record<string, never>; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + id: string; + name: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + 'i___2fa___password-less': { + requestBody: { + content: { + 'application/json': { + value: boolean; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___2fa___register: { + requestBody: { + content: { + 'application/json': { + password: string; + token?: string | null; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + qr: string; + url: string; + secret: string; + label: string; + issuer: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___2fa___register-key': { + requestBody: { + content: { + 'application/json': { + password: string; + token?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + rp: { + id?: string; + }; + user: { + id: string; + name: string; + displayName: string; + }; + challenge: string; + pubKeyCredParams: { + type: string; + alg: number; + }[]; + timeout: number | null; + excludeCredentials: { + id: string; + type: string; + transports: ('ble' | 'cable' | 'hybrid' | 'internal' | 'nfc' | 'smart-card' | 'usb')[]; + }[] | null; + authenticatorSelection: { + /** @enum {string} */ + authenticatorAttachment: 'cross-platform' | 'platform'; + requireResidentKey: boolean; + /** @enum {string} */ + userVerification: 'discouraged' | 'preferred' | 'required'; + } | null; + /** @enum {string|null} */ + attestation: 'direct' | 'enterprise' | 'indirect' | 'none' | null; + extensions: { + appid: string | null; + credProps: boolean | null; + hmacCreateSecret: boolean | null; + } | null; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * reset-db - * @description Only available when running with <code>NODE_ENV=testing</code>. Reset the database and flush Redis. - * - * **Credential required**: *No* - */ - 'reset-db': { - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + 'i___2fa___remove-key': { + requestBody: { + content: { + 'application/json': { + password: string; + token?: string | null; + credentialId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___2fa___unregister: { + requestBody: { + content: { + 'application/json': { + password: string; + token?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * reset-password - * @description Complete the password reset that was previously requested. - * - * **Credential required**: *No* - */ - 'reset-password': { - requestBody: { - content: { - 'application/json': { - token: string; - password: string; + 'i___2fa___update-key': { + requestBody: { + content: { + 'application/json': { + name: string; + credentialId: string; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___apps: { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + sort?: '+createdAt' | '-createdAt' | '+lastUsedAt' | '-lastUsedAt'; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + name?: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + lastUsedAt?: string; + permission: string[]; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___authorized-apps': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** + * @default desc + * @enum {string} + */ + sort?: 'desc' | 'asc'; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + name: string; + callbackUrl: string | null; + permission: string[]; + isAuthorized?: boolean; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * retention - * @description No description provided. - * - * **Credential required**: *No* - */ - retention: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: date-time */ - createdAt: string; - users: number; - data: { - [key: string]: number; - }; - }[]; + 'i___change-password': { + requestBody: { + content: { + 'application/json': { + currentPassword: string; + newPassword: string; + token?: string | null; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___claim-achievement': { + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + name: 'notes1' | 'notes10' | 'notes100' | 'notes500' | 'notes1000' | 'notes5000' | 'notes10000' | 'notes20000' | 'notes30000' | 'notes40000' | 'notes50000' | 'notes60000' | 'notes70000' | 'notes80000' | 'notes90000' | 'notes100000' | 'login3' | 'login7' | 'login15' | 'login30' | 'login60' | 'login100' | 'login200' | 'login300' | 'login400' | 'login500' | 'login600' | 'login700' | 'login800' | 'login900' | 'login1000' | 'passedSinceAccountCreated1' | 'passedSinceAccountCreated2' | 'passedSinceAccountCreated3' | 'loggedInOnBirthday' | 'loggedInOnNewYearsDay' | 'noteClipped1' | 'noteFavorited1' | 'myNoteFavorited1' | 'profileFilled' | 'markedAsCat' | 'following1' | 'following10' | 'following50' | 'following100' | 'following300' | 'followers1' | 'followers10' | 'followers50' | 'followers100' | 'followers300' | 'followers500' | 'followers1000' | 'collectAchievements30' | 'viewAchievements3min' | 'iLoveMisskey' | 'foundTreasure' | 'client30min' | 'client60min' | 'noteDeletedWithin1min' | 'postedAtLateNight' | 'postedAt0min0sec' | 'selfQuote' | 'htl20npm' | 'viewInstanceChart' | 'outputHelloWorldOnScratchpad' | 'open3windows' | 'driveFolderCircularReference' | 'reactWithoutRead' | 'clickedClickHere' | 'justPlainLucky' | 'setNameToSyuilo' | 'cookieClicked' | 'brainDiver' | 'smashTestNotificationButton' | 'tutorialCompleted' | 'bubbleGameExplodingHead' | 'bubbleGameDoubleExplodingHead'; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___delete-account': { + requestBody: { + content: { + 'application/json': { + password: string; + token?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * reversi/cancel-match - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'reversi___cancel-match': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId?: string | null; + 'i___export-antennas': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'i___export-blocking': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * reversi/games - * @description No description provided. - * - * **Credential required**: *No* - */ - reversi___games: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default false */ - my?: boolean; + 'i___export-clips': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ReversiGameLite'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'i___export-favorites': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * reversi/invitations - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - reversi___invitations: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserLite'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'i___export-following': { + requestBody: { + content: { + 'application/json': { + /** @default false */ + excludeMuting?: boolean; + /** @default false */ + excludeInactive?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * reversi/match - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - reversi___match: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId?: string | null; - /** @default false */ - noIrregularRules?: boolean; - /** @default false */ - multiple?: boolean; + 'i___export-mute': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ReversiGameDetailed']; - }; - }; - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'i___export-notes': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * reversi/show-game - * @description No description provided. - * - * **Credential required**: *No* - */ - 'reversi___show-game': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - gameId: string; + 'i___export-user-lists': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['ReversiGameDetailed']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + i___favorites: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - }; - }; - /** - * reversi/surrender - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - reversi___surrender: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - gameId: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['NoteFavorite'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + i___gallery___likes: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + post: components['schemas']['GalleryPost']; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___gallery___posts: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['GalleryPost'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * reversi/verify - * @description No description provided. - * - * **Credential required**: *No* - */ - reversi___verify: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - gameId: string; - crc32: string; + 'i___import-antennas': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - desynced: boolean; - game?: components['schemas']['ReversiGameDetailed'] | null; - }; + 'i___import-blocking': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___import-following': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + withReplies?: boolean; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___import-muting': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * roles/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - roles___list: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Role'][]; + 'i___import-user-lists': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + fileId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___move: { + requestBody: { + content: { + 'application/json': { + moveToAccount: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': Record<string, never>; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___notifications: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default true */ + markAsRead?: boolean; + includeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'chatRoomInvitationReceived' | 'achievementEarned' | 'exportCompleted' | 'login' | 'createToken' | 'app' | 'test' | 'pollVote' | 'groupInvited')[]; + excludeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'chatRoomInvitationReceived' | 'achievementEarned' | 'exportCompleted' | 'login' | 'createToken' | 'app' | 'test' | 'pollVote' | 'groupInvited')[]; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Notification'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * roles/notes - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - roles___notes: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; + 'i___notifications-grouped': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default true */ + markAsRead?: boolean; + includeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'chatRoomInvitationReceived' | 'achievementEarned' | 'exportCompleted' | 'login' | 'createToken' | 'app' | 'test' | 'pollVote' | 'groupInvited')[]; + excludeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'chatRoomInvitationReceived' | 'achievementEarned' | 'exportCompleted' | 'login' | 'createToken' | 'app' | 'test' | 'pollVote' | 'groupInvited')[]; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Notification'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; + 'i___page-likes': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + page: components['schemas']['Page']; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___pages: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Page'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___pin: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['MeDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * roles/show - * @description No description provided. - * - * **Credential required**: *No* - */ - roles___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; + 'i___read-announcement': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + announcementId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Role']; + 'i___regenerate-token': { + requestBody: { + content: { + 'application/json': { + password: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___registry___get: { + requestBody: { + content: { + 'application/json': { + key: string; + /** @default [] */ + scope: string[]; + domain?: string | null; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': Record<string, never>; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___registry___get-all': { + requestBody: { + content: { + 'application/json': { + /** @default [] */ + scope: string[]; + domain?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': Record<string, never>; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * roles/users - * @description No description provided. - * - * **Credential required**: *No* - */ - roles___users: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - roleId: string; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; + 'i___registry___get-detail': { + requestBody: { + content: { + 'application/json': { + key: string; + /** @default [] */ + scope: string[]; + domain?: string | null; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + updatedAt: string; + value: unknown; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - user: components['schemas']['UserDetailed']; - }[]; + i___registry___keys: { + requestBody: { + content: { + 'application/json': { + /** @default [] */ + scope: string[]; + domain?: string | null; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': string[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___registry___keys-with-type': { + requestBody: { + content: { + 'application/json': { + /** @default [] */ + scope: string[]; + domain?: string | null; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + [key: string]: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___registry___remove: { + requestBody: { + content: { + 'application/json': { + key: string; + /** @default [] */ + scope: string[]; + domain?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * server-info - * @description No description provided. - * - * **Credential required**: *No* - */ - 'server-info': { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - machine: string; - cpu: { - model: string; - cores: number; + 'i___registry___scopes-with-domain': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + scopes: string[][]; + domain: string | null; + }[]; + }; }; - mem: { - total: number; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; }; - fs: { - total: number; - used: number; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; }; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___registry___set: { + requestBody: { + content: { + 'application/json': { + key: string; + value: unknown; + /** @default [] */ + scope: string[]; + domain?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * stats - * @description No description provided. - * - * **Credential required**: *No* - */ - stats: { - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - notesCount: number; - originalNotesCount: number; - usersCount: number; - originalUsersCount: number; - instances: number; - driveUsageLocal: number; - driveUsageRemote: number; - }; + 'i___revoke-token': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + tokenId: string; + } | { + token: string | null; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'i___signin-history': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Signin'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___unpin: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['MeDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * sw/register - * @description Register to receive push notifications. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - sw___register: { - requestBody: { - content: { - 'application/json': { - endpoint: string; - auth: string; - publickey: string; - /** @default false */ - sendReadMessage?: boolean; + i___update: { + requestBody: { + content: { + 'application/json': { + name?: string | null; + description?: string | null; + followedMessage?: string | null; + location?: string | null; + birthday?: string | null; + /** @enum {string|null} */ + lang?: null | 'ach' | 'ady' | 'af' | 'af-NA' | 'af-ZA' | 'ak' | 'ar' | 'ar-AR' | 'ar-MA' | 'ar-SA' | 'ay-BO' | 'az' | 'az-AZ' | 'be-BY' | 'bg' | 'bg-BG' | 'bn' | 'bn-IN' | 'bn-BD' | 'br' | 'bs-BA' | 'ca' | 'ca-ES' | 'cak' | 'ck-US' | 'cs' | 'cs-CZ' | 'cy' | 'cy-GB' | 'da' | 'da-DK' | 'de' | 'de-AT' | 'de-DE' | 'de-CH' | 'dsb' | 'el' | 'el-GR' | 'en' | 'en-GB' | 'en-AU' | 'en-CA' | 'en-IE' | 'en-IN' | 'en-PI' | 'en-SG' | 'en-UD' | 'en-US' | 'en-ZA' | 'en@pirate' | 'eo' | 'eo-EO' | 'es' | 'es-AR' | 'es-419' | 'es-CL' | 'es-CO' | 'es-EC' | 'es-ES' | 'es-LA' | 'es-NI' | 'es-MX' | 'es-US' | 'es-VE' | 'et' | 'et-EE' | 'eu' | 'eu-ES' | 'fa' | 'fa-IR' | 'fb-LT' | 'ff' | 'fi' | 'fi-FI' | 'fo' | 'fo-FO' | 'fr' | 'fr-CA' | 'fr-FR' | 'fr-BE' | 'fr-CH' | 'fy-NL' | 'ga' | 'ga-IE' | 'gd' | 'gl' | 'gl-ES' | 'gn-PY' | 'gu-IN' | 'gv' | 'gx-GR' | 'he' | 'he-IL' | 'hi' | 'hi-IN' | 'hr' | 'hr-HR' | 'hsb' | 'ht' | 'hu' | 'hu-HU' | 'hy' | 'hy-AM' | 'id' | 'id-ID' | 'is' | 'is-IS' | 'it' | 'it-IT' | 'ja' | 'ja-JP' | 'jv-ID' | 'ka-GE' | 'kk-KZ' | 'km' | 'kl' | 'km-KH' | 'kab' | 'kn' | 'kn-IN' | 'ko' | 'ko-KR' | 'ku-TR' | 'kw' | 'la' | 'la-VA' | 'lb' | 'li-NL' | 'lt' | 'lt-LT' | 'lv' | 'lv-LV' | 'mai' | 'mg-MG' | 'mk' | 'mk-MK' | 'ml' | 'ml-IN' | 'mn-MN' | 'mr' | 'mr-IN' | 'ms' | 'ms-MY' | 'mt' | 'mt-MT' | 'my' | 'no' | 'nb' | 'nb-NO' | 'ne' | 'ne-NP' | 'nl' | 'nl-BE' | 'nl-NL' | 'nn-NO' | 'oc' | 'or-IN' | 'pa' | 'pa-IN' | 'pl' | 'pl-PL' | 'ps-AF' | 'pt' | 'pt-BR' | 'pt-PT' | 'qu-PE' | 'rm-CH' | 'ro' | 'ro-RO' | 'ru' | 'ru-RU' | 'sa-IN' | 'se-NO' | 'sh' | 'si-LK' | 'sk' | 'sk-SK' | 'sl' | 'sl-SI' | 'so-SO' | 'sq' | 'sq-AL' | 'sr' | 'sr-RS' | 'su' | 'sv' | 'sv-SE' | 'sw' | 'sw-KE' | 'ta' | 'ta-IN' | 'te' | 'te-IN' | 'tg' | 'tg-TJ' | 'th' | 'th-TH' | 'fil' | 'tlh' | 'tr' | 'tr-TR' | 'tt-RU' | 'uk' | 'uk-UA' | 'ur' | 'ur-PK' | 'uz' | 'uz-UZ' | 'vi' | 'vi-VN' | 'xh-ZA' | 'yi' | 'yi-DE' | 'zh' | 'zh-Hans' | 'zh-Hant' | 'zh-CN' | 'zh-HK' | 'zh-SG' | 'zh-TW' | 'zu-ZA'; + /** Format: misskey:id */ + avatarId?: string | null; + avatarDecorations?: { + /** Format: misskey:id */ + id: string; + angle?: number | null; + flipH?: boolean | null; + offsetX?: number | null; + offsetY?: number | null; + }[]; + /** Format: misskey:id */ + bannerId?: string | null; + fields?: { + name: string; + value: string; + }[]; + isLocked?: boolean; + isExplorable?: boolean; + hideOnlineStatus?: boolean; + publicReactions?: boolean; + carefulBot?: boolean; + autoAcceptFollowed?: boolean; + noCrawle?: boolean; + preventAiLearning?: boolean; + requireSigninToViewContents?: boolean; + makeNotesFollowersOnlyBefore?: number | null; + makeNotesHiddenBefore?: number | null; + isBot?: boolean; + isCat?: boolean; + injectFeaturedNote?: boolean; + receiveAnnouncementEmail?: boolean; + alwaysMarkNsfw?: boolean; + autoSensitive?: boolean; + /** @enum {string} */ + followingVisibility?: 'public' | 'followers' | 'private'; + /** @enum {string} */ + followersVisibility?: 'public' | 'followers' | 'private'; + /** @enum {string} */ + chatScope?: 'everyone' | 'followers' | 'following' | 'mutual' | 'none'; + /** Format: misskey:id */ + pinnedPageId?: string | null; + mutedWords?: (string[] | string)[]; + hardMutedWords?: (string[] | string)[]; + mutedInstances?: string[]; + notificationRecieveConfig?: { + note?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + follow?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + mention?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + reply?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + renote?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + quote?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + reaction?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + pollEnded?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + receiveFollowRequest?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + followRequestAccepted?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + roleAssigned?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + chatRoomInvitationReceived?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + achievementEarned?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + app?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + test?: { + /** @enum {string} */ + type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never'; + } | { + /** @enum {string} */ + type: 'list'; + /** Format: misskey:id */ + userListId: string; + }; + }; + emailNotificationTypes?: string[]; + alsoKnownAs?: string[]; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['MeDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** @enum {string} */ - state?: 'already-subscribed' | 'subscribed'; - key: string | null; - userId: string; - endpoint: string; - sendReadMessage: boolean; - }; + 'i___update-email': { + requestBody: { + content: { + 'application/json': { + password: string; + email?: string | null; + token?: string | null; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['MeDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___webhooks___create: { + requestBody: { + content: { + 'application/json': { + name: string; + url: string; + /** @default */ + secret?: string; + on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + /** Format: misskey:id */ + userId: string; + name: string; + on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; + url: string; + secret: string; + active: boolean; + /** Format: date-time */ + latestSentAt: string | null; + latestStatus: number | null; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___webhooks___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + webhookId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * sw/show-registration - * @description Check push notification registration exists. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'sw___show-registration': { - requestBody: { - content: { - 'application/json': { - endpoint: string; + i___webhooks___list: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + /** Format: misskey:id */ + userId: string; + name: string; + on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; + url: string; + secret: string; + active: boolean; + /** Format: date-time */ + latestSentAt: string | null; + latestStatus: number | null; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - userId: string; - endpoint: string; - sendReadMessage: boolean; - } | null; - }; - }; - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + i___webhooks___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + webhookId: string; + }; + }; }; - }; - }; - }; - /** - * sw/unregister - * @description Unregister from receiving push notifications. - * - * **Credential required**: *No* - */ - sw___unregister: { - requestBody: { - content: { - 'application/json': { - endpoint: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + /** Format: misskey:id */ + userId: string; + name: string; + on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; + url: string; + secret: string; + active: boolean; + /** Format: date-time */ + latestSentAt: string | null; + latestStatus: number | null; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + i___webhooks___test: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + webhookId: string; + /** @enum {string} */ + type: 'mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction'; + override?: { + url?: string; + secret?: string; + }; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + i___webhooks___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + webhookId: string; + name?: string; + url?: string; + secret?: string | null; + on?: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[]; + active?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * sw/update-registration - * @description Update push notification registration. - * - * **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties. - * **Credential required**: *Yes* - */ - 'sw___update-registration': { - requestBody: { - content: { - 'application/json': { - endpoint: string; - sendReadMessage?: boolean; + invite___create: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['InviteCode']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - userId: string; - endpoint: string; - sendReadMessage: boolean; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + invite___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + inviteId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * test - * @description Endpoint for testing input validation. - * - * **Credential required**: *No* - */ - test: { - requestBody: { - content: { - 'application/json': { - required: boolean; - string?: string; - /** @default hello */ - default?: string; - /** @default hello */ - nullableDefault?: string | null; - /** Format: misskey:id */ - id?: string; + invite___limit: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + remaining: number | null; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: misskey:id */ - id?: string; - required: boolean; - string?: string; - default?: string; - /** @default hello */ - nullableDefault?: string | null; - }; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + invite___list: { + requestBody: { + content: { + 'application/json': { + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - }; - }; - /** - * username/available - * @description No description provided. - * - * **Credential required**: *No* - */ - username___available: { - requestBody: { - content: { - 'application/json': { - username: string; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['InviteCode'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - available: boolean; - }; + meta: { + requestBody: { + content: { + 'application/json': { + /** @default true */ + detail?: boolean; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['MetaLite'] | components['schemas']['MetaDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'miauth___gen-token': { + requestBody: { + content: { + 'application/json': { + session: string | null; + name?: string | null; + description?: string | null; + iconUrl?: string | null; + permission: string[]; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + token: string; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + mute___create: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @description A Unix Epoch timestamp that must lie in the future. `null` means an indefinite mute. */ + expiresAt?: number | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users - * @description No description provided. - * - * **Credential required**: *No* - */ - users: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** @default 0 */ - offset?: number; - /** @enum {string} */ - sort?: '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt'; - /** - * @default all - * @enum {string} - */ - state?: 'all' | 'alive'; - /** - * @default local - * @enum {string} - */ - origin?: 'combined' | 'local' | 'remote'; - /** - * @description The local host is represented with `null`. - * @default null - */ - hostname?: string | null; + mute___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailed'][]; + mute___list: { + requestBody: { + content: { + 'application/json': { + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Muting'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + my___apps: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** @default 0 */ + offset?: number; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['App'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes: { + requestBody: { + content: { + 'application/json': { + /** @default false */ + local?: boolean; + reply?: boolean; + renote?: boolean; + withFiles?: boolean; + poll?: boolean; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/achievements - * @description No description provided. - * - * **Credential required**: *No* - */ - users___achievements: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; + notes___children: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Achievement'][]; + notes___clips: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Clip'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___conversation: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + /** @default 10 */ + limit?: number; + /** @default 0 */ + offset?: number; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___create: { + requestBody: { + content: { + 'application/json': { + /** + * @default public + * @enum {string} + */ + visibility?: 'public' | 'home' | 'followers' | 'specified'; + visibleUserIds?: string[]; + cw?: string | null; + /** @default false */ + localOnly?: boolean; + /** + * @default null + * @enum {string|null} + */ + reactionAcceptance?: null | 'likeOnly' | 'likeOnlyForRemote' | 'nonSensitiveOnly' | 'nonSensitiveOnlyForLocalLikeOnlyForRemote'; + /** @default false */ + noExtractMentions?: boolean; + /** @default false */ + noExtractHashtags?: boolean; + /** @default false */ + noExtractEmojis?: boolean; + /** Format: misskey:id */ + replyId?: string | null; + /** Format: misskey:id */ + renoteId?: string | null; + /** Format: misskey:id */ + channelId?: string | null; + text?: string | null; + fileIds?: string[]; + mediaIds?: string[]; + poll?: { + choices: string[]; + multiple?: boolean; + expiresAt?: number | null; + expiredAfter?: number | null; + } | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + createdNote: components['schemas']['Note']; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/clips - * @description Show all clips this user owns. - * - * **Credential required**: *No* - */ - users___clips: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + notes___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Clip'][]; + notes___favorites___create: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___favorites___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___featured: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + untilId?: string; + /** Format: misskey:id */ + channelId?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/featured-notes - * @description No description provided. - * - * **Credential required**: *No* - */ - 'users___featured-notes': { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - untilId?: string; - /** Format: misskey:id */ - userId: string; + 'notes___global-timeline': { + requestBody: { + content: { + 'application/json': { + /** @default false */ + withFiles?: boolean; + /** @default true */ + withRenotes?: boolean; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; + 'notes___hybrid-timeline': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + /** @default false */ + allowPartial?: boolean; + /** @default true */ + includeMyRenotes?: boolean; + /** @default true */ + includeRenotedMyNotes?: boolean; + /** @default true */ + includeLocalRenotes?: boolean; + /** @default false */ + withFiles?: boolean; + /** @default true */ + withRenotes?: boolean; + /** @default false */ + withReplies?: boolean; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'notes___local-timeline': { + requestBody: { + content: { + 'application/json': { + /** @default false */ + withFiles?: boolean; + /** @default true */ + withRenotes?: boolean; + /** @default false */ + withReplies?: boolean; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default false */ + allowPartial?: boolean; + sinceDate?: number; + untilDate?: number; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___mentions: { + requestBody: { + content: { + 'application/json': { + /** @default false */ + following?: boolean; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + visibility?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/flashs - * @description Show all flashs this user created. - * - * **Credential required**: *No* - */ - users___flashs: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + notes___polls___recommendation: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** @default false */ + excludeChannels?: boolean; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Flash'][]; + notes___polls___vote: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + choice: number; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___reactions: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + type?: string | null; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['NoteReaction'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___reactions___create: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + reaction: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/followers - * @description Show everyone that follows this user. - * - * **Credential required**: *No* - */ - users___followers: { - requestBody: { - content: { - 'application/json': ({ - /** Format: misskey:id */ - userId: string; - } | ({ - username: string; - /** @description The local host is represented with `null`. */ - host: string | null; - })) & { - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; + notes___reactions___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Following'][]; + notes___renotes: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___replies: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___search: { + requestBody: { + content: { + 'application/json': { + query: string; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** @description The local host is represented with `.`. */ + host?: string; + /** + * Format: misskey:id + * @default null + */ + userId?: string | null; + /** + * Format: misskey:id + * @default null + */ + channelId?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/following - * @description Show everyone that this user is following. - * - * **Credential required**: *No* - */ - users___following: { - requestBody: { - content: { - 'application/json': ({ - /** Format: misskey:id */ - userId: string; - } | ({ - username: string; - /** @description The local host is represented with `null`. */ - host: string | null; - })) & ({ - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; - birthday?: string | null; - }); - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Following'][]; + 'notes___search-by-tag': { + requestBody: { + content: { + 'application/json': ({ + tag: string; + } | { + /** @description The outer arrays are chained with OR, the inner arrays are chained with AND. */ + query: string[][]; + }) & { + /** @default null */ + reply?: boolean | null; + /** @default null */ + renote?: boolean | null; + /** + * @description Only show notes that have attached files. + * @default false + */ + withFiles?: boolean; + /** @default null */ + poll?: boolean | null; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'notes___show-partial-bulk': { + requestBody: { + content: { + 'application/json': { + noteIds: string[]; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + id: string; + reactions: { + [key: string]: number; + }; + reactionEmojis: { + [key: string]: string; + }; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/gallery/posts - * @description Show all gallery posts by the given user. - * - * **Credential required**: *No* - */ - users___gallery___posts: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + notes___state: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + isFavorited: boolean; + isMutedThread: boolean; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['GalleryPost'][]; + 'notes___thread-muting___create': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'notes___thread-muting___delete': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + notes___timeline: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + /** @default false */ + allowPartial?: boolean; + /** @default true */ + includeMyRenotes?: boolean; + /** @default true */ + includeRenotedMyNotes?: boolean; + /** @default true */ + includeLocalRenotes?: boolean; + /** @default false */ + withFiles?: boolean; + /** @default true */ + withRenotes?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/get-frequently-replied-users - * @description Get a list of other users that the specified user frequently replies to. - * - * **Credential required**: *No* - */ - 'users___get-frequently-replied-users': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @default 10 */ - limit?: number; + notes___translate: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + targetLang: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + sourceLang: string; + text: string; + }; + }; + }; + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - user: components['schemas']['UserDetailed']; - weight: number; - }[]; + notes___unrenote: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'notes___user-list-timeline': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + /** @default false */ + allowPartial?: boolean; + /** @default true */ + includeMyRenotes?: boolean; + /** @default true */ + includeRenotedMyNotes?: boolean; + /** @default true */ + includeLocalRenotes?: boolean; + /** @default true */ + withRenotes?: boolean; + /** + * @description Only show notes that have attached files. + * @default false + */ + withFiles?: boolean; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + notifications___create: { + requestBody: { + content: { + 'application/json': { + body: string; + header?: string | null; + icon?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/create - * @description Create a new list of users. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - users___lists___create: { - requestBody: { - content: { - 'application/json': { - name: string; + notifications___flush: { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserList']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + 'notifications___mark-all-as-read': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/create-from-public - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'users___lists___create-from-public': { - requestBody: { - content: { - 'application/json': { - name: string; - /** Format: misskey:id */ - listId: string; + 'notifications___test-notification': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserList']; + 'page-push': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + pageId: string; + event: string; + var?: unknown; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + pages___create: { + requestBody: { + content: { + 'application/json': { + title: string; + name: string; + summary?: string | null; + content: { + [key: string]: unknown; + }[]; + variables: { + [key: string]: unknown; + }[]; + script: string; + /** Format: misskey:id */ + eyeCatchingImageId?: string | null; + /** + * @default sans-serif + * @enum {string} + */ + font?: 'serif' | 'sans-serif'; + /** @default false */ + alignCenter?: boolean; + /** @default false */ + hideTitleWhenPinned?: boolean; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Page']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + pages___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + pageId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/delete - * @description Delete an existing list of users. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - users___lists___delete: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; + pages___featured: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Page'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + pages___like: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + pageId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/favorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - users___lists___favorite: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; + pages___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + pageId: string; + } | { + name: string; + username: string; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Page']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + pages___unlike: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + pageId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + pages___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + pageId: string; + title?: string; + name?: string; + summary?: string | null; + content?: { + [key: string]: unknown; + }[]; + variables?: { + [key: string]: unknown; + }[]; + script?: string; + /** Format: misskey:id */ + eyeCatchingImageId?: string | null; + /** @enum {string} */ + font?: 'serif' | 'sans-serif'; + alignCenter?: boolean; + hideTitleWhenPinned?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/get-memberships - * @description No description provided. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - 'users___lists___get-memberships': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; - /** @default false */ - forPublic?: boolean; - /** @default 30 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + ping: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + pong: number; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - /** Format: misskey:id */ - id: string; - /** Format: date-time */ - createdAt: string; - /** Format: misskey:id */ - userId: string; - user: components['schemas']['UserLite']; - withReplies: boolean; - }[]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + 'pinned-users': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailed'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + promo___read: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + noteId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/list - * @description Show all lists that the authenticated user has created. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - users___lists___list: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId?: string; + 'renote-mute___create': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserList'][]; + 'renote-mute___delete': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'renote-mute___list': { + requestBody: { + content: { + 'application/json': { + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['RenoteMuting'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'request-reset-password': { + requestBody: { + content: { + 'application/json': { + username: string; + email: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/pull - * @description Remove a user from a list. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - users___lists___pull: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; - /** Format: misskey:id */ - userId: string; + 'reset-db': { + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + 'reset-password': { + requestBody: { + content: { + 'application/json': { + token: string; + password: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/push - * @description Add a user to an existing list. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - users___lists___push: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; - /** Format: misskey:id */ - userId: string; + retention: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: date-time */ + createdAt: string; + users: number; + data: { + [key: string]: number; + }; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + 'reversi___cancel-match': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId?: string | null; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Too many requests */ - 429: { - content: { - 'application/json': components['schemas']['Error']; + }; + reversi___games: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default false */ + my?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ReversiGameLite'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/show - * @description Show the properties of a list. - * - * **Credential required**: *No* / **Permission**: *read:account* - */ - users___lists___show: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; - /** @default false */ - forPublic?: boolean; + reversi___invitations: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserLite'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserList']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + reversi___match: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId?: string | null; + /** @default false */ + noIrregularRules?: boolean; + /** @default false */ + multiple?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ReversiGameDetailed']; + }; + }; + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/unfavorite - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - users___lists___unfavorite: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; + 'reversi___show-game': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + gameId: string; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['ReversiGameDetailed']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + reversi___surrender: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + gameId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + reversi___verify: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + gameId: string; + crc32: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + desynced: boolean; + game?: components['schemas']['ReversiGameDetailed'] | null; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/lists/update - * @description Update the properties of a list. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - users___lists___update: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; - name?: string; - isPublic?: boolean; + roles___list: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Role'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserList']; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + roles___notes: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + }; + }; }; - }; - }; - }; - /** - * users/lists/update-membership - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'users___lists___update-membership': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - listId: string; - /** Format: misskey:id */ - userId: string; - withReplies?: boolean; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + roles___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Role']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + roles___users: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + roleId: string; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + user: components['schemas']['UserDetailed']; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/notes - * @description No description provided. - * - * **Credential required**: *No* - */ - users___notes: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @default false */ - withReplies?: boolean; - /** @default true */ - withRenotes?: boolean; - /** @default false */ - withChannelNotes?: boolean; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; - /** @default false */ - allowPartial?: boolean; - /** @default false */ - withFiles?: boolean; + 'server-info': { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + machine: string; + cpu: { + model: string; + cores: number; + }; + mem: { + total: number; + }; + fs: { + total: number; + used: number; + }; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Note'][]; - }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; - }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + stats: { + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + notesCount: number; + originalNotesCount: number; + usersCount: number; + originalUsersCount: number; + instances: number; + driveUsageLocal: number; + driveUsageRemote: number; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + sw___register: { + requestBody: { + content: { + 'application/json': { + endpoint: string; + auth: string; + publickey: string; + /** @default false */ + sendReadMessage?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** @enum {string} */ + state?: 'already-subscribed' | 'subscribed'; + key: string | null; + userId: string; + endpoint: string; + sendReadMessage: boolean; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/pages - * @description Show all pages this user created. - * - * **Credential required**: *No* - */ - users___pages: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; + 'sw___show-registration': { + requestBody: { + content: { + 'application/json': { + endpoint: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + userId: string; + endpoint: string; + sendReadMessage: boolean; + } | null; + }; + }; + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['Page'][]; + sw___unregister: { + requestBody: { + content: { + 'application/json': { + endpoint: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'sw___update-registration': { + requestBody: { + content: { + 'application/json': { + endpoint: string; + sendReadMessage?: boolean; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + userId: string; + endpoint: string; + sendReadMessage: boolean; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + test: { + requestBody: { + content: { + 'application/json': { + required: boolean; + string?: string; + /** @default hello */ + default?: string; + /** @default hello */ + nullableDefault?: string | null; + /** Format: misskey:id */ + id?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id?: string; + required: boolean; + string?: string; + default?: string; + /** @default hello */ + nullableDefault: string | null; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/reactions - * @description Show all reactions this user made. - * - * **Credential required**: *No* - */ - users___reactions: { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @default 10 */ - limit?: number; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - sinceDate?: number; - untilDate?: number; + username___available: { + requestBody: { + content: { + 'application/json': { + username: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + available: boolean; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['NoteReaction'][]; + users: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** @enum {string} */ + sort?: '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt'; + /** + * @default all + * @enum {string} + */ + state?: 'all' | 'alive'; + /** + * @default local + * @enum {string} + */ + origin?: 'combined' | 'local' | 'remote'; + /** + * @description The local host is represented with `null`. + * @default null + */ + hostname?: string | null; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailed'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___achievements: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Achievement'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___clips: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Clip'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/recommendation - * @description Show users that the authenticated user might be interested to follow. - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - users___recommendation: { - requestBody: { - content: { - 'application/json': { - /** @default 10 */ - limit?: number; - /** @default 0 */ - offset?: number; + 'users___featured-notes': { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + untilId?: string; + /** Format: misskey:id */ + userId: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailed'][]; + users___flashs: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Flash'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___followers: { + requestBody: { + content: { + 'application/json': ({ + /** Format: misskey:id */ + userId: string; + } | { + username: string; + /** @description The local host is represented with `null`. */ + host: string | null; + }) & { + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Following'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___following: { + requestBody: { + content: { + 'application/json': ({ + /** Format: misskey:id */ + userId: string; + } | { + username: string; + /** @description The local host is represented with `null`. */ + host: string | null; + }) & { + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + birthday?: string | null; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Following'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/relation - * @description Show the different kinds of relations between the authenticated user and the specified user(s). - * - * **Credential required**: *Yes* / **Permission**: *read:account* - */ - users___relation: { - requestBody: { - content: { - 'application/json': { - userId: string | string[]; + users___gallery___posts: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['GalleryPost'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': OneOf<[{ - /** Format: id */ - id: string; - isFollowing: boolean; - hasPendingFollowRequestFromYou: boolean; - hasPendingFollowRequestToYou: boolean; - isFollowed: boolean; - isBlocking: boolean; - isBlocked: boolean; - isMuted: boolean; - isRenoteMuted: boolean; - }, { - /** Format: id */ - id: string; - isFollowing: boolean; - hasPendingFollowRequestFromYou: boolean; - hasPendingFollowRequestToYou: boolean; - isFollowed: boolean; - isBlocking: boolean; - isBlocked: boolean; - isMuted: boolean; - isRenoteMuted: boolean; - }[]]>; + 'users___get-frequently-replied-users': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @default 10 */ + limit?: number; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + user: components['schemas']['UserDetailed']; + weight: number; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___lists___create: { + requestBody: { + content: { + 'application/json': { + name: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserList']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'users___lists___create-from-public': { + requestBody: { + content: { + 'application/json': { + name: string; + /** Format: misskey:id */ + listId: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserList']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/report-abuse - * @description File a report. - * - * **Credential required**: *Yes* / **Permission**: *write:report-abuse* - */ - 'users___report-abuse': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - comment: string; + users___lists___delete: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___lists___favorite: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'users___lists___get-memberships': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + /** @default false */ + forPublic?: boolean; + /** @default 30 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: misskey:id */ + id: string; + /** Format: date-time */ + createdAt: string; + /** Format: misskey:id */ + userId: string; + user: components['schemas']['UserLite']; + withReplies: boolean; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/search - * @description Search for users. - * - * **Credential required**: *No* - */ - users___search: { - requestBody: { - content: { - 'application/json': { - query: string; - /** @default 0 */ - offset?: number; - /** @default 10 */ - limit?: number; - /** - * @default combined - * @enum {string} - */ - origin?: 'local' | 'remote' | 'combined'; - /** @default true */ - detail?: boolean; + users___lists___list: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId?: string; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserList'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['User'][]; + users___lists___pull: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___lists___push: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + /** Format: misskey:id */ + userId: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Too many requests */ + 429: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___lists___show: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + /** @default false */ + forPublic?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserList']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/search-by-username-and-host - * @description Search for a user by username and/or host. - * - * **Credential required**: *No* - */ - 'users___search-by-username-and-host': { - requestBody: { - content: { - 'application/json': (({ - username: string | null; - }) | ({ - host: string | null; - })) & { - /** @default 10 */ - limit?: number; - /** @default true */ - detail?: boolean; + users___lists___unfavorite: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + }; + }; + }; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['User'][]; + users___lists___update: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + name?: string; + isPublic?: boolean; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserList']; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'users___lists___update-membership': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + listId: string; + /** Format: misskey:id */ + userId: string; + withReplies?: boolean; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___notes: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @default false */ + withReplies?: boolean; + /** @default true */ + withRenotes?: boolean; + /** @default false */ + withChannelNotes?: boolean; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + /** @default false */ + allowPartial?: boolean; + /** @default false */ + withFiles?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Note'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/show - * @description Show the properties of a user. - * - * **Credential required**: *No* - */ - users___show: { - requestBody: { - content: { - 'application/json': ({ - /** Format: misskey:id */ - userId: string; - } | { - userIds: string[]; - } | { - username: string; - }) & ({ - /** @description The local host is represented with `null`. */ - host?: string | null; - }); - }; - }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': components['schemas']['UserDetailed'] | components['schemas']['UserDetailed'][]; + users___pages: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Page'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___reactions: { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @default 10 */ + limit?: number; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + sinceDate?: number; + untilDate?: number; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['NoteReaction'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___recommendation: { + requestBody: { + content: { + 'application/json': { + /** @default 10 */ + limit?: number; + /** @default 0 */ + offset?: number; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailed'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * users/update-memo - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *write:account* - */ - 'users___update-memo': { - requestBody: { - content: { - 'application/json': { - /** Format: misskey:id */ - userId: string; - /** @description A personal memo for the target user. If null or empty, delete the memo. */ - memo: string | null; + users___relation: { + requestBody: { + content: { + 'application/json': { + userId: string | string[]; + }; + }; }; - }; - }; - responses: { - /** @description OK (without any results) */ - 204: { - content: never; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + /** Format: id */ + id: string; + isFollowing: boolean; + hasPendingFollowRequestFromYou: boolean; + hasPendingFollowRequestToYou: boolean; + isFollowed: boolean; + isBlocking: boolean; + isBlocked: boolean; + isMuted: boolean; + isRenoteMuted: boolean; + } | { + /** Format: id */ + id: string; + isFollowing: boolean; + hasPendingFollowRequestFromYou: boolean; + hasPendingFollowRequestToYou: boolean; + isFollowed: boolean; + isBlocking: boolean; + isBlocked: boolean; + isMuted: boolean; + isRenoteMuted: boolean; + }[]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'users___report-abuse': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + comment: string; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + users___search: { + requestBody: { + content: { + 'application/json': { + query: string; + /** @default 0 */ + offset?: number; + /** @default 10 */ + limit?: number; + /** + * @default combined + * @enum {string} + */ + origin?: 'local' | 'remote' | 'combined'; + /** @default true */ + detail?: boolean; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['User'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; - /** - * v2/admin/emoji/list - * @description No description provided. - * - * **Credential required**: *Yes* / **Permission**: *read:admin:emoji* - */ - v2___admin___emoji___list: { - requestBody: { - content: { - 'application/json': { - query?: ({ - updatedAtFrom?: string; - updatedAtTo?: string; - name?: string; - host?: string; - uri?: string; - publicUrl?: string; - originalUrl?: string; - type?: string; - aliases?: string; - category?: string; - license?: string; - isSensitive?: boolean; - localOnly?: boolean; - /** - * @default all - * @enum {string} - */ - hostType?: 'local' | 'remote' | 'all'; - roleIds?: string[]; - }) | null; - /** Format: misskey:id */ - sinceId?: string; - /** Format: misskey:id */ - untilId?: string; - /** @default 10 */ - limit?: number; - page?: number; - /** - * @default [ - * "-id" - * ] - */ - sortKeys?: ('+id' | '-id' | '+updatedAt' | '-updatedAt' | '+name' | '-name' | '+host' | '-host' | '+uri' | '-uri' | '+publicUrl' | '-publicUrl' | '+type' | '-type' | '+aliases' | '-aliases' | '+category' | '-category' | '+license' | '-license' | '+isSensitive' | '-isSensitive' | '+localOnly' | '-localOnly' | '+roleIdsThatCanBeUsedThisEmojiAsReaction' | '-roleIdsThatCanBeUsedThisEmojiAsReaction')[]; + 'users___search-by-username-and-host': { + requestBody: { + content: { + 'application/json': ({ + username: string | null; + } | { + host: string | null; + }) & { + /** @default 10 */ + limit?: number; + /** @default true */ + detail?: boolean; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['User'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - responses: { - /** @description OK (with results) */ - 200: { - content: { - 'application/json': { - emojis: components['schemas']['EmojiDetailedAdmin'][]; - count: number; - allCount: number; - allPages: number; - }; + users___show: { + requestBody: { + content: { + 'application/json': ({ + /** Format: misskey:id */ + userId: string; + } | { + userIds: string[]; + } | { + username: string; + }) & { + /** @description The local host is represented with `null`. */ + host?: string | null; + }; + }; }; - }; - /** @description Client error */ - 400: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['UserDetailed'] | components['schemas']['UserDetailed'][]; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description Authentication error */ - 401: { - content: { - 'application/json': components['schemas']['Error']; + }; + 'users___update-memo': { + requestBody: { + content: { + 'application/json': { + /** Format: misskey:id */ + userId: string; + /** @description A personal memo for the target user. If null or empty, delete the memo. */ + memo: string | null; + }; + }; }; - }; - /** @description Forbidden error */ - 403: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (without any results) */ + 204: { + headers: { + [name: string]: unknown; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; - /** @description I'm Ai */ - 418: { - content: { - 'application/json': components['schemas']['Error']; + }; + v2___admin___emoji___list: { + requestBody: { + content: { + 'application/json': { + query?: { + updatedAtFrom?: string; + updatedAtTo?: string; + name?: string; + host?: string; + uri?: string; + publicUrl?: string; + originalUrl?: string; + type?: string; + aliases?: string; + category?: string; + license?: string; + isSensitive?: boolean; + localOnly?: boolean; + /** + * @default all + * @enum {string} + */ + hostType?: 'local' | 'remote' | 'all'; + roleIds?: string[]; + } | null; + /** Format: misskey:id */ + sinceId?: string; + /** Format: misskey:id */ + untilId?: string; + /** @default 10 */ + limit?: number; + page?: number; + /** @default [ + * "-id" + * ] */ + sortKeys?: ('+id' | '-id' | '+updatedAt' | '-updatedAt' | '+name' | '-name' | '+host' | '-host' | '+uri' | '-uri' | '+publicUrl' | '-publicUrl' | '+type' | '-type' | '+aliases' | '-aliases' | '+category' | '-category' | '+license' | '-license' | '+isSensitive' | '-isSensitive' | '+localOnly' | '-localOnly' | '+roleIdsThatCanBeUsedThisEmojiAsReaction' | '-roleIdsThatCanBeUsedThisEmojiAsReaction')[]; + }; + }; }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['Error']; + responses: { + /** @description OK (with results) */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': { + emojis: components['schemas']['EmojiDetailedAdmin'][]; + count: number; + allCount: number; + allPages: number; + }; + }; + }; + /** @description Client error */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['Error']; + }; + }; }; - }; }; - }; -}; +} diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts index ed1d89a685..9bc9aa6668 100644 --- a/packages/misskey-js/src/entities.ts +++ b/packages/misskey-js/src/entities.ts @@ -24,10 +24,14 @@ type NonNullableRecord<T> = { type AllNullRecord<T> = { [P in keyof T]: null; }; +type AllNullOrOptionalRecord<T> = { + [P in keyof T]: never; +}; export type PureRenote = Omit<Note, 'renote' | 'renoteId' | 'reply' | 'replyId' | 'text' | 'cw' | 'files' | 'fileIds' | 'poll'> - & AllNullRecord<Pick<Note, 'reply' | 'replyId' | 'text' | 'cw' | 'poll'>> + & AllNullRecord<Pick<Note, 'text'>> + & AllNullOrOptionalRecord<Pick<Note, 'reply' | 'replyId' | 'cw' | 'poll'>> & { files: []; fileIds: []; } & NonNullableRecord<Pick<Note, 'renote' | 'renoteId'>>; diff --git a/packages/misskey-js/test/api.ts b/packages/misskey-js/test/api.ts index 1a7574de25..b8ad2225c8 100644 --- a/packages/misskey-js/test/api.ts +++ b/packages/misskey-js/test/api.ts @@ -94,11 +94,7 @@ describe('API', () => { fetchMock.resetMocks(); fetchMock.mockResponse(async (req) => { if (req.method == 'POST' && req.url == 'https://misskey.test/api/drive/files/create') { - if (req.headers.get('Content-Type')?.includes('multipart/form-data')) { - return JSON.stringify({ id: 'foo' }); - } else { - return { status: 400 }; - } + return JSON.stringify({ id: 'foo' }); } else { return { status: 404 }; } @@ -123,7 +119,7 @@ describe('API', () => { expect(getFetchCall(fetchMock.mock.calls[0])).toEqual({ url: 'https://misskey.test/api/drive/files/create', method: 'POST', - contentType: 'multipart/form-data', + contentType: undefined, body: { i: 'TOKEN', file: testFile, diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json index ef0d936c37..c4a4b8bc75 100644 --- a/packages/misskey-reversi/package.json +++ b/packages/misskey-reversi/package.json @@ -22,9 +22,9 @@ "lint": "pnpm typecheck && pnpm eslint" }, "devDependencies": { - "@types/node": "22.15.28", - "@typescript-eslint/eslint-plugin": "8.33.0", - "@typescript-eslint/parser": "8.33.0", + "@types/node": "22.15.31", + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", "execa": "9.6.0", "nodemon": "3.1.10", "typescript": "5.8.3", diff --git a/packages/sw/package.json b/packages/sw/package.json index 698e2ec009..8981242acc 100644 --- a/packages/sw/package.json +++ b/packages/sw/package.json @@ -14,7 +14,7 @@ "misskey-js": "workspace:*" }, "devDependencies": { - "@typescript-eslint/parser": "8.33.0", + "@typescript-eslint/parser": "8.34.0", "@typescript/lib-webworker": "npm:@types/serviceworker@0.0.74", "eslint-plugin-import": "2.31.0", "nodemon": "3.1.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 760f7a4663..2bb00d45cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,13 +15,13 @@ importers: dependencies: cssnano: specifier: 7.0.7 - version: 7.0.7(postcss@8.5.3) + version: 7.0.7(postcss@8.5.4) esbuild: - specifier: 0.25.4 - version: 0.25.4 + specifier: 0.25.5 + version: 0.25.5 execa: - specifier: 9.5.3 - version: 9.5.3 + specifier: 9.6.0 + version: 9.6.0 fast-glob: specifier: 3.3.3 version: 3.3.3 @@ -35,48 +35,48 @@ importers: specifier: 4.1.0 version: 4.1.0 postcss: - specifier: 8.5.3 - version: 8.5.3 + specifier: 8.5.4 + version: 8.5.4 tar: specifier: 7.4.3 version: 7.4.3 terser: - specifier: 5.39.2 - version: 5.39.2 + specifier: 5.42.0 + version: 5.42.0 typescript: specifier: 5.8.3 version: 5.8.3 devDependencies: '@misskey-dev/eslint-plugin': specifier: 2.1.0 - version: 2.1.0(@eslint/compat@1.1.1)(@stylistic/eslint-plugin@2.13.0(eslint@9.27.0)(typescript@5.8.3))(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3))(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0))(eslint@9.27.0)(globals@16.1.0) + version: 2.1.0(@eslint/compat@1.1.1)(@stylistic/eslint-plugin@2.13.0(eslint@9.28.0)(typescript@5.8.3))(@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3))(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0))(eslint@9.28.0)(globals@16.2.0) '@types/node': - specifier: 22.15.21 - version: 22.15.21 + specifier: 22.15.31 + version: 22.15.31 '@typescript-eslint/eslint-plugin': - specifier: 8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.32.1 - version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) cross-env: specifier: 7.0.3 version: 7.0.3 cypress: - specifier: 14.4.0 - version: 14.4.0 + specifier: 14.4.1 + version: 14.4.1 eslint: - specifier: 9.27.0 - version: 9.27.0 + specifier: 9.28.0 + version: 9.28.0 globals: - specifier: 16.1.0 - version: 16.1.0 + specifier: 16.2.0 + version: 16.2.0 ncp: specifier: 2.0.0 version: 2.0.0 pnpm: - specifier: 10.11.0 - version: 10.11.0 + specifier: 10.12.1 + version: 10.12.1 start-server-and-test: specifier: 2.0.12 version: 2.0.12 @@ -88,11 +88,11 @@ importers: packages/backend: dependencies: '@aws-sdk/client-s3': - specifier: 3.817.0 - version: 3.817.0 + specifier: 3.826.0 + version: 3.826.0 '@aws-sdk/lib-storage': - specifier: 3.817.0 - version: 3.817.0(@aws-sdk/client-s3@3.817.0) + specifier: 3.826.0 + version: 3.826.0(@aws-sdk/client-s3@3.826.0) '@discordapp/twemoji': specifier: 15.1.0 version: 15.1.0 @@ -127,17 +127,17 @@ importers: specifier: 5.2.1 version: 5.2.1 '@napi-rs/canvas': - specifier: 0.1.70 - version: 0.1.70 + specifier: 0.1.71 + version: 0.1.71 '@nestjs/common': - specifier: 11.1.2 - version: 11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2) + specifier: 11.1.3 + version: 11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/core': - specifier: 11.1.2 - version: 11.1.2(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.18)(reflect-metadata@0.2.2)(rxjs@7.8.2) + specifier: 11.1.3 + version: 11.1.3(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/testing': - specifier: 11.1.2 - version: 11.1.2(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.2)(@nestjs/platform-express@10.4.18) + specifier: 11.1.3 + version: 11.1.3(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(@nestjs/platform-express@10.4.19) '@peertube/http-signature': specifier: 1.7.0 version: 1.7.0 @@ -158,10 +158,10 @@ importers: version: 2.5.0 '@swc/cli': specifier: 0.7.7 - version: 0.7.7(@swc/core@1.11.29)(chokidar@4.0.3) + version: 0.7.7(@swc/core@1.12.0)(chokidar@4.0.3) '@swc/core': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@twemoji/parser': specifier: 15.1.1 version: 15.1.1 @@ -190,8 +190,8 @@ importers: specifier: 1.20.3 version: 1.20.3 bullmq: - specifier: 5.53.0 - version: 5.53.0 + specifier: 5.53.2 + version: 5.53.2 cacheable-lookup: specifier: 7.0.0 version: 7.0.0 @@ -238,8 +238,8 @@ importers: specifier: 2.1.3 version: 2.1.3 form-data: - specifier: 4.0.2 - version: 4.0.2 + specifier: 4.0.3 + version: 4.0.3 got: specifier: 14.4.7 version: 14.4.7 @@ -286,14 +286,14 @@ importers: specifier: 11.0.1 version: 11.0.1 meilisearch: - specifier: 0.50.0 - version: 0.50.0 + specifier: 0.51.0 + version: 0.51.0 mfm-js: specifier: 0.24.0 version: 0.24.0 microformats-parser: - specifier: 2.0.2 - version: 2.0.2 + specifier: 2.0.3 + version: 2.0.3 mime-types: specifier: 2.1.35 version: 2.1.35 @@ -446,17 +446,17 @@ importers: specifier: 29.7.0 version: 29.7.0 '@nestjs/platform-express': - specifier: 10.4.18 - version: 10.4.18(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.2) + specifier: 10.4.19 + version: 10.4.19(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3) '@sentry/vue': - specifier: 9.22.0 - version: 9.22.0(vue@3.5.16(typescript@5.8.3)) + specifier: 9.28.0 + version: 9.28.0(vue@3.5.16(typescript@5.8.3)) '@simplewebauthn/types': specifier: 12.0.0 version: 12.0.0 '@swc/jest': specifier: 0.2.38 - version: 0.2.38(@swc/core@1.11.29) + version: 0.2.38(@swc/core@1.12.0) '@types/accepts': specifier: 1.3.7 version: 1.3.7 @@ -467,14 +467,14 @@ importers: specifier: 2.4.6 version: 2.4.6 '@types/body-parser': - specifier: 1.19.5 - version: 1.19.5 + specifier: 1.19.6 + version: 1.19.6 '@types/color-convert': specifier: 2.0.4 version: 2.0.4 '@types/content-disposition': - specifier: 0.5.8 - version: 0.5.8 + specifier: 0.5.9 + version: 0.5.9 '@types/fluent-ffmpeg': specifier: 2.1.27 version: 2.1.27 @@ -506,8 +506,8 @@ importers: specifier: 0.7.34 version: 0.7.34 '@types/node': - specifier: 22.15.21 - version: 22.15.21 + specifier: 22.15.31 + version: 22.15.31 '@types/nodemailer': specifier: 6.4.17 version: 6.4.17 @@ -521,8 +521,8 @@ importers: specifier: 0.1.2 version: 0.1.2 '@types/pg': - specifier: 8.15.2 - version: 8.15.2 + specifier: 8.15.4 + version: 8.15.4 '@types/pug': specifier: 2.0.10 version: 2.0.10 @@ -569,11 +569,11 @@ importers: specifier: 8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: 8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.32.1 - version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) aws-sdk-client-mock: specifier: 4.1.0 version: 4.1.0 @@ -582,7 +582,7 @@ importers: version: 7.0.3 eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) + version: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) execa: specifier: 8.0.1 version: 8.0.1 @@ -591,7 +591,7 @@ importers: version: 9.0.0 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.15.21) + version: 29.7.0(@types/node@22.15.31) jest-mock: specifier: 29.7.0 version: 29.7.0 @@ -612,38 +612,38 @@ importers: specifier: 1.3.11 version: 1.3.11 '@swc/core-darwin-arm64': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-darwin-x64': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-freebsd-x64': specifier: 1.3.11 version: 1.3.11 '@swc/core-linux-arm-gnueabihf': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-linux-arm64-gnu': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-linux-arm64-musl': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-linux-x64-gnu': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-linux-x64-musl': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-win32-arm64-msvc': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-win32-ia32-msvc': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@swc/core-win32-x64-msvc': - specifier: 1.11.29 - version: 1.11.29 + specifier: 1.12.0 + version: 1.12.0 '@tensorflow/tfjs': specifier: 4.22.0 version: 4.22.0(encoding@0.1.13)(seedrandom@3.0.5) @@ -715,16 +715,16 @@ importers: version: 2024.1.0 '@rollup/plugin-json': specifier: 6.1.0 - version: 6.1.0(rollup@4.41.1) + version: 6.1.0(rollup@4.42.0) '@rollup/plugin-replace': specifier: 6.0.2 - version: 6.0.2(rollup@4.41.1) + version: 6.0.2(rollup@4.42.0) '@rollup/pluginutils': specifier: 5.1.4 - version: 5.1.4(rollup@4.41.1) + version: 5.1.4(rollup@4.42.0) '@sentry/vue': - specifier: 9.24.0 - version: 9.24.0(vue@3.5.16(typescript@5.8.3)) + specifier: 9.27.0 + version: 9.27.0(vue@3.5.16(typescript@5.8.3)) '@syuilo/aiscript': specifier: 0.19.0 version: 0.19.0 @@ -733,7 +733,7 @@ importers: version: 15.1.1 '@vitejs/plugin-vue': specifier: 5.2.4 - version: 5.2.4(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3)) + version: 5.2.4(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3)) '@vue/compiler-sfc': specifier: 3.5.16 version: 3.5.16 @@ -831,17 +831,17 @@ importers: specifier: 2.3.1 version: 2.3.1 rollup: - specifier: 4.41.1 - version: 4.41.1 + specifier: 4.42.0 + version: 4.42.0 sanitize-html: specifier: 2.17.0 version: 2.17.0 sass: - specifier: 1.89.0 - version: 1.89.0 + specifier: 1.89.2 + version: 1.89.2 shiki: - specifier: 3.4.2 - version: 3.4.2 + specifier: 3.6.0 + version: 3.6.0 strict-event-emitter-types: specifier: 2.0.0 version: 2.0.0 @@ -866,15 +866,12 @@ importers: typescript: specifier: 5.8.3 version: 5.8.3 - uuid: - specifier: 11.1.0 - version: 11.1.0 v-code-diff: specifier: 1.13.1 version: 1.13.1(vue@3.5.16(typescript@5.8.3)) vite: specifier: 6.3.5 - version: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + version: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) vue: specifier: 3.5.16 version: 3.5.16(typescript@5.8.3) @@ -926,7 +923,7 @@ importers: version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3) '@storybook/react-vite': specifier: 8.6.14 - version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.41.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)) + version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.42.0)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)) '@storybook/test': specifier: 8.6.14 version: 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)) @@ -941,10 +938,10 @@ importers: version: 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.16(typescript@5.8.3)) '@storybook/vue3-vite': specifier: 8.6.14 - version: 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3)) + version: 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3)) '@tabler/icons-webfont': - specifier: 3.33.0 - version: 3.33.0 + specifier: 3.34.0 + version: 3.34.0 '@testing-library/vue': specifier: 8.1.0 version: 8.1.0(@vue/compiler-sfc@3.5.16)(@vue/server-renderer@3.5.16(vue@3.5.16(typescript@5.8.3)))(vue@3.5.16(typescript@5.8.3)) @@ -952,8 +949,8 @@ importers: specifier: 1.9.0 version: 1.9.0 '@types/estree': - specifier: 1.0.7 - version: 1.0.7 + specifier: 1.0.8 + version: 1.0.8 '@types/matter-js': specifier: 0.19.8 version: 0.19.8 @@ -961,8 +958,8 @@ importers: specifier: 4.0.9 version: 4.0.9 '@types/node': - specifier: 22.15.28 - version: 22.15.28 + specifier: 22.15.31 + version: 22.15.31 '@types/punycode.js': specifier: npm:@types/punycode@2.1.4 version: '@types/punycode@2.1.4' @@ -982,14 +979,14 @@ importers: specifier: 8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: 8.33.0 - version: 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.33.0 - version: 8.33.0(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) '@vitest/coverage-v8': - specifier: 3.1.4 - version: 3.1.4(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)) + specifier: 3.2.3 + version: 3.2.3(vitest@3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)) '@vue/compiler-core': specifier: 3.5.16 version: 3.5.16 @@ -997,26 +994,26 @@ importers: specifier: 3.5.16 version: 3.5.16 acorn: - specifier: 8.14.1 - version: 8.14.1 + specifier: 8.15.0 + version: 8.15.0 cross-env: specifier: 7.0.3 version: 7.0.3 cypress: - specifier: 14.4.0 - version: 14.4.0 + specifier: 14.4.1 + version: 14.4.1 eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) + version: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) eslint-plugin-vue: - specifier: 10.1.0 - version: 10.1.0(eslint@9.27.0)(vue-eslint-parser@10.1.3(eslint@9.27.0)) + specifier: 10.2.0 + version: 10.2.0(eslint@9.28.0)(vue-eslint-parser@10.1.3(eslint@9.28.0)) fast-glob: specifier: 3.3.3 version: 3.3.3 happy-dom: - specifier: 17.5.6 - version: 17.5.6 + specifier: 17.6.3 + version: 17.6.3 intersection-observer: specifier: 0.12.2 version: 0.12.2 @@ -1027,11 +1024,11 @@ importers: specifier: 10.0.1 version: 10.0.1 msw: - specifier: 2.8.6 - version: 2.8.6(@types/node@22.15.28)(typescript@5.8.3) + specifier: 2.10.2 + version: 2.10.2(@types/node@22.15.31)(typescript@5.8.3) msw-storybook-addon: - specifier: 2.0.4 - version: 2.0.4(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3)) + specifier: 2.0.5 + version: 2.0.5(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3)) nodemon: specifier: 3.1.10 version: 3.1.10 @@ -1060,17 +1057,17 @@ importers: specifier: 1.0.3 version: 1.0.3 vitest: - specifier: 3.1.4 - version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + specifier: 3.2.3 + version: 3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) vitest-fetch-mock: specifier: 0.4.5 - version: 0.4.5(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)) + version: 0.4.5(vitest@3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)) vue-component-type-helpers: specifier: 2.2.10 version: 2.2.10 vue-eslint-parser: specifier: 10.1.3 - version: 10.1.3(eslint@9.27.0) + version: 10.1.3(eslint@9.28.0) vue-tsc: specifier: 2.2.10 version: 2.2.10(typescript@5.8.3) @@ -1082,19 +1079,19 @@ importers: version: 15.1.0 '@rollup/plugin-json': specifier: 6.1.0 - version: 6.1.0(rollup@4.41.1) + version: 6.1.0(rollup@4.42.0) '@rollup/plugin-replace': specifier: 6.0.2 - version: 6.0.2(rollup@4.41.1) + version: 6.0.2(rollup@4.42.0) '@rollup/pluginutils': specifier: 5.1.4 - version: 5.1.4(rollup@4.41.1) + version: 5.1.4(rollup@4.42.0) '@twemoji/parser': specifier: 15.1.1 version: 15.1.1 '@vitejs/plugin-vue': specifier: 5.2.4 - version: 5.2.4(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3)) + version: 5.2.4(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3)) '@vue/compiler-sfc': specifier: 3.5.16 version: 3.5.16 @@ -1126,14 +1123,14 @@ importers: specifier: 2.3.1 version: 2.3.1 rollup: - specifier: 4.41.1 - version: 4.41.1 + specifier: 4.42.0 + version: 4.42.0 sass: - specifier: 1.89.0 - version: 1.89.0 + specifier: 1.89.2 + version: 1.89.2 shiki: - specifier: 3.4.2 - version: 3.4.2 + specifier: 3.6.0 + version: 3.6.0 tinycolor2: specifier: 1.6.0 version: 1.6.0 @@ -1151,7 +1148,7 @@ importers: version: 11.1.0 vite: specifier: 6.3.5 - version: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + version: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) vue: specifier: 3.5.16 version: 3.5.16(typescript@5.8.3) @@ -1160,20 +1157,20 @@ importers: specifier: 5.2.1 version: 5.2.1 '@tabler/icons-webfont': - specifier: 3.33.0 - version: 3.33.0 + specifier: 3.34.0 + version: 3.34.0 '@testing-library/vue': specifier: 8.1.0 version: 8.1.0(@vue/compiler-sfc@3.5.16)(@vue/server-renderer@3.5.16(vue@3.5.16(typescript@5.8.3)))(vue@3.5.16(typescript@5.8.3)) '@types/estree': - specifier: 1.0.7 - version: 1.0.7 + specifier: 1.0.8 + version: 1.0.8 '@types/micromatch': specifier: 4.0.9 version: 4.0.9 '@types/node': - specifier: 22.15.28 - version: 22.15.28 + specifier: 22.15.31 + version: 22.15.31 '@types/punycode.js': specifier: npm:@types/punycode@2.1.4 version: '@types/punycode@2.1.4' @@ -1184,35 +1181,35 @@ importers: specifier: 8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: 8.33.0 - version: 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.33.0 - version: 8.33.0(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) '@vitest/coverage-v8': - specifier: 3.1.4 - version: 3.1.4(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)) + specifier: 3.2.3 + version: 3.2.3(vitest@3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)) '@vue/runtime-core': specifier: 3.5.16 version: 3.5.16 acorn: - specifier: 8.14.1 - version: 8.14.1 + specifier: 8.15.0 + version: 8.15.0 cross-env: specifier: 7.0.3 version: 7.0.3 eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) + version: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) eslint-plugin-vue: - specifier: 10.1.0 - version: 10.1.0(eslint@9.27.0)(vue-eslint-parser@10.1.3(eslint@9.27.0)) + specifier: 10.2.0 + version: 10.2.0(eslint@9.28.0)(vue-eslint-parser@10.1.3(eslint@9.28.0)) fast-glob: specifier: 3.3.3 version: 3.3.3 happy-dom: - specifier: 17.5.6 - version: 17.5.6 + specifier: 17.6.3 + version: 17.6.3 intersection-observer: specifier: 0.12.2 version: 0.12.2 @@ -1220,8 +1217,8 @@ importers: specifier: 4.0.8 version: 4.0.8 msw: - specifier: 2.8.6 - version: 2.8.6(@types/node@22.15.28)(typescript@5.8.3) + specifier: 2.10.2 + version: 2.10.2(@types/node@22.15.31)(typescript@5.8.3) nodemon: specifier: 3.1.10 version: 3.1.10 @@ -1239,7 +1236,7 @@ importers: version: 2.2.10 vue-eslint-parser: specifier: 10.1.3 - version: 10.1.3(eslint@9.27.0) + version: 10.1.3(eslint@9.28.0) vue-tsc: specifier: 2.2.10 version: 2.2.10(typescript@5.8.3) @@ -1254,20 +1251,20 @@ importers: version: 3.5.16(typescript@5.8.3) devDependencies: '@types/node': - specifier: 22.15.28 - version: 22.15.28 + specifier: 22.15.31 + version: 22.15.31 '@typescript-eslint/eslint-plugin': - specifier: 8.33.0 - version: 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.33.0 - version: 8.33.0(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) esbuild: specifier: 0.25.5 version: 0.25.5 eslint-plugin-vue: - specifier: 10.1.0 - version: 10.1.0(eslint@9.27.0)(vue-eslint-parser@10.1.3(eslint@9.27.0)) + specifier: 10.2.0 + version: 10.2.0(eslint@9.28.0)(vue-eslint-parser@10.1.3(eslint@9.28.0)) nodemon: specifier: 3.1.10 version: 3.1.10 @@ -1276,13 +1273,13 @@ importers: version: 5.8.3 vue-eslint-parser: specifier: 10.1.3 - version: 10.1.3(eslint@9.27.0) + version: 10.1.3(eslint@9.28.0) packages/icons-subsetter: dependencies: '@tabler/icons-webfont': - specifier: 3.33.0 - version: 3.33.0 + specifier: 3.34.0 + version: 3.34.0 harfbuzzjs: specifier: 0.4.7 version: 0.4.7 @@ -1300,17 +1297,17 @@ importers: version: 2.0.1 devDependencies: '@types/node': - specifier: 22.15.21 - version: 22.15.21 + specifier: 22.15.31 + version: 22.15.31 '@types/wawoff2': specifier: 1.0.2 version: 1.0.2 '@typescript-eslint/eslint-plugin': - specifier: 8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.32.1 - version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) packages/misskey-bubble-game: dependencies: @@ -1328,17 +1325,17 @@ importers: specifier: 0.19.8 version: 0.19.8 '@types/node': - specifier: 22.15.28 - version: 22.15.28 + specifier: 22.15.31 + version: 22.15.31 '@types/seedrandom': specifier: 3.0.8 version: 3.0.8 '@typescript-eslint/eslint-plugin': - specifier: 8.33.0 - version: 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.33.0 - version: 8.33.0(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) esbuild: specifier: 0.25.5 version: 0.25.5 @@ -1369,25 +1366,25 @@ importers: devDependencies: '@microsoft/api-extractor': specifier: 7.52.8 - version: 7.52.8(@types/node@22.15.21) + version: 7.52.8(@types/node@22.15.31) '@swc/jest': specifier: 0.2.38 - version: 0.2.38(@swc/core@1.11.29) + version: 0.2.38(@swc/core@1.12.0) '@types/jest': specifier: 29.5.14 version: 29.5.14 '@types/node': - specifier: 22.15.21 - version: 22.15.21 + specifier: 22.15.31 + version: 22.15.31 '@typescript-eslint/eslint-plugin': - specifier: 8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.32.1 - version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) esbuild: - specifier: 0.25.4 - version: 0.25.4 + specifier: 0.25.5 + version: 0.25.5 execa: specifier: 8.0.1 version: 8.0.1 @@ -1396,7 +1393,7 @@ importers: version: 11.0.2 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.15.21) + version: 29.7.0(@types/node@22.15.31) jest-fetch-mock: specifier: 3.0.3 version: 3.0.3(encoding@0.1.13) @@ -1425,20 +1422,20 @@ importers: specifier: 2.7.0 version: 2.7.0(openapi-types@12.1.3) '@types/node': - specifier: 22.15.21 - version: 22.15.21 + specifier: 22.15.31 + version: 22.15.31 '@typescript-eslint/eslint-plugin': - specifier: 8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.32.1 - version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) openapi-types: specifier: 12.1.3 version: 12.1.3 openapi-typescript: - specifier: 6.7.6 - version: 6.7.6 + specifier: 7.8.0 + version: 7.8.0(typescript@5.8.3) ts-case-convert: specifier: 2.1.0 version: 2.1.0 @@ -1456,14 +1453,14 @@ importers: version: 1.2.2 devDependencies: '@types/node': - specifier: 22.15.28 - version: 22.15.28 + specifier: 22.15.31 + version: 22.15.31 '@typescript-eslint/eslint-plugin': - specifier: 8.33.0 - version: 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.33.0 - version: 8.33.0(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) esbuild: specifier: 0.25.5 version: 0.25.5 @@ -1493,14 +1490,14 @@ importers: version: link:../misskey-js devDependencies: '@typescript-eslint/parser': - specifier: 8.33.0 - version: 8.33.0(eslint@9.27.0)(typescript@5.8.3) + specifier: 8.34.0 + version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) '@typescript/lib-webworker': specifier: npm:@types/serviceworker@0.0.74 version: '@types/serviceworker@0.0.74' eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) + version: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) nodemon: specifier: 3.1.10 version: 3.1.10 @@ -1570,129 +1567,129 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.817.0': - resolution: {integrity: sha512-nZyjhlLMEXDs0ofWbpikI8tKoeKuuSgYcIb6eEZJk90Nt5HkkXn6nkWOs/kp2FdhpoGJyTILOVsDgdm7eutnLA==} + '@aws-sdk/client-s3@3.826.0': + resolution: {integrity: sha512-odX3C3CEbcBoxB06vgBjJ9jQheFsIFwHmvCIMXn8duuVyIL/klgp14+ICzbEwIgPv7xVjSlycaiURcKS876QHA==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso@3.817.0': - resolution: {integrity: sha512-fCh5rUHmWmWDvw70NNoWpE5+BRdtNi45kDnIoeoszqVg7UKF79SlG+qYooUT52HKCgDNHqgbWaXxMOSqd2I/OQ==} + '@aws-sdk/client-sso@3.826.0': + resolution: {integrity: sha512-/FEKnUC3xPkLL4RuRydwzx+y4b55HIX6qLPbGnyIs+sNmCUyc/62ijtV1Ml+b++YzEF6jWNBsJOxeyZdgrJ3Ig==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.816.0': - resolution: {integrity: sha512-Lx50wjtyarzKpMFV6V+gjbSZDgsA/71iyifbClGUSiNPoIQ4OCV0KVOmAAj7mQRVvGJqUMWKVM+WzK79CjbjWA==} + '@aws-sdk/core@3.826.0': + resolution: {integrity: sha512-BGbQYzWj3ps+dblq33FY5tz/SsgJCcXX0zjQlSC07tYvU1jHTUvsefphyig+fY38xZ4wdKjbTop+KUmXUYrOXw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.816.0': - resolution: {integrity: sha512-wUJZwRLe+SxPxRV9AENYBLrJZRrNIo+fva7ZzejsC83iz7hdfq6Rv6B/aHEdPwG/nQC4+q7UUvcRPlomyrpsBA==} + '@aws-sdk/credential-provider-env@3.826.0': + resolution: {integrity: sha512-DK3pQY8+iKK3MGDdC3uOZQ2psU01obaKlTYhEwNu4VWzgwQL4Vi3sWj4xSWGEK41vqZxiRLq6fOq7ysRI+qEZA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.816.0': - resolution: {integrity: sha512-gcWGzMQ7yRIF+ljTkR8Vzp7727UY6cmeaPrFQrvcFB8PhOqWpf7g0JsgOf5BSaP8CkkSQcTQHc0C5ZYAzUFwPg==} + '@aws-sdk/credential-provider-http@3.826.0': + resolution: {integrity: sha512-N+IVZBh+yx/9GbMZTKO/gErBi/FYZQtcFRItoLbY+6WU+0cSWyZYfkoeOxHmQV3iX9k65oljERIWUmL9x6OSQg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.817.0': - resolution: {integrity: sha512-kyEwbQyuXE+phWVzloMdkFv6qM6NOon+asMXY5W0fhDKwBz9zQLObDRWBrvQX9lmqq8BbDL1sCfZjOh82Y+RFw==} + '@aws-sdk/credential-provider-ini@3.826.0': + resolution: {integrity: sha512-g7n+qSklq/Lzjxe2Ke5QFNCgYn26a3ydZnbFIk8QqYin4pzG+qiunaqJjpV3c/EeHMlfK8bBc7MXAylKzGRccQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.817.0': - resolution: {integrity: sha512-b5mz7av0Lhavs1Bz3Zb+jrs0Pki93+8XNctnVO0drBW98x1fM4AR38cWvGbM/w9F9Q0/WEH3TinkmrMPrP4T/w==} + '@aws-sdk/credential-provider-node@3.826.0': + resolution: {integrity: sha512-UfIJXxHjmSxH6bea00HBPLkjNI2D04enQA/xNLZvB+4xtzt1/gYdCis1P4/73f5aGVVVB4/zQMobBbnjkrmbQw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.816.0': - resolution: {integrity: sha512-9Tm+AxMoV2Izvl5b9tyMQRbBwaex8JP06HN7ZeCXgC5sAsSN+o8dsThnEhf8jKN+uBpT6CLWKN1TXuUMrAmW1A==} + '@aws-sdk/credential-provider-process@3.826.0': + resolution: {integrity: sha512-kURrc4amu3NLtw1yZw7EoLNEVhmOMRUTs+chaNcmS+ERm3yK0nKjaJzmKahmwlTQTSl3wJ8jjK7x962VPo+zWw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.817.0': - resolution: {integrity: sha512-gFUAW3VmGvdnueK1bh6TOcRX+j99Xm0men1+gz3cA4RE+rZGNy1Qjj8YHlv0hPwI9OnTPZquvPzA5fkviGREWg==} + '@aws-sdk/credential-provider-sso@3.826.0': + resolution: {integrity: sha512-F19J3zcfoom6OnQ0MyAtvduVKQXPgkz9i5ExSO01J2CzjbyMhCDA99qAjHYe+LwhW+W7P/jzBPd0+uOQ2Nhh9Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.817.0': - resolution: {integrity: sha512-A2kgkS9g6NY0OMT2f2EdXHpL17Ym81NhbGnQ8bRXPqESIi7TFypFD2U6osB2VnsFv+MhwM+Ke4PKXSmLun22/A==} + '@aws-sdk/credential-provider-web-identity@3.826.0': + resolution: {integrity: sha512-o27GZ6Hy7qhuvMFVUL2eFEpBzf33Jaa/x3u3SHwU0nL7ko7jmbpeF0x4+wmagpI9X2IvVlUxIs0VaQ3YayPLEA==} engines: {node: '>=18.0.0'} - '@aws-sdk/lib-storage@3.817.0': - resolution: {integrity: sha512-2zOO8+2EmiS049PjLSNdqmmZMQj7fzE1hZJ70A94vO+KNaVhVZYuMOOiOmwMw6ePkTCcFwK40vZIIXwEQQ1v1g==} + '@aws-sdk/lib-storage@3.826.0': + resolution: {integrity: sha512-NmZJVnP09ZGTVVz8ZCD8sQeVMfvyX5c2/NEJHSdavmWi2sJHuln09i/YQg90LFGL4eCFslzME/mP3pMtLQEeKQ==} engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.817.0 + '@aws-sdk/client-s3': ^3.826.0 - '@aws-sdk/middleware-bucket-endpoint@3.808.0': - resolution: {integrity: sha512-wEPlNcs8dir9lXbuviEGtSzYSxG/NRKQrJk5ybOc7OpPGHovsN+QhDOdY3lcjOFdwMTiMIG9foUkPz3zBpLB1A==} + '@aws-sdk/middleware-bucket-endpoint@3.821.0': + resolution: {integrity: sha512-cebgeytKlWOgGczLo3BPvNY9XlzAzGZQANSysgJ2/8PSldmUpXRIF+GKPXDVhXeInWYHIfB8zZi3RqrPoXcNYQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-expect-continue@3.804.0': - resolution: {integrity: sha512-YW1hySBolALMII6C8y7Z0CRG2UX1dGJjLEBNFeefhO/xP7ZuE1dvnmfJGaEuBMnvc3wkRS63VZ3aqX6sevM1CA==} + '@aws-sdk/middleware-expect-continue@3.821.0': + resolution: {integrity: sha512-zAOoSZKe1njOrtynvK6ZORU57YGv5I7KP4+rwOvUN3ZhJbQ7QPf8gKtFUCYAPRMegaXCKF/ADPtDZBAmM+zZ9g==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.816.0': - resolution: {integrity: sha512-kftcwDxB/VoCBsUiRgkm5CIuKbTfCN1WLPbis9LRwX3kQhKgGVxG2gG78SHk4TBB0qviWVAd/t+i/KaUgwiAcA==} + '@aws-sdk/middleware-flexible-checksums@3.826.0': + resolution: {integrity: sha512-Fz9w8CFYPfSlHEB6feSsi06hdS+s+FB8k5pO4L7IV0tUa78mlhxF/VNlAJaVWYyOkZXl4HPH2K48aapACSQOXw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.804.0': - resolution: {integrity: sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==} + '@aws-sdk/middleware-host-header@3.821.0': + resolution: {integrity: sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.804.0': - resolution: {integrity: sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==} + '@aws-sdk/middleware-location-constraint@3.821.0': + resolution: {integrity: sha512-sKrm80k0t3R0on8aA/WhWFoMaAl4yvdk+riotmMElLUpcMcRXAd1+600uFVrxJqZdbrKQ0mjX0PjT68DlkYXLg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.804.0': - resolution: {integrity: sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==} + '@aws-sdk/middleware-logger@3.821.0': + resolution: {integrity: sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.804.0': - resolution: {integrity: sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==} + '@aws-sdk/middleware-recursion-detection@3.821.0': + resolution: {integrity: sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.816.0': - resolution: {integrity: sha512-jJ+EAXM7gnOwiCM6rrl4AUNY5urmtIsX7roTkxtb4DevJxcS+wFYRRg3/j33fQbuxQZrvk21HqxyZYx5UH70PA==} + '@aws-sdk/middleware-sdk-s3@3.826.0': + resolution: {integrity: sha512-8F0qWaYKfvD/de1AKccXuigM+gb/IZSncCqxdnFWqd+TFzo9qI9Hh+TpUhWOMYSgxsMsYQ8ipmLzlD/lDhjrmA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-ssec@3.804.0': - resolution: {integrity: sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==} + '@aws-sdk/middleware-ssec@3.821.0': + resolution: {integrity: sha512-YYi1Hhr2AYiU/24cQc8HIB+SWbQo6FBkMYojVuz/zgrtkFmALxENGF/21OPg7f/QWd+eadZJRxCjmRwh5F2Cxg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.816.0': - resolution: {integrity: sha512-bHRSlWZ0xDsFR8E2FwDb//0Ff6wMkVx4O+UKsfyNlAbtqCiiHRt5ANNfKPafr95cN2CCxLxiPvFTFVblQM5TsQ==} + '@aws-sdk/middleware-user-agent@3.826.0': + resolution: {integrity: sha512-j404+EcfBbtTlAhyObjXbdKwwDXO1pCxHvR5Fw8FXNvp/H330j6YnXgs3SJ6d3bZUwUJ/ztPx2S5AlBbLVLDFw==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.817.0': - resolution: {integrity: sha512-vQ2E06A48STJFssueJQgxYD8lh1iGJoLJnHdshRDWOQb8gy1wVQR+a7MkPGhGR6lGoS0SCnF/Qp6CZhnwLsqsQ==} + '@aws-sdk/nested-clients@3.826.0': + resolution: {integrity: sha512-p7olPq0uTtHqGuXI1GSc/gzKDvV55PMbLtnmupEDfnY9SoRu+QatbWQ6da9sI1lhOcNmRMgiNQBXFzaUFrG+SQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.808.0': - resolution: {integrity: sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==} + '@aws-sdk/region-config-resolver@3.821.0': + resolution: {integrity: sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.816.0': - resolution: {integrity: sha512-idcr9NW86sSIXASSej3423Selu6fxlhhJJtMgpAqoCH/HJh1eQrONJwNKuI9huiruPE8+02pwxuePvLW46X2mw==} + '@aws-sdk/signature-v4-multi-region@3.826.0': + resolution: {integrity: sha512-3fEi/zy6tpMzomYosksGtu7jZqGFcdBXoL7YRsG7OEeQzBbOW9B+fVaQZ4jnsViSjzA/yKydLahMrfPnt+iaxg==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.817.0': - resolution: {integrity: sha512-CYN4/UO0VaqyHf46ogZzNrVX7jI3/CfiuktwKlwtpKA6hjf2+ivfgHSKzPpgPBcSEfiibA/26EeLuMnB6cpSrQ==} + '@aws-sdk/token-providers@3.826.0': + resolution: {integrity: sha512-iCOcVAqGPSHtQL8ZBXifZMEcHyUl9wJ8HvLZ5l1ohA/3ZNP+dqEPGi7jfhR5jZKs+xyp2jxByFqfil9PjI9c5A==} engines: {node: '>=18.0.0'} - '@aws-sdk/types@3.804.0': - resolution: {integrity: sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==} + '@aws-sdk/types@3.821.0': + resolution: {integrity: sha512-Znroqdai1a90TlxGaJ+FK1lwC0fHpo97Xjsp5UKGR5JODYm7f9+/fF17ebO1KdoBr/Rm0UIFiF5VmI8ts9F1eA==} engines: {node: '>=18.0.0'} '@aws-sdk/util-arn-parser@3.804.0': resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.808.0': - resolution: {integrity: sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==} + '@aws-sdk/util-endpoints@3.821.0': + resolution: {integrity: sha512-Uknt/zUZnLE76zaAAPEayOeF5/4IZ2puTFXvcSCWHsi9m3tqbb9UozlnlVqvCZLCRWfQryZQoG2W4XSS3qgk5A==} engines: {node: '>=18.0.0'} '@aws-sdk/util-locate-window@3.208.0': resolution: {integrity: sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==} engines: {node: '>=14.0.0'} - '@aws-sdk/util-user-agent-browser@3.804.0': - resolution: {integrity: sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==} + '@aws-sdk/util-user-agent-browser@3.821.0': + resolution: {integrity: sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==} - '@aws-sdk/util-user-agent-node@3.816.0': - resolution: {integrity: sha512-Q6dxmuj4hL7pudhrneWEQ7yVHIQRBFr0wqKLF1opwOi1cIePuoEbPyJ2jkel6PDEv1YMfvsAKaRshp6eNA8VHg==} + '@aws-sdk/util-user-agent-node@3.826.0': + resolution: {integrity: sha512-wHw6bZQWIMcFF/8r03aY9Itp6JLBYY4absGGhCDK1dc3tPEfi8NVSdb05a/Oz+g4TVaDdxLo0OQ/OKMS1DFRHQ==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1700,14 +1697,18 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.804.0': - resolution: {integrity: sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==} + '@aws-sdk/xml-builder@3.821.0': + resolution: {integrity: sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.7': resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} @@ -2322,8 +2323,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.27.0': - resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} + '@eslint/js@9.28.0': + resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -2900,76 +2901,76 @@ packages: cpu: [x64] os: [win32] - '@mswjs/interceptors@0.38.7': - resolution: {integrity: sha512-Jkb27iSn7JPdkqlTqKfhncFfnEZsIJVYxsFbUSWEkxdIPdsyngrhoDBk0/BGD2FQcRH99vlRrkHpNTyKqI+0/w==} + '@mswjs/interceptors@0.39.2': + resolution: {integrity: sha512-RuzCup9Ct91Y7V79xwCb146RaBRHZ7NBbrIUySumd1rpKqHL5OonaqrGIbug5hNwP/fRyxFMA6ISgw4FTtYFYg==} engines: {node: '>=18'} - '@napi-rs/canvas-android-arm64@0.1.70': - resolution: {integrity: sha512-I/YOuQ0wbkVYxVaYtCgN42WKTYxNqFA0gTcTrHIGG1jfpDSyZWII/uHcjOo4nzd19io6Y4+/BqP8E5hJgf9OmQ==} + '@napi-rs/canvas-android-arm64@0.1.71': + resolution: {integrity: sha512-cxi3VCotIOS9kNFQI7dcysbVJi106pxryVY1Hi85pX+ZeqahRyeqc/NsLaZ998Ae99+F3HI5X/39G1Y/Byrf0A==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@napi-rs/canvas-darwin-arm64@0.1.70': - resolution: {integrity: sha512-4pPGyXetHIHkw2TOJHujt3mkCP8LdDu8+CT15ld9Id39c752RcI0amDHSuMLMQfAjvusA9B5kKxazwjMGjEJpQ==} + '@napi-rs/canvas-darwin-arm64@0.1.71': + resolution: {integrity: sha512-7Y4D/6vIuMLYsVNtRM/w2j0+fB1GyqeOxc7I0BTx8eLP1S6BZE2Rj6zJfdG+zmLEOW0IlHa+VQq1q2MUAjW84w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@napi-rs/canvas-darwin-x64@0.1.70': - resolution: {integrity: sha512-+2N6Os9LbkmDMHL+raknrUcLQhsXzc5CSXRbXws9C3pv/mjHRVszQ9dhFUUe9FjfPhCJznO6USVdwOtu7pOrzQ==} + '@napi-rs/canvas-darwin-x64@0.1.71': + resolution: {integrity: sha512-Z0IUqxclrYdfVt/SK9nKCzUHTOXKTWiygtO71YCzs0OtxKdNI7GJRJdYG48wXZEDQ/pqTF4F7Ifgtidfc2tYpg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.70': - resolution: {integrity: sha512-QjscX9OaKq/990sVhSMj581xuqLgiaPVMjjYvWaCmAJRkNQ004QfoSMEm3FoTqM4DRoquP8jvuEXScVJsc1rqQ==} + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.71': + resolution: {integrity: sha512-KlpqqCASak5ruY+UIolJgmhMZ9Pa2o1QyaNu648L8sz4WNBbNa+aOT60XCLCL1VIKLv11B3MlNgiOHoYNmDhXQ==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@napi-rs/canvas-linux-arm64-gnu@0.1.70': - resolution: {integrity: sha512-LNakMOwwqwiHIwMpnMAbFRczQMQ7TkkMyATqFCOtUJNlE6LPP/QiUj/mlFrNbUn/hctqShJ60gWEb52ZTALbVw==} + '@napi-rs/canvas-linux-arm64-gnu@0.1.71': + resolution: {integrity: sha512-bdGZCGu8YQNAiu3nkIVVUp6nIn6fPd36IuZsLXTG027E52KyIuZ3obCxehSwjDIUNkFWvmff5D6JYfWwAoioEw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/canvas-linux-arm64-musl@0.1.70': - resolution: {integrity: sha512-wBTOllEYNfJCHOdZj9v8gLzZ4oY3oyPX8MSRvaxPm/s7RfEXxCyZ8OhJ5xAyicsDdbE5YBZqdmaaeP5+xKxvtg==} + '@napi-rs/canvas-linux-arm64-musl@0.1.71': + resolution: {integrity: sha512-1R5sMWe9ur8uM+hAeylBwG0b6UHDR+iWQNgzXmF9vbBYRooQvmDWqpcgytKLJAC0vnWhIkKwqd7yExn7cwczmg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/canvas-linux-riscv64-gnu@0.1.70': - resolution: {integrity: sha512-GVUUPC8TuuFqHip0rxHkUqArQnlzmlXmTEBuXAWdgCv85zTCFH8nOHk/YCF5yo0Z2eOm8nOi90aWs0leJ4OE5Q==} + '@napi-rs/canvas-linux-riscv64-gnu@0.1.71': + resolution: {integrity: sha512-xjjKsipueuG+LdKIk6/uAlqdo+rzGcmNpTZPXdakIT1sHX4NNSnQTzjRaj9Gh96Czjd9G89UWR0KIlE7fwOgFA==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - '@napi-rs/canvas-linux-x64-gnu@0.1.70': - resolution: {integrity: sha512-/kvUa2lZRwGNyfznSn5t1ShWJnr/m5acSlhTV3eXECafObjl0VBuA1HJw0QrilLpb4Fe0VLywkpD1NsMoVDROQ==} + '@napi-rs/canvas-linux-x64-gnu@0.1.71': + resolution: {integrity: sha512-3s6YpklXDB4OeeULG1XTRyKrKAOo7c3HHEqM9A6N4STSjMaJtzmpp7tB/JTvAFeOeFte6gWN8IwC+7AjGJ6MpQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/canvas-linux-x64-musl@0.1.70': - resolution: {integrity: sha512-aqlv8MLpycoMKRmds7JWCfVwNf1fiZxaU7JwJs9/ExjTD8lX2KjsO7CTeAj5Cl4aEuzxUWbJPUUE2Qu9cZ1vfg==} + '@napi-rs/canvas-linux-x64-musl@0.1.71': + resolution: {integrity: sha512-5v9aCLzCXw7u10ray5juQMdl7TykZSn1X5AIGYwBvTAcKSgrqaR9QkRxp1Lqk3njQmFekOW1SFN9bZ/i/6y6kA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/canvas-win32-x64-msvc@0.1.70': - resolution: {integrity: sha512-Q9QU3WIpwBTVHk4cPfBjGHGU4U0llQYRXgJtFtYqqGNEOKVN4OT6PQ+ve63xwIPODMpZ0HHyj/KLGc9CWc3EtQ==} + '@napi-rs/canvas-win32-x64-msvc@0.1.71': + resolution: {integrity: sha512-oJughk6xjsRIr0Rd9EqjmZmhIMkvcPuXgr3MNn2QexTqn+YFOizrwHS5ha0BDfFl7TEGRvwaDUXBQtu8JKXb8A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@napi-rs/canvas@0.1.70': - resolution: {integrity: sha512-nD6NGa4JbNYSZYsTnLGrqe9Kn/lCkA4ybXt8sx5ojDqZjr2i0TWAHxx/vhgfjX+i3hCdKWufxYwi7CfXqtITSA==} + '@napi-rs/canvas@0.1.71': + resolution: {integrity: sha512-92ybDocKl6JM48ZpYbj+A7Qt45IaTABDk0y3sDecEQfgdhfNzJtEityqNHoCZ4Vty2dldPkJhxgvOnbrQMXTTA==} engines: {node: '>= 10'} - '@nestjs/common@11.1.2': - resolution: {integrity: sha512-cHh4OPH44PjaHM93D1jgE1HO/B7XTZVRDxy/cPuGgyMEA4p2zXO+qqcOgTMC5FYcp7dX9jLeCjXAU0ToFAnODw==} + '@nestjs/common@11.1.3': + resolution: {integrity: sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==} peerDependencies: class-transformer: '>=0.4.1' class-validator: '>=0.13.2' @@ -2981,8 +2982,8 @@ packages: class-validator: optional: true - '@nestjs/core@11.1.2': - resolution: {integrity: sha512-QRuyxwu0BjNfmmmunsw1ylX7RSyfDQHt+xD+tKncdtgiMOOzAu+LA1gB4WoZnw4frQkk+qZbhEbM61cIjOxD3w==} + '@nestjs/core@11.1.3': + resolution: {integrity: sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==} engines: {node: '>= 20'} peerDependencies: '@nestjs/common': ^11.0.0 @@ -2999,14 +3000,14 @@ packages: '@nestjs/websockets': optional: true - '@nestjs/platform-express@10.4.18': - resolution: {integrity: sha512-v+W+Pu5NOVK/bSG5A5mOnXyoVwN5mJUe4o0j0UJ9Ig9JMmjVxg+Zw2ydTfpOQ+R82lRYWJUjjv3dvqKaFW2z7w==} + '@nestjs/platform-express@10.4.19': + resolution: {integrity: sha512-IeQkBZUtPeJoO4E0QqSLwkB+60KcThw8/s4gGvAwIRJ5ViuXoxnwU59eBDy84PUuVbNe4VdKjfAF9fuQOEh11Q==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/core': ^10.0.0 - '@nestjs/testing@11.1.2': - resolution: {integrity: sha512-BQxVKUVW6gzEbbHAvmg5RgcP3s++pRgTCmsgaDF/DtcLRUeKi8SjAdqzLm14xbkMeibxOf3fNqM2iwqUKj8ffw==} + '@nestjs/testing@11.1.3': + resolution: {integrity: sha512-CeXG6/eEqgFIkPkmU00y18Dd3DLOIDFhPItzJK1SWckKo6IhcnfoRJzGx75bmuvUMjb51j6An96S/+MJ2ty9jA==} peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/core': ^11.0.0 @@ -3410,6 +3411,16 @@ packages: resolution: {integrity: sha512-9FC/6ho8uFa8fV50+FPy/ngWN53jaUu4GRXlAjcxIRrzhltJnpKkBG2Tp0IDraFJeWrOpk84RJ9EMEEYzaI1Bw==} engines: {node: '>=18'} + '@redocly/ajv@8.11.2': + resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} + + '@redocly/config@0.22.2': + resolution: {integrity: sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==} + + '@redocly/openapi-core@1.34.3': + resolution: {integrity: sha512-3arRdUp1fNx55itnjKiUhO6t4Mf91TsrTIYINDNLAZPS0TPd5YpiXRctwjel0qqWoOOhjA34cZ3m4dksLDFUYg==} + engines: {node: '>=18.17.0', npm: '>=9.5.0'} + '@rollup/plugin-json@6.1.0': resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} @@ -3437,103 +3448,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.41.1': - resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} + '@rollup/rollup-android-arm-eabi@4.42.0': + resolution: {integrity: sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.41.1': - resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} + '@rollup/rollup-android-arm64@4.42.0': + resolution: {integrity: sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.41.1': - resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + '@rollup/rollup-darwin-arm64@4.42.0': + resolution: {integrity: sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.41.1': - resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} + '@rollup/rollup-darwin-x64@4.42.0': + resolution: {integrity: sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.41.1': - resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} + '@rollup/rollup-freebsd-arm64@4.42.0': + resolution: {integrity: sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.41.1': - resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} + '@rollup/rollup-freebsd-x64@4.42.0': + resolution: {integrity: sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.41.1': - resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} + '@rollup/rollup-linux-arm-gnueabihf@4.42.0': + resolution: {integrity: sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.41.1': - resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} + '@rollup/rollup-linux-arm-musleabihf@4.42.0': + resolution: {integrity: sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.41.1': - resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} + '@rollup/rollup-linux-arm64-gnu@4.42.0': + resolution: {integrity: sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.41.1': - resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} + '@rollup/rollup-linux-arm64-musl@4.42.0': + resolution: {integrity: sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.41.1': - resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} + '@rollup/rollup-linux-loongarch64-gnu@4.42.0': + resolution: {integrity: sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': - resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} + '@rollup/rollup-linux-powerpc64le-gnu@4.42.0': + resolution: {integrity: sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.41.1': - resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} + '@rollup/rollup-linux-riscv64-gnu@4.42.0': + resolution: {integrity: sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.41.1': - resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} + '@rollup/rollup-linux-riscv64-musl@4.42.0': + resolution: {integrity: sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.41.1': - resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} + '@rollup/rollup-linux-s390x-gnu@4.42.0': + resolution: {integrity: sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.41.1': - resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} + '@rollup/rollup-linux-x64-gnu@4.42.0': + resolution: {integrity: sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.41.1': - resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} + '@rollup/rollup-linux-x64-musl@4.42.0': + resolution: {integrity: sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.41.1': - resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} + '@rollup/rollup-win32-arm64-msvc@4.42.0': + resolution: {integrity: sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.41.1': - resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} + '@rollup/rollup-win32-ia32-msvc@4.42.0': + resolution: {integrity: sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.41.1': - resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} + '@rollup/rollup-win32-x64-msvc@4.42.0': + resolution: {integrity: sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==} cpu: [x64] os: [win32] @@ -3565,56 +3576,56 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@sentry-internal/browser-utils@9.22.0': - resolution: {integrity: sha512-Ou1tBnVxFAIn8i9gvrWzRotNJQYiu3awNXpsFCw6qFwmiKAVPa6b13vCdolhXnrIiuR77jY1LQnKh9hXpoRzsg==} + '@sentry-internal/browser-utils@9.27.0': + resolution: {integrity: sha512-SJa7f6Ct1BzP8rWEomnshSGN1CmT+axNKvT+StrbFPD6AyHnYfFLJpKgc2iToIJHB/pmeuOI9dUwqtzVx+5nSw==} engines: {node: '>=18'} - '@sentry-internal/browser-utils@9.24.0': - resolution: {integrity: sha512-fWIrHyui8KKufnbqhGyDvvr+u9wiOEEzxXEjs/CKp+6fa+jej6Mk8K+su1f/mz7R3HVzhxvht/gZ+y193uK4qw==} + '@sentry-internal/browser-utils@9.28.0': + resolution: {integrity: sha512-SqntPnIXudP3FoKj4mQ1BVPC1RNzo4CGtAxJnLpbIUpdT/khJVM6Q59zrGl2MgZ7URZCI986L5jXihQeferf6g==} engines: {node: '>=18'} - '@sentry-internal/feedback@9.22.0': - resolution: {integrity: sha512-zgMVkoC61fgi41zLcSZA59vOtKxcLrKBo1ECYhPD1hxEaneNqY5fhXDwlQBw96P5l2yqkgfX6YZtSdU4ejI9yA==} + '@sentry-internal/feedback@9.27.0': + resolution: {integrity: sha512-e7L8eG0y63RulN352lmafoCCfQGg4jLVT8YLx6096eWu/YKLkgmVpgi8livsT5WREnH+HB+iFSrejOwK7cRkhw==} engines: {node: '>=18'} - '@sentry-internal/feedback@9.24.0': - resolution: {integrity: sha512-Z9jQqKzRppwAEqiytLWNV8JOo52vlxcSGz52FjKx3KXG75PXwk0M3sBXh762WoGLisUIRLTp8LOk6304L/O8dg==} + '@sentry-internal/feedback@9.28.0': + resolution: {integrity: sha512-z2jShmVENsesmDnShEOv841Saw0zXe1tX6GHNgkK9f6NrUMbL970JvGKByBFTffhQH6uQ0WeNPnXJ5L/YKnfDg==} engines: {node: '>=18'} - '@sentry-internal/replay-canvas@9.22.0': - resolution: {integrity: sha512-EcG9IMSEalFe49kowBTJObWjof/iHteDwpyuAszsFDdQUYATrVUtwpwN7o52vDYWJud4arhjrQnMamIGxa79eQ==} + '@sentry-internal/replay-canvas@9.27.0': + resolution: {integrity: sha512-44rVSt3LCH6qePYRQrl4WUBwnkOk9dzinmnKmuwRksEdDOkVq5KBRhi/IDr7omwSpX8C+KrX5alfKhOx1cP0gQ==} engines: {node: '>=18'} - '@sentry-internal/replay-canvas@9.24.0': - resolution: {integrity: sha512-506RdDF6iE8hMyzpzp9Vc0GM7kELxxs7UCoi/6KpvXFftcydWI3S2bru8dEZsxVoKh2hdle6SpbNgl+iPI0DSQ==} + '@sentry-internal/replay-canvas@9.28.0': + resolution: {integrity: sha512-Bv4mbtUrRV3p6PpFQPseLv3+Uaen+3AlfX02Z6QHY1sMa4lpt+U8OHfRGLprnzb6Rarw6fK2LNVL5rnV9LNMwA==} engines: {node: '>=18'} - '@sentry-internal/replay@9.22.0': - resolution: {integrity: sha512-9GOycoKbrclcRXfcbNV8svbmAsOS5R4wXBQmKF4pFLkmFA/lJv9kdZSNYkRvkrxdNfbMIJXP+DV9EqTZcryXig==} + '@sentry-internal/replay@9.27.0': + resolution: {integrity: sha512-n2kO1wOfCG7GxkMAqbYYkpgTqJM5tuVLdp0JuNCqTOLTXWvw6svWGaYKlYpKUgsK9X/GDzJYSXZmfe+Dbg+FJQ==} engines: {node: '>=18'} - '@sentry-internal/replay@9.24.0': - resolution: {integrity: sha512-312wMPeQI8K2vO/lA/CF6Uv5UReoZC7RarsNUJEoOKa9Bq1BXWUq929oTHzu/2NDv194H2u3eqSGsSp6xiuKTw==} + '@sentry-internal/replay@9.28.0': + resolution: {integrity: sha512-BVGVBlmcpJdT55d/vywjfK1u6zMC5ycjJBxU1wUCNgCU3cSKRDBnvmYgk/+Ay23bFryT28Q4hM1p5qBBAOfxjQ==} engines: {node: '>=18'} - '@sentry/browser@9.22.0': - resolution: {integrity: sha512-3TeRm74dvX0JdjX0AgkQa+22iUHwHnY+Q6M05NZ+tDeCNHGK/mEBTeqquS1oQX67jWyuvYmG3VV6RJUxtG9Paw==} + '@sentry/browser@9.27.0': + resolution: {integrity: sha512-geR3lhRJOmUQqi1WgovLSYcD/f66zYnctdnDEa7j1BW2XIB1nlTJn0mpYyAHghXKkUN/pBpp1Z+Jk0XlVwFYVg==} engines: {node: '>=18'} - '@sentry/browser@9.24.0': - resolution: {integrity: sha512-RP+27/owvIqD4J0TibIHK1UcA7iObxLOXBEilDKjaJOZMLhv3JkpU8A+UI9pFzEYqeIGVDDaBzYgbCHrLWcoCA==} + '@sentry/browser@9.28.0': + resolution: {integrity: sha512-ttqiv3D9sIB43nZnJTTln1nXw1p4C5BDSh+sHmGUOiqdCH6ND3HByDITYMYIOz1lACSISTT4V+MEpqx0V25Tlw==} engines: {node: '>=18'} '@sentry/core@8.55.0': resolution: {integrity: sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==} engines: {node: '>=14.18'} - '@sentry/core@9.22.0': - resolution: {integrity: sha512-ixvtKmPF42Y6ckGUbFlB54OWI75H2gO5UYHojO6eXFpS7xO3ZGgV/QH6wb40mWK+0w5XZ0233FuU9VpsuE6mKA==} + '@sentry/core@9.27.0': + resolution: {integrity: sha512-Zb2SSAdWXQjTem+sVWrrAq9L6YYfxyoTwtapaE6C6qZBR5C8Uak0wcYww8StaCFH7dDA/PSW+VxOwjNXocrQHQ==} engines: {node: '>=18'} - '@sentry/core@9.24.0': - resolution: {integrity: sha512-uRWrB4Y49ZOWcDLCXqdjd2Fs6Onill0GQI+JgXMw7wa+i03+QRiQvUAUyde8O62jR4dvP3GDo9PDWnDNhi3z5A==} + '@sentry/core@9.28.0': + resolution: {integrity: sha512-vzD9xhg9S864jxfCpq77feCE4y7iP2cZYsNMoTupl1vTUlmXlhp7XgF832fEMjEZq4vrPhaqCNsde7Sc3PAbaQ==} engines: {node: '>=18'} '@sentry/node@8.55.0': @@ -3637,8 +3648,8 @@ packages: engines: {node: '>=14.18'} hasBin: true - '@sentry/vue@9.22.0': - resolution: {integrity: sha512-VmLoJEwSagoU2LA/MbFO6PvK7UeE9I9mVzSYR/aarPcran+/eG/clzGjD13lk6RoifaXZ18LWdO4/eO9eJqjbw==} + '@sentry/vue@9.27.0': + resolution: {integrity: sha512-LeoxSCDtynAA89tcUD3r1JblCwFjzByID9O0y1JkMU1UlVL08vbV9fNSfEhJ66WdvBo5KPTRn5ScHLUOoae/WA==} engines: {node: '>=18'} peerDependencies: pinia: 2.x || 3.x @@ -3647,8 +3658,8 @@ packages: pinia: optional: true - '@sentry/vue@9.24.0': - resolution: {integrity: sha512-FreIN5w9257U41imU8f2j+ix67s8MmZld9xhbA4nqCZDuW6m/fQtha+IdUNpcNYm6z+JsstGnPKdcPBJtDvTiA==} + '@sentry/vue@9.28.0': + resolution: {integrity: sha512-k3TG9yuta5pbmX5If5BhaL+GCs1hKrepYf0XdDW+XSMB5gXJ7BzeCNrAGbGWfRlr+pioiRz4V9nxTTBY1yX5mQ==} engines: {node: '>=18'} peerDependencies: pinia: 2.x || 3.x @@ -3657,23 +3668,23 @@ packages: pinia: optional: true - '@shikijs/core@3.4.2': - resolution: {integrity: sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ==} + '@shikijs/core@3.6.0': + resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==} - '@shikijs/engine-javascript@3.4.2': - resolution: {integrity: sha512-1/adJbSMBOkpScCE/SB6XkjJU17ANln3Wky7lOmrnpl+zBdQ1qXUJg2GXTYVHRq+2j3hd1DesmElTXYDgtfSOQ==} + '@shikijs/engine-javascript@3.6.0': + resolution: {integrity: sha512-7YnLhZG/TU05IHMG14QaLvTW/9WiK8SEYafceccHUSXs2Qr5vJibUwsDfXDLmRi0zHdzsxrGKpSX6hnqe0k8nA==} - '@shikijs/engine-oniguruma@3.4.2': - resolution: {integrity: sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==} + '@shikijs/engine-oniguruma@3.6.0': + resolution: {integrity: sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==} - '@shikijs/langs@3.4.2': - resolution: {integrity: sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==} + '@shikijs/langs@3.6.0': + resolution: {integrity: sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==} - '@shikijs/themes@3.4.2': - resolution: {integrity: sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==} + '@shikijs/themes@3.6.0': + resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==} - '@shikijs/types@3.4.2': - resolution: {integrity: sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==} + '@shikijs/types@3.6.0': + resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -3737,8 +3748,8 @@ packages: resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} engines: {node: '>=14.0.0'} - '@smithy/abort-controller@4.0.3': - resolution: {integrity: sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==} + '@smithy/abort-controller@4.0.4': + resolution: {integrity: sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==} engines: {node: '>=18.0.0'} '@smithy/chunked-blob-reader-native@4.0.0': @@ -3749,56 +3760,56 @@ packages: resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.1.3': - resolution: {integrity: sha512-N5e7ofiyYDmHxnPnqF8L4KtsbSDwyxFRfDK9bp1d9OyPO4ytRLd0/XxCqi5xVaaqB65v4woW8uey6jND6zxzxQ==} + '@smithy/config-resolver@4.1.4': + resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} engines: {node: '>=18.0.0'} - '@smithy/core@3.4.0': - resolution: {integrity: sha512-dDYISQo7k0Ml/rXlFIjkTmTcQze/LxhtIRAEmZ6HJ/EI0inVxVEVnrUXJ7jPx6ZP0GHUhFm40iQcCgS5apXIXA==} + '@smithy/core@3.5.3': + resolution: {integrity: sha512-xa5byV9fEguZNofCclv6v9ra0FYh5FATQW/da7FQUVTic94DfrN/NvmKZjrMyzbpqfot9ZjBaO8U1UeTbmSLuA==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.0.5': - resolution: {integrity: sha512-saEAGwrIlkb9XxX/m5S5hOtzjoJPEK6Qw2f9pYTbIsMPOFyGSXBBTw95WbOyru8A1vIS2jVCCU1Qhz50QWG3IA==} + '@smithy/credential-provider-imds@4.0.6': + resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@4.0.2': - resolution: {integrity: sha512-p+f2kLSK7ZrXVfskU/f5dzksKTewZk8pJLPvER3aFHPt76C2MxD9vNatSfLzzQSQB4FNO96RK4PSXfhD1TTeMQ==} + '@smithy/eventstream-codec@4.0.4': + resolution: {integrity: sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@4.0.2': - resolution: {integrity: sha512-CepZCDs2xgVUtH7ZZ7oDdZFH8e6Y2zOv8iiX6RhndH69nlojCALSKK+OXwZUgOtUZEUaZ5e1hULVCHYbCn7pug==} + '@smithy/eventstream-serde-browser@4.0.4': + resolution: {integrity: sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.1.0': - resolution: {integrity: sha512-1PI+WPZ5TWXrfj3CIoKyUycYynYJgZjuQo8U+sphneOtjsgrttYybdqESFReQrdWJ+LKt6NEdbYzmmfDBmjX2A==} + '@smithy/eventstream-serde-config-resolver@4.1.2': + resolution: {integrity: sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.0.2': - resolution: {integrity: sha512-C5bJ/C6x9ENPMx2cFOirspnF9ZsBVnBMtP6BdPl/qYSuUawdGQ34Lq0dMcf42QTjUZgWGbUIZnz6+zLxJlb9aw==} + '@smithy/eventstream-serde-node@4.0.4': + resolution: {integrity: sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.0.2': - resolution: {integrity: sha512-St8h9JqzvnbB52FtckiHPN4U/cnXcarMniXRXTKn0r4b4XesZOGiAyUdj1aXbqqn1icSqBlzzUsCl6nPB018ng==} + '@smithy/eventstream-serde-universal@4.0.4': + resolution: {integrity: sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.0.3': - resolution: {integrity: sha512-yBZwavI31roqTndNI7ONHqesfH01JmjJK6L3uUpZAhyAmr86LN5QiPzfyZGIxQmed8VEK2NRSQT3/JX5V1njfQ==} + '@smithy/fetch-http-handler@5.0.4': + resolution: {integrity: sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==} engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.0.2': - resolution: {integrity: sha512-3g188Z3DyhtzfBRxpZjU8R9PpOQuYsbNnyStc/ZVS+9nVX1f6XeNOa9IrAh35HwwIZg+XWk8bFVtNINVscBP+g==} + '@smithy/hash-blob-browser@4.0.4': + resolution: {integrity: sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==} engines: {node: '>=18.0.0'} - '@smithy/hash-node@4.0.2': - resolution: {integrity: sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==} + '@smithy/hash-node@4.0.4': + resolution: {integrity: sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==} engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@4.0.2': - resolution: {integrity: sha512-POWDuTznzbIwlEXEvvXoPMS10y0WKXK790soe57tFRfvf4zBHyzE529HpZMqmDdwG9MfFflnyzndUQ8j78ZdSg==} + '@smithy/hash-stream-node@4.0.4': + resolution: {integrity: sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==} engines: {node: '>=18.0.0'} - '@smithy/invalid-dependency@4.0.2': - resolution: {integrity: sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==} + '@smithy/invalid-dependency@4.0.4': + resolution: {integrity: sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.0.0': @@ -3809,92 +3820,92 @@ packages: resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} engines: {node: '>=18.0.0'} - '@smithy/md5-js@4.0.2': - resolution: {integrity: sha512-Hc0R8EiuVunUewCse2syVgA2AfSRco3LyAv07B/zCOMa+jpXI9ll+Q21Nc6FAlYPcpNcAXqBzMhNs1CD/pP2bA==} + '@smithy/md5-js@4.0.4': + resolution: {integrity: sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==} engines: {node: '>=18.0.0'} - '@smithy/middleware-content-length@4.0.2': - resolution: {integrity: sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==} + '@smithy/middleware-content-length@4.0.4': + resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.1.7': - resolution: {integrity: sha512-KDzM7Iajo6K7eIWNNtukykRT4eWwlHjCEsULZUaSfi/SRSBK8BPRqG5FsVfp58lUxcvre8GT8AIPIqndA0ERKw==} + '@smithy/middleware-endpoint@4.1.11': + resolution: {integrity: sha512-zDogwtRLzKl58lVS8wPcARevFZNBOOqnmzWWxVe9XiaXU2CADFjvJ9XfNibgkOWs08sxLuSr81NrpY4mgp9OwQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.1.8': - resolution: {integrity: sha512-e2OtQgFzzlSG0uCjcJmi02QuFSRTrpT11Eh2EcqqDFy7DYriteHZJkkf+4AsxsrGDugAtPFcWBz1aq06sSX5fQ==} + '@smithy/middleware-retry@4.1.12': + resolution: {integrity: sha512-wvIH70c4e91NtRxdaLZF+mbLZ/HcC6yg7ySKUiufL6ESp6zJUSnJucZ309AvG9nqCFHSRB5I6T3Ez1Q9wCh0Ww==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.0.6': - resolution: {integrity: sha512-YECyl7uNII+jCr/9qEmCu8xYL79cU0fqjo0qxpcVIU18dAPHam/iYwcknAu4Jiyw1uN+sAx7/SMf/Kmef/Jjsg==} + '@smithy/middleware-serde@4.0.8': + resolution: {integrity: sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.0.3': - resolution: {integrity: sha512-baeV7t4jQfQtFxBADFmnhmqBmqR38dNU5cvEgHcMK/Kp3D3bEI0CouoX2Sr/rGuntR+Eg0IjXdxnGGTc6SbIkw==} + '@smithy/middleware-stack@4.0.4': + resolution: {integrity: sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.1.2': - resolution: {integrity: sha512-SUvNup8iU1v7fmM8XPk+27m36udmGCfSz+VZP5Gb0aJ3Ne0X28K/25gnsrg3X1rWlhcnhzNUUysKW/Ied46ivQ==} + '@smithy/node-config-provider@4.1.3': + resolution: {integrity: sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==} engines: {node: '>=18.0.0'} '@smithy/node-http-handler@2.5.0': resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} engines: {node: '>=14.0.0'} - '@smithy/node-http-handler@4.0.5': - resolution: {integrity: sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==} + '@smithy/node-http-handler@4.0.6': + resolution: {integrity: sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.0.3': - resolution: {integrity: sha512-Wcn17QNdawJZcZZPBuMuzyBENVi1AXl4TdE0jvzo4vWX2x5df/oMlmr/9M5XAAC6+yae4kWZlOYIsNsgDrMU9A==} + '@smithy/property-provider@4.0.4': + resolution: {integrity: sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==} engines: {node: '>=18.0.0'} '@smithy/protocol-http@3.3.0': resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} engines: {node: '>=14.0.0'} - '@smithy/protocol-http@5.1.1': - resolution: {integrity: sha512-Vsay2mzq05DwNi9jK01yCFtfvu9HimmgC7a4HTs7lhX12Sx8aWsH0mfz6q/02yspSp+lOB+Q2HJwi4IV2GKz7A==} + '@smithy/protocol-http@5.1.2': + resolution: {integrity: sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==} engines: {node: '>=18.0.0'} '@smithy/querystring-builder@2.2.0': resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} engines: {node: '>=14.0.0'} - '@smithy/querystring-builder@4.0.3': - resolution: {integrity: sha512-UUzIWMVfPmDZcOutk2/r1vURZqavvQW0OHvgsyNV0cKupChvqg+/NKPRMaMEe+i8tP96IthMFeZOZWpV+E4RAw==} + '@smithy/querystring-builder@4.0.4': + resolution: {integrity: sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==} engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.0.3': - resolution: {integrity: sha512-K5M4ZJQpFCblOJ5Oyw7diICpFg1qhhR47m2/5Ef1PhGE19RaIZf50tjYFrxa6usqcuXyTiFPGo4d1geZdH4YcQ==} + '@smithy/querystring-parser@4.0.4': + resolution: {integrity: sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.0.4': - resolution: {integrity: sha512-W5ScbQ1bTzgH91kNEE2CvOzM4gXlDOqdow4m8vMFSIXCel2scbHwjflpVNnC60Y3F1m5i7w2gQg9lSnR+JsJAA==} + '@smithy/service-error-classification@4.0.5': + resolution: {integrity: sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.0.3': - resolution: {integrity: sha512-vHwlrqhZGIoLwaH8vvIjpHnloShqdJ7SUPNM2EQtEox+yEDFTVQ7E+DLZ+6OhnYEgFUwPByJyz6UZaOu2tny6A==} + '@smithy/shared-ini-file-loader@4.0.4': + resolution: {integrity: sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.1.0': - resolution: {integrity: sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==} + '@smithy/signature-v4@5.1.2': + resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.3.0': - resolution: {integrity: sha512-DNsRA38pN6tYHUjebmwD9e4KcgqTLldYQb2gC6K+oxXYdCTxPn6wV9+FvOa6wrU2FQEnGJoi+3GULzOTKck/tg==} + '@smithy/smithy-client@4.4.3': + resolution: {integrity: sha512-xxzNYgA0HD6ETCe5QJubsxP0hQH3QK3kbpJz3QrosBCuIWyEXLR/CO5hFb2OeawEKUxMNhz3a1nuJNN2np2RMA==} engines: {node: '>=18.0.0'} '@smithy/types@2.12.0': resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} engines: {node: '>=14.0.0'} - '@smithy/types@4.3.0': - resolution: {integrity: sha512-+1iaIQHthDh9yaLhRzaoQxRk+l9xlk+JjMFxGRhNLz+m9vKOkjNeU8QuB4w3xvzHyVR/BVlp/4AXDHjoRIkfgQ==} + '@smithy/types@4.3.1': + resolution: {integrity: sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==} engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.0.3': - resolution: {integrity: sha512-n5/DnosDu/tweOqUUNtUbu7eRIR4J/Wz9nL7V5kFYQQVb8VYdj7a4G5NJHCw6o21ul7CvZoJkOpdTnsQDLT0tQ==} + '@smithy/url-parser@4.0.4': + resolution: {integrity: sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==} engines: {node: '>=18.0.0'} '@smithy/util-base64@4.0.0': @@ -3921,32 +3932,32 @@ packages: resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.15': - resolution: {integrity: sha512-bJJ/B8owQbHAflatSq92f9OcV8858DJBQF1Y3GRjB8psLyUjbISywszYPFw16beREHO/C3I3taW4VGH+tOuwrQ==} + '@smithy/util-defaults-mode-browser@4.0.19': + resolution: {integrity: sha512-mvLMh87xSmQrV5XqnUYEPoiFFeEGYeAKIDDKdhE2ahqitm8OHM3aSvhqL6rrK6wm1brIk90JhxDf5lf2hbrLbQ==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.15': - resolution: {integrity: sha512-8CUrEW2Ni5q+NmYkj8wsgkfqoP7l4ZquptFbq92yQE66xevc4SxqP2zH6tMtN158kgBqBDsZ+qlrRwXWOjCR8A==} + '@smithy/util-defaults-mode-node@4.0.19': + resolution: {integrity: sha512-8tYnx+LUfj6m+zkUUIrIQJxPM1xVxfRBvoGHua7R/i6qAxOMjqR6CpEpDwKoIs1o0+hOjGvkKE23CafKL0vJ9w==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.0.5': - resolution: {integrity: sha512-PjDpqLk24/vAl340tmtCA++Q01GRRNH9cwL9qh46NspAX9S+IQVcK+GOzPt0GLJ6KYGyn8uOgo2kvJhiThclJw==} + '@smithy/util-endpoints@3.0.6': + resolution: {integrity: sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==} engines: {node: '>=18.0.0'} '@smithy/util-hex-encoding@4.0.0': resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.0.3': - resolution: {integrity: sha512-iIsC6qZXxkD7V3BzTw3b1uK8RVC1M8WvwNxK1PKrH9FnxntCd30CSunXjL/8iJBE8Z0J14r2P69njwIpRG4FBQ==} + '@smithy/util-middleware@4.0.4': + resolution: {integrity: sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.0.4': - resolution: {integrity: sha512-Aoqr9W2jDYGrI6OxljN8VmLDQIGO4VdMAUKMf9RGqLG8hn6or+K41NEy1Y5dtum9q8F7e0obYAuKl2mt/GnpZg==} + '@smithy/util-retry@4.0.5': + resolution: {integrity: sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.2.1': - resolution: {integrity: sha512-W3IR0x5DY6iVtjj5p902oNhD+Bz7vs5S+p6tppbPa509rV9BdeXZjGuRSCtVEad9FA0Mba+tNUtUmtnSI1nwUw==} + '@smithy/util-stream@4.2.2': + resolution: {integrity: sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==} engines: {node: '>=18.0.0'} '@smithy/util-uri-escape@2.2.0': @@ -3965,8 +3976,8 @@ packages: resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} engines: {node: '>=18.0.0'} - '@smithy/util-waiter@4.0.3': - resolution: {integrity: sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==} + '@smithy/util-waiter@4.0.5': + resolution: {integrity: sha512-4QvC49HTteI1gfemu0I1syWovJgPvGn7CVUoN9ZFkdvr/cCFkrEL7qNCdx/2eICqDWEGnnr68oMdSIPCLAriSQ==} engines: {node: '>=18.0.0'} '@sqltools/formatter@1.2.5': @@ -4204,14 +4215,14 @@ packages: cpu: [arm64] os: [android] - '@swc/core-darwin-arm64@1.11.29': - resolution: {integrity: sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==} + '@swc/core-darwin-arm64@1.12.0': + resolution: {integrity: sha512-usLr8kC80GDv3pwH2zoEaS279kxtWY0MY3blbMFw7zA8fAjqxa8IDxm3WcgyNLNWckWn4asFfguEwz/Weem3nA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.11.29': - resolution: {integrity: sha512-S3eTo/KYFk+76cWJRgX30hylN5XkSmjYtCBnM4jPLYn7L6zWYEPajsFLmruQEiTEDUg0gBEWLMNyUeghtswouw==} + '@swc/core-darwin-x64@1.12.0': + resolution: {integrity: sha512-Cvv4sqDcTY7QF2Dh1vn2Xbt/1ENYQcpmrGHzITJrXzxA2aBopsz/n4yQDiyRxTR0t802m4xu0CzMoZIHvVruWQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -4222,56 +4233,56 @@ packages: cpu: [x64] os: [freebsd] - '@swc/core-linux-arm-gnueabihf@1.11.29': - resolution: {integrity: sha512-o9gdshbzkUMG6azldHdmKklcfrcMx+a23d/2qHQHPDLUPAN+Trd+sDQUYArK5Fcm7TlpG4sczz95ghN0DMkM7g==} + '@swc/core-linux-arm-gnueabihf@1.12.0': + resolution: {integrity: sha512-seM4/XMJMOupkzfLfHl8sRa3NdhsVZp+XgwA/vVeYZYJE4wuWUxVzhCYzwmNftVY32eF2IiRaWnhG6ho6jusnQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.11.29': - resolution: {integrity: sha512-sLoaciOgUKQF1KX9T6hPGzvhOQaJn+3DHy4LOHeXhQqvBgr+7QcZ+hl4uixPKTzxk6hy6Hb0QOvQEdBAAR1gXw==} + '@swc/core-linux-arm64-gnu@1.12.0': + resolution: {integrity: sha512-Al0x33gUVxNY5tutEYpSyv7mze6qQS1ONa0HEwoRxcK9WXsX0NHLTiOSGZoCUS1SsXM37ONlbA6/Bsp1MQyP+g==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.11.29': - resolution: {integrity: sha512-PwjB10BC0N+Ce7RU/L23eYch6lXFHz7r3NFavIcwDNa/AAqywfxyxh13OeRy+P0cg7NDpWEETWspXeI4Ek8otw==} + '@swc/core-linux-arm64-musl@1.12.0': + resolution: {integrity: sha512-OeFHz/5Hl9v75J9TYA5jQxNIYAZMqaiPpd9dYSTK2Xyqa/ZGgTtNyPhIwVfxx+9mHBf6+9c1mTlXUtACMtHmaQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.11.29': - resolution: {integrity: sha512-i62vBVoPaVe9A3mc6gJG07n0/e7FVeAvdD9uzZTtGLiuIfVfIBta8EMquzvf+POLycSk79Z6lRhGPZPJPYiQaA==} + '@swc/core-linux-x64-gnu@1.12.0': + resolution: {integrity: sha512-ltIvqNi7H0c5pRawyqjeYSKEIfZP4vv/datT3mwT6BW7muJtd1+KIDCPFLMIQ4wm/h76YQwPocsin3fzmnFdNA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.11.29': - resolution: {integrity: sha512-YER0XU1xqFdK0hKkfSVX1YIyCvMDI7K07GIpefPvcfyNGs38AXKhb2byySDjbVxkdl4dycaxxhRyhQ2gKSlsFQ==} + '@swc/core-linux-x64-musl@1.12.0': + resolution: {integrity: sha512-Z/DhpjehaTK0uf+MhNB7mV9SuewpGs3P/q9/8+UsJeYoFr7yuOoPbAvrD6AqZkf6Bh7MRZ5OtG+KQgG5L+goiA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.11.29': - resolution: {integrity: sha512-po+WHw+k9g6FAg5IJ+sMwtA/fIUL3zPQ4m/uJgONBATCVnDDkyW6dBA49uHNVtSEvjvhuD8DVWdFP847YTcITw==} + '@swc/core-win32-arm64-msvc@1.12.0': + resolution: {integrity: sha512-wHnvbfHIh2gfSbvuFT7qP97YCMUDh+fuiso+pcC6ug8IsMxuViNapHET4o0ZdFNWHhXJ7/s0e6w7mkOalsqQiQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.11.29': - resolution: {integrity: sha512-h+NjOrbqdRBYr5ItmStmQt6x3tnhqgwbj9YxdGPepbTDamFv7vFnhZR0YfB3jz3UKJ8H3uGJ65Zw1VsC+xpFkg==} + '@swc/core-win32-ia32-msvc@1.12.0': + resolution: {integrity: sha512-88umlXwK+7J2p4DjfWHXQpmlZgCf1ayt6Ssj+PYlAfMCR0aBiJoAMwHWrvDXEozyOrsyP1j2X6WxbmA861vL5Q==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.11.29': - resolution: {integrity: sha512-Q8cs2BDV9wqDvqobkXOYdC+pLUSEpX/KvI0Dgfun1F+LzuLotRFuDhrvkU9ETJA6OnD2+Fn/ieHgloiKA/Mn/g==} + '@swc/core-win32-x64-msvc@1.12.0': + resolution: {integrity: sha512-KR9TSRp+FEVOhbgTU6c94p/AYpsyBk7dIvlKQiDp8oKScUoyHG5yjmMBFN/BqUyTq4kj6zlgsY2rFE4R8/yqWg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.11.29': - resolution: {integrity: sha512-g4mThMIpWbNhV8G2rWp5a5/Igv8/2UFRJx2yImrLGMgrDDYZIopqZ/z0jZxDgqNA1QDx93rpwNF7jGsxVWcMlA==} + '@swc/core@1.12.0': + resolution: {integrity: sha512-/C0kiMHPY/HnLfqXYGMGxGck3A5Y3mqwxfv+EwHTPHGjAVRfHpWAEEBTSTF5C88vVY6CvwBEkhR2TX7t8Mahcw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -4288,8 +4299,8 @@ packages: peerDependencies: '@swc/core': '*' - '@swc/types@0.1.21': - resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + '@swc/types@0.1.22': + resolution: {integrity: sha512-D13mY/ZA4PPEFSy6acki9eBT/3WgjMoRqNcdpIvjaYLQ44Xk5BdaL7UkDxAh6Z9UOe7tCCp67BVmZCojYp9owg==} '@swc/wasm@1.2.130': resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==} @@ -4301,11 +4312,11 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} - '@tabler/icons-webfont@3.33.0': - resolution: {integrity: sha512-mM9ol+UpGpYMfZDv7o9mN4dZnqfv2G13JZ5QrfHGlAWD0hHQvQYDzmQ2ste9JTbw7373yK4HFDGlPl8ixJY+Aw==} + '@tabler/icons-webfont@3.34.0': + resolution: {integrity: sha512-ft2oePnW2YTXZtHWdgnlNtFqRbhwnizPdaE1393qXfb1xS+d2K79cN7//IkGbnpttA3p5EJG6C6F3Ar60L1bhw==} - '@tabler/icons@3.33.0': - resolution: {integrity: sha512-NZeFfzcYe7xcBHR3zKoCSrw/cFWvfj6LjenPQ48yVMTGdX854HH9nH44ZfMH8rrDzHBllfjwl4CIX6Vh2tyN0Q==} + '@tabler/icons@3.34.0': + resolution: {integrity: sha512-jtVqv0JC1WU2TTEBN32D9+R6mc1iEBuPwLnBsWaR02SIEciu9aq5806AWkCHuObhQ4ERhhXErLEK7Fs+tEZxiA==} '@tensorflow/tfjs-backend-cpu@4.22.0': resolution: {integrity: sha512-1u0FmuLGuRAi8D2c3cocHTASGXOmHc/4OvoVDENJayjYkS119fcTcQf4iHrtLthWyDIPy3JiPhRrZQC9EwnhLw==} @@ -4426,8 +4437,8 @@ packages: '@types/bcryptjs@2.4.6': resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==} - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} '@types/braces@3.0.1': resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} @@ -4435,6 +4446,9 @@ packages: '@types/canvas-confetti@1.9.0': resolution: {integrity: sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==} + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/color-convert@2.0.4': resolution: {integrity: sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==} @@ -4444,8 +4458,8 @@ packages: '@types/connect@3.4.36': resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} - '@types/content-disposition@0.5.8': - resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} + '@types/content-disposition@0.5.9': + resolution: {integrity: sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==} '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -4456,6 +4470,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/disposable-email-domains@1.0.2': resolution: {integrity: sha512-SDKwyYTjk3y5aZBxxc38yRecpJPjsqn57STz1bNxYYlv4k11bBe7QB8w4llXDTmQXKT1mFvgGmJv+8Zdu3YmJw==} @@ -4471,6 +4488,9 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/express-serve-static-core@4.17.33': resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} @@ -4564,11 +4584,8 @@ packages: '@types/node-fetch@2.6.11': resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - '@types/node@22.15.21': - resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} - - '@types/node@22.15.28': - resolution: {integrity: sha512-I0okKVDmyKR281I0UIFV7EWAWRnR0gkuSKob5wVcByyyhr7Px/slhkQapcYX4u00ekzNWaS1gznKZnuzxwo4pw==} + '@types/node@22.15.31': + resolution: {integrity: sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==} '@types/nodemailer@6.4.17': resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} @@ -4594,8 +4611,8 @@ packages: '@types/pg-pool@2.0.6': resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} - '@types/pg@8.15.2': - resolution: {integrity: sha512-+BKxo5mM6+/A1soSHBI7ufUglqYXntChLDyTbvcAn1Lawi9J7J9Ok3jt6w7I0+T/UDJ4CyhHk66+GZbwmkYxSg==} + '@types/pg@8.15.4': + resolution: {integrity: sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==} '@types/pg@8.6.1': resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} @@ -4732,108 +4749,63 @@ packages: '@types/yauzl@2.10.0': resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} - '@typescript-eslint/eslint-plugin@8.32.1': - resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} + '@typescript-eslint/eslint-plugin@8.34.0': + resolution: {integrity: sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + '@typescript-eslint/parser': ^8.34.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.33.0': - resolution: {integrity: sha512-CACyQuqSHt7ma3Ns601xykeBK/rDeZa3w6IS6UtMQbixO5DWy+8TilKkviGDH6jtWCo8FGRKEK5cLLkPvEammQ==} + '@typescript-eslint/parser@8.34.0': + resolution: {integrity: sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.33.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.32.1': - resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + '@typescript-eslint/project-service@8.34.0': + resolution: {integrity: sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.33.0': - resolution: {integrity: sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/project-service@8.33.0': - resolution: {integrity: sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.32.1': - resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} + '@typescript-eslint/scope-manager@8.34.0': + resolution: {integrity: sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.33.0': - resolution: {integrity: sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.33.0': - resolution: {integrity: sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==} + '@typescript-eslint/tsconfig-utils@8.34.0': + resolution: {integrity: sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.32.1': - resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/type-utils@8.33.0': - resolution: {integrity: sha512-lScnHNCBqL1QayuSrWeqAL5GmqNdVUQAAMTaCwdYEdWfIrSrOGzyLGRCHXcCixa5NK6i5l0AfSO2oBSjCjf4XQ==} + '@typescript-eslint/type-utils@8.34.0': + resolution: {integrity: sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.32.1': - resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} + '@typescript-eslint/types@8.34.0': + resolution: {integrity: sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.33.0': - resolution: {integrity: sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.32.1': - resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/typescript-estree@8.33.0': - resolution: {integrity: sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/utils@8.32.1': - resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} + '@typescript-eslint/typescript-estree@8.34.0': + resolution: {integrity: sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.33.0': - resolution: {integrity: sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==} + '@typescript-eslint/utils@8.34.0': + resolution: {integrity: sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.32.1': - resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.33.0': - resolution: {integrity: sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==} + '@typescript-eslint/visitor-keys@8.34.0': + resolution: {integrity: sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.0': @@ -4846,11 +4818,11 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vitest/coverage-v8@3.1.4': - resolution: {integrity: sha512-G4p6OtioySL+hPV7Y6JHlhpsODbJzt1ndwHAFkyk6vVjpK03PFsKnauZIzcd0PrK4zAbc5lc+jeZ+eNGiMA+iw==} + '@vitest/coverage-v8@3.2.3': + resolution: {integrity: sha512-D1QKzngg8PcDoCE8FHSZhREDuEy+zcKmMiMafYse41RZpBE5EDJyKOTdqK3RQfsV2S2nyKor5KCs8PyPRFqKPg==} peerDependencies: - '@vitest/browser': 3.1.4 - vitest: 3.1.4 + '@vitest/browser': 3.2.3 + vitest: 3.2.3 peerDependenciesMeta: '@vitest/browser': optional: true @@ -4858,14 +4830,14 @@ packages: '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/expect@3.1.4': - resolution: {integrity: sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==} + '@vitest/expect@3.2.3': + resolution: {integrity: sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==} - '@vitest/mocker@3.1.4': - resolution: {integrity: sha512-8IJ3CvwtSw/EFXqWFL8aCMu+YyYXG2WUSrQbViOZkWTKTVicVwZ/YiEZDSqD00kX+v/+W+OnxhNWoeVKorHygA==} + '@vitest/mocker@3.2.3': + resolution: {integrity: sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true @@ -4878,20 +4850,20 @@ packages: '@vitest/pretty-format@2.1.1': resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} - '@vitest/pretty-format@3.1.4': - resolution: {integrity: sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==} + '@vitest/pretty-format@3.2.3': + resolution: {integrity: sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==} - '@vitest/runner@3.1.4': - resolution: {integrity: sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==} + '@vitest/runner@3.2.3': + resolution: {integrity: sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==} - '@vitest/snapshot@3.1.4': - resolution: {integrity: sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==} + '@vitest/snapshot@3.2.3': + resolution: {integrity: sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==} '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@vitest/spy@3.1.4': - resolution: {integrity: sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==} + '@vitest/spy@3.2.3': + resolution: {integrity: sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==} '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -4899,8 +4871,8 @@ packages: '@vitest/utils@2.1.1': resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} - '@vitest/utils@3.1.4': - resolution: {integrity: sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==} + '@vitest/utils@3.2.3': + resolution: {integrity: sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==} '@volar/language-core@2.2.0': resolution: {integrity: sha512-a8WG9+4OdeNDW4ywABZIM6S6UN7em8uIlM/BZ2pWQUYrVmX+m8sj/X+QadvO+Li/t/LjAqbWJQtVgxdpEWLALQ==} @@ -5071,8 +5043,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true @@ -5294,6 +5266,9 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + ast-v8-to-istanbul@0.3.3: + resolution: {integrity: sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==} + astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -5478,8 +5453,8 @@ packages: resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} - bullmq@5.53.0: - resolution: {integrity: sha512-AbzcwR+9GdgrenolOC9kApF+TkUKZpUCMiFbXgRYw9ivWhOfLCqKeajIptM7NdwhY7cpXgv+QpbweUuQZUxkyA==} + bullmq@5.53.2: + resolution: {integrity: sha512-xHgxrP/yNJHD7VCw1h+eRBh+2TCPBCM39uC9gCyksYc6ufcJP+HTZ/A2lzB2x7qMFWrvsX7tM40AT2BmdkYL/Q==} buraha@0.0.1: resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==} @@ -5597,6 +5572,9 @@ packages: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -5768,6 +5746,9 @@ packages: colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} @@ -5829,9 +5810,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -5986,8 +5967,8 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - cypress@14.4.0: - resolution: {integrity: sha512-/I59Fqxo7fqdiDi3IM2QKA65gZ7+PVejXg404/I8ZSq+NOnrmw+2pnMUJzpoNyg7KABcEBmgpkfAqhV98p7wJA==} + cypress@14.4.1: + resolution: {integrity: sha512-YSGvVXtTqSGRTyHbaxHI5dHU/9xc5ymaTIM4BU85GKhj980y6XgA3fShSpj5DatS8knXMsAvYItQxVQFHGpUtw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -6446,8 +6427,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-vue@10.1.0: - resolution: {integrity: sha512-/VTiJ1eSfNLw6lvG9ENySbGmcVvz6wZ9nA7ZqXlLBY2RkaF15iViYKxglWiIch12KiLAj0j1iXPYU6W4wTROFA==} + eslint-plugin-vue@10.2.0: + resolution: {integrity: sha512-tl9s+KN3z0hN2b8fV2xSs5ytGl7Esk1oSCxULLwFcdaElhZ8btYYZFrWxvh4En+czrSDtuLCeCOGa8HhEZuBdQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -6468,8 +6449,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.27.0: - resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} + eslint@9.28.0: + resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -6549,10 +6530,6 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.5.3: - resolution: {integrity: sha512-QFNnTvU3UjgWFy8Ef9iDHvIdcgZ344ebkwYx4/KLbR+CKQA4xBaHzv+iRpp86QfMHP8faFQLh8iOc57215y4Rg==} - engines: {node: ^18.19.0 || >=20.5.0} - execa@9.6.0: resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} engines: {node: ^18.19.0 || >=20.5.0} @@ -6792,8 +6769,8 @@ packages: resolution: {integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==} engines: {node: '>= 18'} - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + form-data@4.0.3: + resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} engines: {node: '>= 6'} formdata-polyfill@4.0.10: @@ -6957,8 +6934,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@16.1.0: - resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} + globals@16.2.0: + resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==} engines: {node: '>=18'} globalthis@1.0.3: @@ -7008,9 +6985,9 @@ packages: resolution: {integrity: sha512-n0QrmT9lD81rbpKsyhnlz3DgnMZlaOkJPpgi746doA+HvaMC79bdWkwjrNnGJRvDrWTI8iOcJiVTJ5CdT/AZRw==} engines: {node: '>=18.0.0'} - happy-dom@17.5.6: - resolution: {integrity: sha512-B4U6jKuiizwCJ2WP0YreQmRdeBrHKOXhpz7YUbbwdSAKfWEhdG4UfWZOZTZ5Oejs/9yJtk7xmbfp8YdVL9LVFA==} - engines: {node: '>=18.0.0'} + happy-dom@17.6.3: + resolution: {integrity: sha512-UVIHeVhxmxedbWPCfgS55Jg2rDfwf2BCKeylcPSqazLz5w3Kri7Q4xdBJubsr/+VUzFLh0VjIvh13RaDA2/Xug==} + engines: {node: '>=20.0.0'} hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} @@ -7167,10 +7144,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - human-signals@8.0.0: - resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} - engines: {node: '>=18.18.0'} - human-signals@8.0.1: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} @@ -7235,6 +7208,10 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} + index-to-position@1.1.0: + resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} + engines: {node: '>=18'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -7670,12 +7647,19 @@ packages: engines: {node: '>=12'} hasBin: true + js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} + js-stringify@1.0.2: resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -8035,8 +8019,8 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - meilisearch@0.50.0: - resolution: {integrity: sha512-9IzIkobvnuS18Eg4dq/eJB9W+eXqeLZjNRgq/kKMswSmVYYSQsXqGgSuCA0JkF+o5RwJlwIsieQee6rh313VhA==} + meilisearch@0.51.0: + resolution: {integrity: sha512-IuNsYyT8r/QLhU33XDZdXWUT6cA/nACCHHZc+NHkNuaU55LELRxff1uBJhpJcwjYaAPEEmeWrzBhYl2XlhJdAg==} memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} @@ -8065,8 +8049,8 @@ packages: mfm-js@0.24.0: resolution: {integrity: sha512-6m8N0ElH9/4CA1izhVqmxTfLj5Z9RspdqM/lMew4xU/UTgm4Pf//VpDunpasxbRFjeJSVW+zoVwL4ZPfPtfiQg==} - microformats-parser@2.0.2: - resolution: {integrity: sha512-tUf9DmN4Jq/tGyp1YH2V6D/Cud+9Uc0WhjjUFirqVeHTRkkfLDacv6BQFT7h7HFsD0Z8wja5eKkRgzZU8bv0Fw==} + microformats-parser@2.0.3: + resolution: {integrity: sha512-MhZoQXkvWrvI3iu1IJ7Zk2VglphPt5P482E5rXvHalvtxhuS/QioMB8gEr8omt7Fd0K/qQEAbTmabvNpCbi3EQ==} engines: {node: '>=18'} micromark-core-commonmark@2.0.0: @@ -8320,13 +8304,13 @@ packages: msgpackr@1.11.2: resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} - msw-storybook-addon@2.0.4: - resolution: {integrity: sha512-rstO8+r01sRMg6PPP7OxM8LG5/6r4+wmp2uapHeHvm9TQQRHvpPXOU/Y9/Somysz8Oi4Ea1aummXH3JlnP2LIA==} + msw-storybook-addon@2.0.5: + resolution: {integrity: sha512-uum2gtprDBoUb8GV/rPMwPytHmB8+AUr25BQUY0MpjYey5/ujaew2Edt+4oHiXpLTd0ThyMqmEvGy/sRpDV4lg==} peerDependencies: msw: ^2.0.0 - msw@2.8.6: - resolution: {integrity: sha512-fpwS5PnENnf7q7VF2ev00yfzmNXW78McKNgyaHaXQgz7p9pV8b2qQx1FoI0QA4BOxaVGBB6zBQUV4QWaK3G40g==} + msw@2.10.2: + resolution: {integrity: sha512-RCKM6IZseZQCWcSWlutdf590M8nVfRHG1ImwzOtwz8IYxgT4zhUO0rfTcTvDGiaFE0Rhcc+h43lcF3Jc9gFtwQ==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -8338,8 +8322,8 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - multer@2.0.0: - resolution: {integrity: sha512-bS8rPZurbAuHGAnApbM9d4h1wSoYqrOqkE+6a64KLMK9yWU7gJXBDDVklKQ3TPi9DRb85cRs6yXaC0+cjxRtRg==} + multer@2.0.1: + resolution: {integrity: sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==} engines: {node: '>= 10.16.0'} mute-stream@2.0.0: @@ -8356,6 +8340,11 @@ packages: nan@2.22.2: resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -8590,9 +8579,6 @@ packages: resolution: {integrity: sha512-szyd0ou0T8nsAqHtprRcP3WidfsN1TnAR5yWXf2mFCEr5ek3LEOkT6EZ/92Xfs74HIdyhG5WkGxIssMU0jBaeg==} engines: {node: '>=16'} - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} @@ -8624,9 +8610,11 @@ packages: openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - openapi-typescript@6.7.6: - resolution: {integrity: sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw==} + openapi-typescript@7.8.0: + resolution: {integrity: sha512-1EeVWmDzi16A+siQlo/SwSGIT7HwaFAVjvMA7/jG5HMLSnrUOzPL7uSTRZZa4v/LCRxHTApHKtNY6glApEoiUQ==} hasBin: true + peerDependencies: + typescript: ^5.x optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -8703,6 +8691,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} @@ -8810,10 +8802,6 @@ packages: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-numeric@1.0.2: - resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} - engines: {node: '>=4'} - pg-pool@3.10.0: resolution: {integrity: sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==} peerDependencies: @@ -8826,10 +8814,6 @@ packages: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg-types@4.0.1: - resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==} - engines: {node: '>=10'} - pg@8.16.0: resolution: {integrity: sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==} engines: {node: '>= 8.0.0'} @@ -8897,12 +8881,16 @@ packages: resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} engines: {node: '>=10'} + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} - pnpm@10.11.0: - resolution: {integrity: sha512-ZUBYP0HMX2KOs9l3Ps7oAvT575kjzEW2mJD7R5kdSwkpZGlOw6T3OKQgyRijMwYsi5JdMS9C5PDCY+tgNVH5dw==} + pnpm@10.12.1: + resolution: {integrity: sha512-8N2oWA8O6UgcXHmh2Se5Fk8sR46QmSrSaLuyRlpzaYQ5HWMz0sMnkTV4soBK8zR0ylVLopwEqLEwYKcXZ1rjrA==} engines: {node: '>=18.12'} hasBin: true @@ -9091,41 +9079,26 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} - postgres-array@3.0.2: - resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} - engines: {node: '>=12'} - postgres-bytea@1.0.0: resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} engines: {node: '>=0.10.0'} - postgres-bytea@3.0.0: - resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} - engines: {node: '>= 6'} - postgres-date@1.0.7: resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} engines: {node: '>=0.10.0'} - postgres-date@2.0.1: - resolution: {integrity: sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==} - engines: {node: '>=12'} - postgres-interval@1.2.0: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} - postgres-interval@3.0.0: - resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} - engines: {node: '>=12'} - - postgres-range@1.1.3: - resolution: {integrity: sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==} - prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} @@ -9560,8 +9533,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rollup@4.41.1: - resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} + rollup@4.42.0: + resolution: {integrity: sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -9604,8 +9577,8 @@ packages: sanitize-html@2.17.0: resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} - sass@1.89.0: - resolution: {integrity: sha512-ld+kQU8YTdGNjOLfRWBzewJpU5cwEv/h5yyqlSeJcj6Yh8U4TDA9UA5FPicqDz/xgRPWRSYIQNiFks21TbA9KQ==} + sass@1.89.2: + resolution: {integrity: sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==} engines: {node: '>=14.0.0'} hasBin: true @@ -9709,8 +9682,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@3.4.2: - resolution: {integrity: sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ==} + shiki@3.6.0: + resolution: {integrity: sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -10106,6 +10079,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -10131,6 +10107,10 @@ packages: resolution: {integrity: sha512-aI59HBTlG9e2wTjxGJV+DygfNLgnWbGdZxiA/sgrnNNikIW8lbDvCtF6RnhZoJ82nU7qv7ZLjrvWqCEm52fAmw==} engines: {node: '>=14.18.0'} + supports-color@10.0.0: + resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==} + engines: {node: '>=18'} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -10143,10 +10123,6 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} @@ -10191,8 +10167,8 @@ packages: resolution: {integrity: sha512-+HRtZ40Vc+6YfCDWCeAsixwxJgMbPY4HHuTgzPYH3JXvqHWUlsCfy+ylXlAKhFNcuLp4xVeWeFBUhDk+7KYUvQ==} engines: {node: '>=14.16'} - terser@5.39.2: - resolution: {integrity: sha512-yEPUmWve+VA78bI71BW70Dh0TuV4HHd+I5SHOAfS1+QBOmvmCiiffgjR8ryyEd3KIfvPGFqoADt8LdQ6XpXIvg==} + terser@5.42.0: + resolution: {integrity: sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==} engines: {node: '>=10'} hasBin: true @@ -10249,8 +10225,12 @@ packages: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + tinypool@1.1.0: + resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@1.2.0: @@ -10265,6 +10245,10 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + tinyspy@4.0.3: + resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + engines: {node: '>=14.0.0'} + tldts-core@6.1.61: resolution: {integrity: sha512-In7VffkDWUPgwa+c9picLUxvb0RltVwTkSgMNFgvlGSWveCzGBemBqTsgJCL4EDFWZ6WH0fKTsot6yNhzy3ZzQ==} @@ -10417,6 +10401,10 @@ packages: resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -10606,6 +10594,9 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + uri-js-replace@1.0.1: + resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -10672,8 +10663,8 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - vite-node@3.1.4: - resolution: {integrity: sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==} + vite-node@3.2.3: + resolution: {integrity: sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -10726,16 +10717,16 @@ packages: peerDependencies: vitest: '>=2.0.0' - vitest@3.1.4: - resolution: {integrity: sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==} + vitest@3.2.3: + resolution: {integrity: sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.1.4 - '@vitest/ui': 3.1.4 + '@vitest/browser': 3.2.3 + '@vitest/ui': 3.2.3 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -11032,6 +11023,9 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} + yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -11140,20 +11134,20 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.821.0 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.821.0 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.821.0 '@aws-sdk/util-locate-window': 3.208.0 '@smithy/util-utf8': 2.0.0 tslib: 2.8.1 @@ -11163,7 +11157,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.821.0 '@aws-sdk/util-locate-window': 3.208.0 '@smithy/util-utf8': 2.0.0 tslib: 2.8.1 @@ -11171,7 +11165,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.821.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -11180,431 +11174,435 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.821.0 '@smithy/util-utf8': 2.0.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.817.0': + '@aws-sdk/client-s3@3.826.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.816.0 - '@aws-sdk/credential-provider-node': 3.817.0 - '@aws-sdk/middleware-bucket-endpoint': 3.808.0 - '@aws-sdk/middleware-expect-continue': 3.804.0 - '@aws-sdk/middleware-flexible-checksums': 3.816.0 - '@aws-sdk/middleware-host-header': 3.804.0 - '@aws-sdk/middleware-location-constraint': 3.804.0 - '@aws-sdk/middleware-logger': 3.804.0 - '@aws-sdk/middleware-recursion-detection': 3.804.0 - '@aws-sdk/middleware-sdk-s3': 3.816.0 - '@aws-sdk/middleware-ssec': 3.804.0 - '@aws-sdk/middleware-user-agent': 3.816.0 - '@aws-sdk/region-config-resolver': 3.808.0 - '@aws-sdk/signature-v4-multi-region': 3.816.0 - '@aws-sdk/types': 3.804.0 - '@aws-sdk/util-endpoints': 3.808.0 - '@aws-sdk/util-user-agent-browser': 3.804.0 - '@aws-sdk/util-user-agent-node': 3.816.0 - '@aws-sdk/xml-builder': 3.804.0 - '@smithy/config-resolver': 4.1.3 - '@smithy/core': 3.4.0 - '@smithy/eventstream-serde-browser': 4.0.2 - '@smithy/eventstream-serde-config-resolver': 4.1.0 - '@smithy/eventstream-serde-node': 4.0.2 - '@smithy/fetch-http-handler': 5.0.3 - '@smithy/hash-blob-browser': 4.0.2 - '@smithy/hash-node': 4.0.2 - '@smithy/hash-stream-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/md5-js': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.7 - '@smithy/middleware-retry': 4.1.8 - '@smithy/middleware-serde': 4.0.6 - '@smithy/middleware-stack': 4.0.3 - '@smithy/node-config-provider': 4.1.2 - '@smithy/node-http-handler': 4.0.5 - '@smithy/protocol-http': 5.1.1 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 - '@smithy/url-parser': 4.0.3 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/credential-provider-node': 3.826.0 + '@aws-sdk/middleware-bucket-endpoint': 3.821.0 + '@aws-sdk/middleware-expect-continue': 3.821.0 + '@aws-sdk/middleware-flexible-checksums': 3.826.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-location-constraint': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-sdk-s3': 3.826.0 + '@aws-sdk/middleware-ssec': 3.821.0 + '@aws-sdk/middleware-user-agent': 3.826.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/signature-v4-multi-region': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.821.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.826.0 + '@aws-sdk/xml-builder': 3.821.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/eventstream-serde-browser': 4.0.4 + '@smithy/eventstream-serde-config-resolver': 4.1.2 + '@smithy/eventstream-serde-node': 4.0.4 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-blob-browser': 4.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/hash-stream-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/md5-js': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.15 - '@smithy/util-defaults-mode-node': 4.0.15 - '@smithy/util-endpoints': 3.0.5 - '@smithy/util-middleware': 4.0.3 - '@smithy/util-retry': 4.0.4 - '@smithy/util-stream': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 - '@smithy/util-waiter': 4.0.3 + '@smithy/util-waiter': 4.0.5 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.817.0': + '@aws-sdk/client-sso@3.826.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.816.0 - '@aws-sdk/middleware-host-header': 3.804.0 - '@aws-sdk/middleware-logger': 3.804.0 - '@aws-sdk/middleware-recursion-detection': 3.804.0 - '@aws-sdk/middleware-user-agent': 3.816.0 - '@aws-sdk/region-config-resolver': 3.808.0 - '@aws-sdk/types': 3.804.0 - '@aws-sdk/util-endpoints': 3.808.0 - '@aws-sdk/util-user-agent-browser': 3.804.0 - '@aws-sdk/util-user-agent-node': 3.816.0 - '@smithy/config-resolver': 4.1.3 - '@smithy/core': 3.4.0 - '@smithy/fetch-http-handler': 5.0.3 - '@smithy/hash-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.7 - '@smithy/middleware-retry': 4.1.8 - '@smithy/middleware-serde': 4.0.6 - '@smithy/middleware-stack': 4.0.3 - '@smithy/node-config-provider': 4.1.2 - '@smithy/node-http-handler': 4.0.5 - '@smithy/protocol-http': 5.1.1 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 - '@smithy/url-parser': 4.0.3 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-user-agent': 3.826.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.821.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.826.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.15 - '@smithy/util-defaults-mode-node': 4.0.15 - '@smithy/util-endpoints': 3.0.5 - '@smithy/util-middleware': 4.0.3 - '@smithy/util-retry': 4.0.4 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.816.0': + '@aws-sdk/core@3.826.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/core': 3.4.0 - '@smithy/node-config-provider': 4.1.2 - '@smithy/property-provider': 4.0.3 - '@smithy/protocol-http': 5.1.1 - '@smithy/signature-v4': 5.1.0 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 - '@smithy/util-middleware': 4.0.3 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/xml-builder': 3.821.0 + '@smithy/core': 3.5.3 + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-utf8': 4.0.0 fast-xml-parser: 4.4.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.816.0': + '@aws-sdk/credential-provider-env@3.826.0': dependencies: - '@aws-sdk/core': 3.816.0 - '@aws-sdk/types': 3.804.0 - '@smithy/property-provider': 4.0.3 - '@smithy/types': 4.3.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.816.0': + '@aws-sdk/credential-provider-http@3.826.0': dependencies: - '@aws-sdk/core': 3.816.0 - '@aws-sdk/types': 3.804.0 - '@smithy/fetch-http-handler': 5.0.3 - '@smithy/node-http-handler': 4.0.5 - '@smithy/property-provider': 4.0.3 - '@smithy/protocol-http': 5.1.1 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 - '@smithy/util-stream': 4.2.1 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/node-http-handler': 4.0.6 + '@smithy/property-provider': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/util-stream': 4.2.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.817.0': + '@aws-sdk/credential-provider-ini@3.826.0': dependencies: - '@aws-sdk/core': 3.816.0 - '@aws-sdk/credential-provider-env': 3.816.0 - '@aws-sdk/credential-provider-http': 3.816.0 - '@aws-sdk/credential-provider-process': 3.816.0 - '@aws-sdk/credential-provider-sso': 3.817.0 - '@aws-sdk/credential-provider-web-identity': 3.817.0 - '@aws-sdk/nested-clients': 3.817.0 - '@aws-sdk/types': 3.804.0 - '@smithy/credential-provider-imds': 4.0.5 - '@smithy/property-provider': 4.0.3 - '@smithy/shared-ini-file-loader': 4.0.3 - '@smithy/types': 4.3.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/credential-provider-env': 3.826.0 + '@aws-sdk/credential-provider-http': 3.826.0 + '@aws-sdk/credential-provider-process': 3.826.0 + '@aws-sdk/credential-provider-sso': 3.826.0 + '@aws-sdk/credential-provider-web-identity': 3.826.0 + '@aws-sdk/nested-clients': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.817.0': + '@aws-sdk/credential-provider-node@3.826.0': dependencies: - '@aws-sdk/credential-provider-env': 3.816.0 - '@aws-sdk/credential-provider-http': 3.816.0 - '@aws-sdk/credential-provider-ini': 3.817.0 - '@aws-sdk/credential-provider-process': 3.816.0 - '@aws-sdk/credential-provider-sso': 3.817.0 - '@aws-sdk/credential-provider-web-identity': 3.817.0 - '@aws-sdk/types': 3.804.0 - '@smithy/credential-provider-imds': 4.0.5 - '@smithy/property-provider': 4.0.3 - '@smithy/shared-ini-file-loader': 4.0.3 - '@smithy/types': 4.3.0 + '@aws-sdk/credential-provider-env': 3.826.0 + '@aws-sdk/credential-provider-http': 3.826.0 + '@aws-sdk/credential-provider-ini': 3.826.0 + '@aws-sdk/credential-provider-process': 3.826.0 + '@aws-sdk/credential-provider-sso': 3.826.0 + '@aws-sdk/credential-provider-web-identity': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.816.0': + '@aws-sdk/credential-provider-process@3.826.0': dependencies: - '@aws-sdk/core': 3.816.0 - '@aws-sdk/types': 3.804.0 - '@smithy/property-provider': 4.0.3 - '@smithy/shared-ini-file-loader': 4.0.3 - '@smithy/types': 4.3.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.817.0': + '@aws-sdk/credential-provider-sso@3.826.0': dependencies: - '@aws-sdk/client-sso': 3.817.0 - '@aws-sdk/core': 3.816.0 - '@aws-sdk/token-providers': 3.817.0 - '@aws-sdk/types': 3.804.0 - '@smithy/property-provider': 4.0.3 - '@smithy/shared-ini-file-loader': 4.0.3 - '@smithy/types': 4.3.0 + '@aws-sdk/client-sso': 3.826.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/token-providers': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.817.0': + '@aws-sdk/credential-provider-web-identity@3.826.0': dependencies: - '@aws-sdk/core': 3.816.0 - '@aws-sdk/nested-clients': 3.817.0 - '@aws-sdk/types': 3.804.0 - '@smithy/property-provider': 4.0.3 - '@smithy/types': 4.3.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/nested-clients': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/lib-storage@3.817.0(@aws-sdk/client-s3@3.817.0)': + '@aws-sdk/lib-storage@3.826.0(@aws-sdk/client-s3@3.826.0)': dependencies: - '@aws-sdk/client-s3': 3.817.0 - '@smithy/abort-controller': 4.0.3 - '@smithy/middleware-endpoint': 4.1.7 - '@smithy/smithy-client': 4.3.0 + '@aws-sdk/client-s3': 3.826.0 + '@smithy/abort-controller': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/smithy-client': 4.4.3 buffer: 5.6.0 events: 3.3.0 stream-browserify: 3.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.808.0': + '@aws-sdk/middleware-bucket-endpoint@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.821.0 '@aws-sdk/util-arn-parser': 3.804.0 - '@smithy/node-config-provider': 4.1.2 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.804.0': + '@aws-sdk/middleware-expect-continue@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@aws-sdk/types': 3.821.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.816.0': + '@aws-sdk/middleware-flexible-checksums@3.826.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.816.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 '@smithy/is-array-buffer': 4.0.0 - '@smithy/node-config-provider': 4.1.2 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 - '@smithy/util-middleware': 4.0.3 - '@smithy/util-stream': 4.2.1 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.804.0': + '@aws-sdk/middleware-host-header@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@aws-sdk/types': 3.821.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.804.0': + '@aws-sdk/middleware-location-constraint@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/types': 4.3.0 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.804.0': + '@aws-sdk/middleware-logger@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/types': 4.3.0 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.804.0': + '@aws-sdk/middleware-recursion-detection@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@aws-sdk/types': 3.821.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.816.0': + '@aws-sdk/middleware-sdk-s3@3.826.0': dependencies: - '@aws-sdk/core': 3.816.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 '@aws-sdk/util-arn-parser': 3.804.0 - '@smithy/core': 3.4.0 - '@smithy/node-config-provider': 4.1.2 - '@smithy/protocol-http': 5.1.1 - '@smithy/signature-v4': 5.1.0 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 + '@smithy/core': 3.5.3 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.3 - '@smithy/util-stream': 4.2.1 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.804.0': + '@aws-sdk/middleware-ssec@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/types': 4.3.0 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.816.0': + '@aws-sdk/middleware-user-agent@3.826.0': dependencies: - '@aws-sdk/core': 3.816.0 - '@aws-sdk/types': 3.804.0 - '@aws-sdk/util-endpoints': 3.808.0 - '@smithy/core': 3.4.0 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.821.0 + '@smithy/core': 3.5.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.817.0': + '@aws-sdk/nested-clients@3.826.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.816.0 - '@aws-sdk/middleware-host-header': 3.804.0 - '@aws-sdk/middleware-logger': 3.804.0 - '@aws-sdk/middleware-recursion-detection': 3.804.0 - '@aws-sdk/middleware-user-agent': 3.816.0 - '@aws-sdk/region-config-resolver': 3.808.0 - '@aws-sdk/types': 3.804.0 - '@aws-sdk/util-endpoints': 3.808.0 - '@aws-sdk/util-user-agent-browser': 3.804.0 - '@aws-sdk/util-user-agent-node': 3.816.0 - '@smithy/config-resolver': 4.1.3 - '@smithy/core': 3.4.0 - '@smithy/fetch-http-handler': 5.0.3 - '@smithy/hash-node': 4.0.2 - '@smithy/invalid-dependency': 4.0.2 - '@smithy/middleware-content-length': 4.0.2 - '@smithy/middleware-endpoint': 4.1.7 - '@smithy/middleware-retry': 4.1.8 - '@smithy/middleware-serde': 4.0.6 - '@smithy/middleware-stack': 4.0.3 - '@smithy/node-config-provider': 4.1.2 - '@smithy/node-http-handler': 4.0.5 - '@smithy/protocol-http': 5.1.1 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 - '@smithy/url-parser': 4.0.3 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/middleware-host-header': 3.821.0 + '@aws-sdk/middleware-logger': 3.821.0 + '@aws-sdk/middleware-recursion-detection': 3.821.0 + '@aws-sdk/middleware-user-agent': 3.826.0 + '@aws-sdk/region-config-resolver': 3.821.0 + '@aws-sdk/types': 3.821.0 + '@aws-sdk/util-endpoints': 3.821.0 + '@aws-sdk/util-user-agent-browser': 3.821.0 + '@aws-sdk/util-user-agent-node': 3.826.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.5.3 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-retry': 4.1.12 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.0.6 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.15 - '@smithy/util-defaults-mode-node': 4.0.15 - '@smithy/util-endpoints': 3.0.5 - '@smithy/util-middleware': 4.0.3 - '@smithy/util-retry': 4.0.4 + '@smithy/util-defaults-mode-browser': 4.0.19 + '@smithy/util-defaults-mode-node': 4.0.19 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/region-config-resolver@3.808.0': + '@aws-sdk/region-config-resolver@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/node-config-provider': 4.1.2 - '@smithy/types': 4.3.0 + '@aws-sdk/types': 3.821.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.3 + '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.816.0': + '@aws-sdk/signature-v4-multi-region@3.826.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.816.0 - '@aws-sdk/types': 3.804.0 - '@smithy/protocol-http': 5.1.1 - '@smithy/signature-v4': 5.1.0 - '@smithy/types': 4.3.0 + '@aws-sdk/middleware-sdk-s3': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/token-providers@3.817.0': + '@aws-sdk/token-providers@3.826.0': dependencies: - '@aws-sdk/core': 3.816.0 - '@aws-sdk/nested-clients': 3.817.0 - '@aws-sdk/types': 3.804.0 - '@smithy/property-provider': 4.0.3 - '@smithy/shared-ini-file-loader': 4.0.3 - '@smithy/types': 4.3.0 + '@aws-sdk/core': 3.826.0 + '@aws-sdk/nested-clients': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/types@3.804.0': + '@aws-sdk/types@3.821.0': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@aws-sdk/util-arn-parser@3.804.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.808.0': + '@aws-sdk/util-endpoints@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/types': 4.3.0 - '@smithy/util-endpoints': 3.0.5 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 + '@smithy/util-endpoints': 3.0.6 tslib: 2.8.1 '@aws-sdk/util-locate-window@3.208.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.804.0': + '@aws-sdk/util-user-agent-browser@3.821.0': dependencies: - '@aws-sdk/types': 3.804.0 - '@smithy/types': 4.3.0 + '@aws-sdk/types': 3.821.0 + '@smithy/types': 4.3.1 bowser: 2.11.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.816.0': + '@aws-sdk/util-user-agent-node@3.826.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.816.0 - '@aws-sdk/types': 3.804.0 - '@smithy/node-config-provider': 4.1.2 - '@smithy/types': 4.3.0 + '@aws-sdk/middleware-user-agent': 3.826.0 + '@aws-sdk/types': 3.821.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.804.0': + '@aws-sdk/xml-builder@3.821.0': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@babel/code-frame@7.24.7': @@ -11612,6 +11610,12 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.1.1 + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.24.7': {} '@babel/core@7.24.7': @@ -11622,12 +11626,12 @@ snapshots: '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) '@babel/helpers': 7.24.7 - '@babel/parser': 7.27.2 + '@babel/parser': 7.25.6 '@babel/template': 7.24.7 '@babel/traverse': 7.24.7 - '@babel/types': 7.27.1 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -11636,7 +11640,7 @@ snapshots: '@babel/generator@7.24.7': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -11676,7 +11680,7 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.24.7 transitivePeerDependencies: - supports-color @@ -11811,9 +11815,9 @@ snapshots: '@babel/helper-function-name': 7.24.7 '@babel/helper-hoist-variables': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 - debug: 4.4.1(supports-color@5.5.0) + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + debug: 4.4.1(supports-color@10.0.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -11944,7 +11948,7 @@ snapshots: combined-stream: 1.0.8 extend: 3.0.2 forever-agent: 0.6.1 - form-data: 4.0.2 + form-data: 4.0.3 http-signature: 1.4.0 is-typedarray: 1.0.0 isstream: 0.1.2 @@ -12139,9 +12143,9 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0)': dependencies: - eslint: 9.27.0 + eslint: 9.28.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -12151,7 +12155,7 @@ snapshots: '@eslint/config-array@0.20.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -12165,7 +12169,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) espree: 10.3.0 globals: 14.0.0 ignore: 5.3.1 @@ -12176,7 +12180,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.27.0': {} + '@eslint/js@9.28.0': {} '@eslint/object-schema@2.1.6': {} @@ -12483,16 +12487,16 @@ snapshots: '@img/sharp-win32-x64@0.34.2': optional: true - '@inquirer/confirm@5.0.2(@types/node@22.15.28)': + '@inquirer/confirm@5.0.2(@types/node@22.15.31)': dependencies: - '@inquirer/core': 10.1.0(@types/node@22.15.28) - '@inquirer/type': 3.0.1(@types/node@22.15.28) - '@types/node': 22.15.28 + '@inquirer/core': 10.1.0(@types/node@22.15.31) + '@inquirer/type': 3.0.1(@types/node@22.15.31) + '@types/node': 22.15.31 - '@inquirer/core@10.1.0(@types/node@22.15.28)': + '@inquirer/core@10.1.0(@types/node@22.15.31)': dependencies: '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@22.15.28) + '@inquirer/type': 3.0.1(@types/node@22.15.31) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -12505,9 +12509,9 @@ snapshots: '@inquirer/figures@1.0.8': {} - '@inquirer/type@3.0.1(@types/node@22.15.28)': + '@inquirer/type@3.0.1(@types/node@22.15.31)': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@ioredis/commands@1.2.0': {} @@ -12537,7 +12541,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -12550,14 +12554,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.7.1 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.28) + jest-config: 29.7.0(@types/node@22.15.31) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -12586,7 +12590,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -12604,7 +12608,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.28 + '@types/node': 22.15.31 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -12626,7 +12630,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.28 + '@types/node': 22.15.31 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -12696,16 +12700,16 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@types/yargs': 17.0.19 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))': dependencies: glob: 10.4.5 magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.8.3) - vite: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) optionalDependencies: typescript: 5.8.3 @@ -12769,23 +12773,23 @@ snapshots: '@types/react': 18.0.28 react: 19.1.0 - '@microsoft/api-extractor-model@7.30.6(@types/node@22.15.21)': + '@microsoft/api-extractor-model@7.30.6(@types/node@22.15.31)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.21) + '@rushstack/node-core-library': 5.13.1(@types/node@22.15.31) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.52.8(@types/node@22.15.21)': + '@microsoft/api-extractor@7.52.8(@types/node@22.15.31)': dependencies: - '@microsoft/api-extractor-model': 7.30.6(@types/node@22.15.21) + '@microsoft/api-extractor-model': 7.30.6(@types/node@22.15.31) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.21) + '@rushstack/node-core-library': 5.13.1(@types/node@22.15.31) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.15.3(@types/node@22.15.21) - '@rushstack/ts-command-line': 5.0.1(@types/node@22.15.21) + '@rushstack/terminal': 0.15.3(@types/node@22.15.31) + '@rushstack/ts-command-line': 5.0.1(@types/node@22.15.31) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -12806,15 +12810,15 @@ snapshots: '@misskey-dev/browser-image-resizer@2024.1.0': {} - '@misskey-dev/eslint-plugin@2.1.0(@eslint/compat@1.1.1)(@stylistic/eslint-plugin@2.13.0(eslint@9.27.0)(typescript@5.8.3))(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3))(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0))(eslint@9.27.0)(globals@16.1.0)': + '@misskey-dev/eslint-plugin@2.1.0(@eslint/compat@1.1.1)(@stylistic/eslint-plugin@2.13.0(eslint@9.28.0)(typescript@5.8.3))(@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3))(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0))(eslint@9.28.0)(globals@16.2.0)': dependencies: '@eslint/compat': 1.1.1 - '@stylistic/eslint-plugin': 2.13.0(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - eslint: 9.27.0 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) - globals: 16.1.0 + '@stylistic/eslint-plugin': 2.13.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.34.0(eslint@9.28.0)(typescript@5.8.3) + eslint: 9.28.0 + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) + globals: 16.2.0 '@misskey-dev/sharp-read-bmp@1.2.0': dependencies: @@ -12850,7 +12854,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': optional: true - '@mswjs/interceptors@0.38.7': + '@mswjs/interceptors@0.39.2': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -12859,50 +12863,50 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@napi-rs/canvas-android-arm64@0.1.70': + '@napi-rs/canvas-android-arm64@0.1.71': optional: true - '@napi-rs/canvas-darwin-arm64@0.1.70': + '@napi-rs/canvas-darwin-arm64@0.1.71': optional: true - '@napi-rs/canvas-darwin-x64@0.1.70': + '@napi-rs/canvas-darwin-x64@0.1.71': optional: true - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.70': + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.71': optional: true - '@napi-rs/canvas-linux-arm64-gnu@0.1.70': + '@napi-rs/canvas-linux-arm64-gnu@0.1.71': optional: true - '@napi-rs/canvas-linux-arm64-musl@0.1.70': + '@napi-rs/canvas-linux-arm64-musl@0.1.71': optional: true - '@napi-rs/canvas-linux-riscv64-gnu@0.1.70': + '@napi-rs/canvas-linux-riscv64-gnu@0.1.71': optional: true - '@napi-rs/canvas-linux-x64-gnu@0.1.70': + '@napi-rs/canvas-linux-x64-gnu@0.1.71': optional: true - '@napi-rs/canvas-linux-x64-musl@0.1.70': + '@napi-rs/canvas-linux-x64-musl@0.1.71': optional: true - '@napi-rs/canvas-win32-x64-msvc@0.1.70': + '@napi-rs/canvas-win32-x64-msvc@0.1.71': optional: true - '@napi-rs/canvas@0.1.70': + '@napi-rs/canvas@0.1.71': optionalDependencies: - '@napi-rs/canvas-android-arm64': 0.1.70 - '@napi-rs/canvas-darwin-arm64': 0.1.70 - '@napi-rs/canvas-darwin-x64': 0.1.70 - '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.70 - '@napi-rs/canvas-linux-arm64-gnu': 0.1.70 - '@napi-rs/canvas-linux-arm64-musl': 0.1.70 - '@napi-rs/canvas-linux-riscv64-gnu': 0.1.70 - '@napi-rs/canvas-linux-x64-gnu': 0.1.70 - '@napi-rs/canvas-linux-x64-musl': 0.1.70 - '@napi-rs/canvas-win32-x64-msvc': 0.1.70 + '@napi-rs/canvas-android-arm64': 0.1.71 + '@napi-rs/canvas-darwin-arm64': 0.1.71 + '@napi-rs/canvas-darwin-x64': 0.1.71 + '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.71 + '@napi-rs/canvas-linux-arm64-gnu': 0.1.71 + '@napi-rs/canvas-linux-arm64-musl': 0.1.71 + '@napi-rs/canvas-linux-riscv64-gnu': 0.1.71 + '@napi-rs/canvas-linux-x64-gnu': 0.1.71 + '@napi-rs/canvas-linux-x64-musl': 0.1.71 + '@napi-rs/canvas-win32-x64-msvc': 0.1.71 - '@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: file-type: 21.0.0 iterare: 1.2.1 @@ -12914,9 +12918,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@nestjs/core@11.1.2(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.18)(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/core@11.1.3(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.19)(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: - '@nestjs/common': 11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nuxt/opencollective': 0.4.1 fast-safe-stringify: 2.1.1 iterare: 1.2.1 @@ -12926,27 +12930,27 @@ snapshots: tslib: 2.8.1 uid: 2.0.2 optionalDependencies: - '@nestjs/platform-express': 10.4.18(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.2) + '@nestjs/platform-express': 10.4.19(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3) - '@nestjs/platform-express@10.4.18(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.2)': + '@nestjs/platform-express@10.4.19(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)': dependencies: - '@nestjs/common': 11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.2(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.18)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) body-parser: 1.20.3 cors: 2.8.5 express: 4.21.2 - multer: 2.0.0 + multer: 2.0.1 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@nestjs/testing@11.1.2(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.2)(@nestjs/platform-express@10.4.18)': + '@nestjs/testing@11.1.3(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(@nestjs/platform-express@10.4.19)': dependencies: - '@nestjs/common': 11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.2(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.18)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) tslib: 2.8.1 optionalDependencies: - '@nestjs/platform-express': 10.4.18(@nestjs/common@11.1.2(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.2) + '@nestjs/platform-express': 10.4.19(@nestjs/common@11.1.3(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3) '@noble/hashes@1.7.1': {} @@ -12966,7 +12970,7 @@ snapshots: dependencies: agent-base: 7.1.3 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 + https-proxy-agent: 7.0.6(supports-color@10.0.0) lru-cache: 10.4.3 socks-proxy-agent: 8.0.5 transitivePeerDependencies: @@ -13429,90 +13433,113 @@ snapshots: '@readme/openapi-schemas@3.1.0': {} - '@rollup/plugin-json@6.1.0(rollup@4.41.1)': + '@redocly/ajv@8.11.2': + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js-replace: 1.0.1 + + '@redocly/config@0.22.2': {} + + '@redocly/openapi-core@1.34.3(supports-color@10.0.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.41.1) + '@redocly/ajv': 8.11.2 + '@redocly/config': 0.22.2 + colorette: 1.4.0 + https-proxy-agent: 7.0.6(supports-color@10.0.0) + js-levenshtein: 1.1.6 + js-yaml: 4.1.0 + minimatch: 5.1.6 + pluralize: 8.0.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-json@6.1.0(rollup@4.42.0)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.42.0) optionalDependencies: - rollup: 4.41.1 + rollup: 4.42.0 - '@rollup/plugin-replace@6.0.2(rollup@4.41.1)': + '@rollup/plugin-replace@6.0.2(rollup@4.42.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.41.1) + '@rollup/pluginutils': 5.1.4(rollup@4.42.0) magic-string: 0.30.17 optionalDependencies: - rollup: 4.41.1 + rollup: 4.42.0 - '@rollup/pluginutils@5.1.4(rollup@4.41.1)': + '@rollup/pluginutils@5.1.4(rollup@4.42.0)': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.41.1 + rollup: 4.42.0 - '@rollup/rollup-android-arm-eabi@4.41.1': + '@rollup/rollup-android-arm-eabi@4.42.0': optional: true - '@rollup/rollup-android-arm64@4.41.1': + '@rollup/rollup-android-arm64@4.42.0': optional: true - '@rollup/rollup-darwin-arm64@4.41.1': + '@rollup/rollup-darwin-arm64@4.42.0': optional: true - '@rollup/rollup-darwin-x64@4.41.1': + '@rollup/rollup-darwin-x64@4.42.0': optional: true - '@rollup/rollup-freebsd-arm64@4.41.1': + '@rollup/rollup-freebsd-arm64@4.42.0': optional: true - '@rollup/rollup-freebsd-x64@4.41.1': + '@rollup/rollup-freebsd-x64@4.42.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + '@rollup/rollup-linux-arm-gnueabihf@4.42.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.41.1': + '@rollup/rollup-linux-arm-musleabihf@4.42.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.41.1': + '@rollup/rollup-linux-arm64-gnu@4.42.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.41.1': + '@rollup/rollup-linux-arm64-musl@4.42.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + '@rollup/rollup-linux-loongarch64-gnu@4.42.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.42.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.41.1': + '@rollup/rollup-linux-riscv64-gnu@4.42.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.41.1': + '@rollup/rollup-linux-riscv64-musl@4.42.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.41.1': + '@rollup/rollup-linux-s390x-gnu@4.42.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.41.1': + '@rollup/rollup-linux-x64-gnu@4.42.0': optional: true - '@rollup/rollup-linux-x64-musl@4.41.1': + '@rollup/rollup-linux-x64-musl@4.42.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.41.1': + '@rollup/rollup-win32-arm64-msvc@4.42.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.41.1': + '@rollup/rollup-win32-ia32-msvc@4.42.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.41.1': + '@rollup/rollup-win32-x64-msvc@4.42.0': optional: true '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@5.13.1(@types/node@22.15.21)': + '@rushstack/node-core-library@5.13.1(@types/node@22.15.31)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -13523,23 +13550,23 @@ snapshots: resolve: 1.22.8 semver: 7.5.4 optionalDependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.15.3(@types/node@22.15.21)': + '@rushstack/terminal@0.15.3(@types/node@22.15.31)': dependencies: - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.21) + '@rushstack/node-core-library': 5.13.1(@types/node@22.15.31) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 - '@rushstack/ts-command-line@5.0.1(@types/node@22.15.21)': + '@rushstack/ts-command-line@5.0.1(@types/node@22.15.31)': dependencies: - '@rushstack/terminal': 0.15.3(@types/node@22.15.21) + '@rushstack/terminal': 0.15.3(@types/node@22.15.31) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.1 @@ -13548,63 +13575,63 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@sentry-internal/browser-utils@9.22.0': + '@sentry-internal/browser-utils@9.27.0': dependencies: - '@sentry/core': 9.22.0 + '@sentry/core': 9.27.0 - '@sentry-internal/browser-utils@9.24.0': + '@sentry-internal/browser-utils@9.28.0': dependencies: - '@sentry/core': 9.24.0 + '@sentry/core': 9.28.0 - '@sentry-internal/feedback@9.22.0': + '@sentry-internal/feedback@9.27.0': dependencies: - '@sentry/core': 9.22.0 + '@sentry/core': 9.27.0 - '@sentry-internal/feedback@9.24.0': + '@sentry-internal/feedback@9.28.0': dependencies: - '@sentry/core': 9.24.0 + '@sentry/core': 9.28.0 - '@sentry-internal/replay-canvas@9.22.0': + '@sentry-internal/replay-canvas@9.27.0': dependencies: - '@sentry-internal/replay': 9.22.0 - '@sentry/core': 9.22.0 + '@sentry-internal/replay': 9.27.0 + '@sentry/core': 9.27.0 - '@sentry-internal/replay-canvas@9.24.0': + '@sentry-internal/replay-canvas@9.28.0': dependencies: - '@sentry-internal/replay': 9.24.0 - '@sentry/core': 9.24.0 + '@sentry-internal/replay': 9.28.0 + '@sentry/core': 9.28.0 - '@sentry-internal/replay@9.22.0': + '@sentry-internal/replay@9.27.0': dependencies: - '@sentry-internal/browser-utils': 9.22.0 - '@sentry/core': 9.22.0 + '@sentry-internal/browser-utils': 9.27.0 + '@sentry/core': 9.27.0 - '@sentry-internal/replay@9.24.0': + '@sentry-internal/replay@9.28.0': dependencies: - '@sentry-internal/browser-utils': 9.24.0 - '@sentry/core': 9.24.0 + '@sentry-internal/browser-utils': 9.28.0 + '@sentry/core': 9.28.0 - '@sentry/browser@9.22.0': + '@sentry/browser@9.27.0': dependencies: - '@sentry-internal/browser-utils': 9.22.0 - '@sentry-internal/feedback': 9.22.0 - '@sentry-internal/replay': 9.22.0 - '@sentry-internal/replay-canvas': 9.22.0 - '@sentry/core': 9.22.0 + '@sentry-internal/browser-utils': 9.27.0 + '@sentry-internal/feedback': 9.27.0 + '@sentry-internal/replay': 9.27.0 + '@sentry-internal/replay-canvas': 9.27.0 + '@sentry/core': 9.27.0 - '@sentry/browser@9.24.0': + '@sentry/browser@9.28.0': dependencies: - '@sentry-internal/browser-utils': 9.24.0 - '@sentry-internal/feedback': 9.24.0 - '@sentry-internal/replay': 9.24.0 - '@sentry-internal/replay-canvas': 9.24.0 - '@sentry/core': 9.24.0 + '@sentry-internal/browser-utils': 9.28.0 + '@sentry-internal/feedback': 9.28.0 + '@sentry-internal/replay': 9.28.0 + '@sentry-internal/replay-canvas': 9.28.0 + '@sentry/core': 9.28.0 '@sentry/core@8.55.0': {} - '@sentry/core@9.22.0': {} + '@sentry/core@9.27.0': {} - '@sentry/core@9.24.0': {} + '@sentry/core@9.28.0': {} '@sentry/node@8.55.0': dependencies: @@ -13665,45 +13692,45 @@ snapshots: transitivePeerDependencies: - supports-color - '@sentry/vue@9.22.0(vue@3.5.16(typescript@5.8.3))': + '@sentry/vue@9.27.0(vue@3.5.16(typescript@5.8.3))': dependencies: - '@sentry/browser': 9.22.0 - '@sentry/core': 9.22.0 + '@sentry/browser': 9.27.0 + '@sentry/core': 9.27.0 vue: 3.5.16(typescript@5.8.3) - '@sentry/vue@9.24.0(vue@3.5.16(typescript@5.8.3))': + '@sentry/vue@9.28.0(vue@3.5.16(typescript@5.8.3))': dependencies: - '@sentry/browser': 9.24.0 - '@sentry/core': 9.24.0 + '@sentry/browser': 9.28.0 + '@sentry/core': 9.28.0 vue: 3.5.16(typescript@5.8.3) - '@shikijs/core@3.4.2': + '@shikijs/core@3.6.0': dependencies: - '@shikijs/types': 3.4.2 + '@shikijs/types': 3.6.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.4.2': + '@shikijs/engine-javascript@3.6.0': dependencies: - '@shikijs/types': 3.4.2 + '@shikijs/types': 3.6.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@3.4.2': + '@shikijs/engine-oniguruma@3.6.0': dependencies: - '@shikijs/types': 3.4.2 + '@shikijs/types': 3.6.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.4.2': + '@shikijs/langs@3.6.0': dependencies: - '@shikijs/types': 3.4.2 + '@shikijs/types': 3.6.0 - '@shikijs/themes@3.4.2': + '@shikijs/themes@3.6.0': dependencies: - '@shikijs/types': 3.4.2 + '@shikijs/types': 3.6.0 - '@shikijs/types@3.4.2': + '@shikijs/types@3.6.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -13779,9 +13806,9 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/abort-controller@4.0.3': + '@smithy/abort-controller@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/chunked-blob-reader-native@4.0.0': @@ -13793,94 +13820,95 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/config-resolver@4.1.3': + '@smithy/config-resolver@4.1.4': dependencies: - '@smithy/node-config-provider': 4.1.2 - '@smithy/types': 4.3.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.3 + '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 - '@smithy/core@3.4.0': + '@smithy/core@3.5.3': dependencies: - '@smithy/middleware-serde': 4.0.6 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@smithy/middleware-serde': 4.0.8 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.3 - '@smithy/util-stream': 4.2.1 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.0.5': + '@smithy/credential-provider-imds@4.0.6': dependencies: - '@smithy/node-config-provider': 4.1.2 - '@smithy/property-provider': 4.0.3 - '@smithy/types': 4.3.0 - '@smithy/url-parser': 4.0.3 + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 tslib: 2.8.1 - '@smithy/eventstream-codec@4.0.2': + '@smithy/eventstream-codec@4.0.4': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.0.2': + '@smithy/eventstream-serde-browser@4.0.4': dependencies: - '@smithy/eventstream-serde-universal': 4.0.2 - '@smithy/types': 4.3.0 + '@smithy/eventstream-serde-universal': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.1.0': + '@smithy/eventstream-serde-config-resolver@4.1.2': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.0.2': + '@smithy/eventstream-serde-node@4.0.4': dependencies: - '@smithy/eventstream-serde-universal': 4.0.2 - '@smithy/types': 4.3.0 + '@smithy/eventstream-serde-universal': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.0.2': + '@smithy/eventstream-serde-universal@4.0.4': dependencies: - '@smithy/eventstream-codec': 4.0.2 - '@smithy/types': 4.3.0 + '@smithy/eventstream-codec': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.0.3': + '@smithy/fetch-http-handler@5.0.4': dependencies: - '@smithy/protocol-http': 5.1.1 - '@smithy/querystring-builder': 4.0.3 - '@smithy/types': 4.3.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/querystring-builder': 4.0.4 + '@smithy/types': 4.3.1 '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - '@smithy/hash-blob-browser@4.0.2': + '@smithy/hash-blob-browser@4.0.4': dependencies: '@smithy/chunked-blob-reader': 5.0.0 '@smithy/chunked-blob-reader-native': 4.0.0 - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/hash-node@4.0.2': + '@smithy/hash-node@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/hash-stream-node@4.0.2': + '@smithy/hash-stream-node@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/invalid-dependency@4.0.2': + '@smithy/invalid-dependency@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/is-array-buffer@2.0.0': @@ -13891,57 +13919,57 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/md5-js@4.0.2': + '@smithy/md5-js@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/middleware-content-length@4.0.2': + '@smithy/middleware-content-length@4.0.4': dependencies: - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.1.7': + '@smithy/middleware-endpoint@4.1.11': dependencies: - '@smithy/core': 3.4.0 - '@smithy/middleware-serde': 4.0.6 - '@smithy/node-config-provider': 4.1.2 - '@smithy/shared-ini-file-loader': 4.0.3 - '@smithy/types': 4.3.0 - '@smithy/url-parser': 4.0.3 - '@smithy/util-middleware': 4.0.3 + '@smithy/core': 3.5.3 + '@smithy/middleware-serde': 4.0.8 + '@smithy/node-config-provider': 4.1.3 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 + '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 - '@smithy/middleware-retry@4.1.8': + '@smithy/middleware-retry@4.1.12': dependencies: - '@smithy/node-config-provider': 4.1.2 - '@smithy/protocol-http': 5.1.1 - '@smithy/service-error-classification': 4.0.4 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 - '@smithy/util-middleware': 4.0.3 - '@smithy/util-retry': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/service-error-classification': 4.0.5 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.5 tslib: 2.8.1 uuid: 9.0.1 - '@smithy/middleware-serde@4.0.6': + '@smithy/middleware-serde@4.0.8': dependencies: - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/middleware-stack@4.0.3': + '@smithy/middleware-stack@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/node-config-provider@4.1.2': + '@smithy/node-config-provider@4.1.3': dependencies: - '@smithy/property-provider': 4.0.3 - '@smithy/shared-ini-file-loader': 4.0.3 - '@smithy/types': 4.3.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/node-http-handler@2.5.0': @@ -13952,17 +13980,17 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.0.5': + '@smithy/node-http-handler@4.0.6': dependencies: - '@smithy/abort-controller': 4.0.3 - '@smithy/protocol-http': 5.1.1 - '@smithy/querystring-builder': 4.0.3 - '@smithy/types': 4.3.0 + '@smithy/abort-controller': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/querystring-builder': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/property-provider@4.0.3': + '@smithy/property-provider@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/protocol-http@3.3.0': @@ -13970,9 +13998,9 @@ snapshots: '@smithy/types': 2.12.0 tslib: 2.8.1 - '@smithy/protocol-http@5.1.1': + '@smithy/protocol-http@5.1.2': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/querystring-builder@2.2.0': @@ -13981,59 +14009,59 @@ snapshots: '@smithy/util-uri-escape': 2.2.0 tslib: 2.8.1 - '@smithy/querystring-builder@4.0.3': + '@smithy/querystring-builder@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 - '@smithy/querystring-parser@4.0.3': + '@smithy/querystring-parser@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/service-error-classification@4.0.4': + '@smithy/service-error-classification@4.0.5': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 - '@smithy/shared-ini-file-loader@4.0.3': + '@smithy/shared-ini-file-loader@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/signature-v4@5.1.0': + '@smithy/signature-v4@5.1.2': dependencies: '@smithy/is-array-buffer': 4.0.0 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-middleware': 4.0.3 + '@smithy/util-middleware': 4.0.4 '@smithy/util-uri-escape': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@4.3.0': + '@smithy/smithy-client@4.4.3': dependencies: - '@smithy/core': 3.4.0 - '@smithy/middleware-endpoint': 4.1.7 - '@smithy/middleware-stack': 4.0.3 - '@smithy/protocol-http': 5.1.1 - '@smithy/types': 4.3.0 - '@smithy/util-stream': 4.2.1 + '@smithy/core': 3.5.3 + '@smithy/middleware-endpoint': 4.1.11 + '@smithy/middleware-stack': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-stream': 4.2.2 tslib: 2.8.1 '@smithy/types@2.12.0': dependencies: tslib: 2.8.1 - '@smithy/types@4.3.0': + '@smithy/types@4.3.1': dependencies: tslib: 2.8.1 - '@smithy/url-parser@4.0.3': + '@smithy/url-parser@4.0.4': dependencies: - '@smithy/querystring-parser': 4.0.3 - '@smithy/types': 4.3.0 + '@smithy/querystring-parser': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/util-base64@4.0.0': @@ -14064,50 +14092,50 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.15': + '@smithy/util-defaults-mode-browser@4.0.19': dependencies: - '@smithy/property-provider': 4.0.3 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 + '@smithy/property-provider': 4.0.4 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.15': + '@smithy/util-defaults-mode-node@4.0.19': dependencies: - '@smithy/config-resolver': 4.1.3 - '@smithy/credential-provider-imds': 4.0.5 - '@smithy/node-config-provider': 4.1.2 - '@smithy/property-provider': 4.0.3 - '@smithy/smithy-client': 4.3.0 - '@smithy/types': 4.3.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/smithy-client': 4.4.3 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/util-endpoints@3.0.5': + '@smithy/util-endpoints@3.0.6': dependencies: - '@smithy/node-config-provider': 4.1.2 - '@smithy/types': 4.3.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@smithy/util-hex-encoding@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-middleware@4.0.3': + '@smithy/util-middleware@4.0.4': dependencies: - '@smithy/types': 4.3.0 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/util-retry@4.0.4': + '@smithy/util-retry@4.0.5': dependencies: - '@smithy/service-error-classification': 4.0.4 - '@smithy/types': 4.3.0 + '@smithy/service-error-classification': 4.0.5 + '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/util-stream@4.2.1': + '@smithy/util-stream@4.2.2': dependencies: - '@smithy/fetch-http-handler': 5.0.3 - '@smithy/node-http-handler': 4.0.5 - '@smithy/types': 4.3.0 + '@smithy/fetch-http-handler': 5.0.4 + '@smithy/node-http-handler': 4.0.6 + '@smithy/types': 4.3.1 '@smithy/util-base64': 4.0.0 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-hex-encoding': 4.0.0 @@ -14132,10 +14160,10 @@ snapshots: '@smithy/util-buffer-from': 4.0.0 tslib: 2.8.1 - '@smithy/util-waiter@4.0.3': + '@smithy/util-waiter@4.0.5': dependencies: - '@smithy/abort-controller': 4.0.3 - '@smithy/types': 4.3.0 + '@smithy/abort-controller': 4.0.4 + '@smithy/types': 4.3.1 tslib: 2.8.1 '@sqltools/formatter@1.2.5': {} @@ -14259,13 +14287,13 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@storybook/builder-vite@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))': + '@storybook/builder-vite@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))': dependencies: '@storybook/csf-plugin': 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)) browser-assert: 1.2.1 storybook: 8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - vite: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) '@storybook/components@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))': dependencies: @@ -14328,11 +14356,11 @@ snapshots: react-dom: 19.1.0(react@19.1.0) storybook: 8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) - '@storybook/react-vite@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.41.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))': + '@storybook/react-vite@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.42.0)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)) - '@rollup/pluginutils': 5.1.4(rollup@4.41.1) - '@storybook/builder-vite': 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)) + '@rollup/pluginutils': 5.1.4(rollup@4.42.0) + '@storybook/builder-vite': 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)) '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3) find-up: 5.0.0 magic-string: 0.30.17 @@ -14342,7 +14370,7 @@ snapshots: resolve: 1.22.8 storybook: 8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) tsconfig-paths: 4.2.0 - vite: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) optionalDependencies: '@storybook/test': 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)) transitivePeerDependencies: @@ -14391,15 +14419,15 @@ snapshots: dependencies: storybook: 8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) - '@storybook/vue3-vite@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3))': + '@storybook/vue3-vite@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3))': dependencies: - '@storybook/builder-vite': 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)) + '@storybook/builder-vite': 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)) '@storybook/vue3': 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.16(typescript@5.8.3)) find-package-json: 1.2.0 magic-string: 0.30.17 storybook: 8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) typescript: 5.8.3 - vite: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) vue-component-meta: 2.0.16(typescript@5.8.3) vue-docgen-api: 4.75.1(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: @@ -14419,10 +14447,10 @@ snapshots: vue: 3.5.16(typescript@5.8.3) vue-component-type-helpers: 2.2.10 - '@stylistic/eslint-plugin@2.13.0(eslint@9.27.0)(typescript@5.8.3)': + '@stylistic/eslint-plugin@2.13.0(eslint@9.28.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - eslint: 9.27.0 + '@typescript-eslint/utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3) + eslint: 9.28.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -14431,9 +14459,9 @@ snapshots: - supports-color - typescript - '@swc/cli@0.7.7(@swc/core@1.11.29)(chokidar@4.0.3)': + '@swc/cli@0.7.7(@swc/core@1.12.0)(chokidar@4.0.3)': dependencies: - '@swc/core': 1.11.29 + '@swc/core': 1.12.0 '@swc/counter': 0.1.3 '@xhmikosr/bin-wrapper': 13.0.5 commander: 8.3.0 @@ -14451,10 +14479,10 @@ snapshots: '@swc/wasm': 1.2.130 optional: true - '@swc/core-darwin-arm64@1.11.29': + '@swc/core-darwin-arm64@1.12.0': optional: true - '@swc/core-darwin-x64@1.11.29': + '@swc/core-darwin-x64@1.12.0': optional: true '@swc/core-freebsd-x64@1.3.11': @@ -14462,56 +14490,56 @@ snapshots: '@swc/wasm': 1.2.130 optional: true - '@swc/core-linux-arm-gnueabihf@1.11.29': + '@swc/core-linux-arm-gnueabihf@1.12.0': optional: true - '@swc/core-linux-arm64-gnu@1.11.29': + '@swc/core-linux-arm64-gnu@1.12.0': optional: true - '@swc/core-linux-arm64-musl@1.11.29': + '@swc/core-linux-arm64-musl@1.12.0': optional: true - '@swc/core-linux-x64-gnu@1.11.29': + '@swc/core-linux-x64-gnu@1.12.0': optional: true - '@swc/core-linux-x64-musl@1.11.29': + '@swc/core-linux-x64-musl@1.12.0': optional: true - '@swc/core-win32-arm64-msvc@1.11.29': + '@swc/core-win32-arm64-msvc@1.12.0': optional: true - '@swc/core-win32-ia32-msvc@1.11.29': + '@swc/core-win32-ia32-msvc@1.12.0': optional: true - '@swc/core-win32-x64-msvc@1.11.29': + '@swc/core-win32-x64-msvc@1.12.0': optional: true - '@swc/core@1.11.29': + '@swc/core@1.12.0': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.21 + '@swc/types': 0.1.22 optionalDependencies: - '@swc/core-darwin-arm64': 1.11.29 - '@swc/core-darwin-x64': 1.11.29 - '@swc/core-linux-arm-gnueabihf': 1.11.29 - '@swc/core-linux-arm64-gnu': 1.11.29 - '@swc/core-linux-arm64-musl': 1.11.29 - '@swc/core-linux-x64-gnu': 1.11.29 - '@swc/core-linux-x64-musl': 1.11.29 - '@swc/core-win32-arm64-msvc': 1.11.29 - '@swc/core-win32-ia32-msvc': 1.11.29 - '@swc/core-win32-x64-msvc': 1.11.29 + '@swc/core-darwin-arm64': 1.12.0 + '@swc/core-darwin-x64': 1.12.0 + '@swc/core-linux-arm-gnueabihf': 1.12.0 + '@swc/core-linux-arm64-gnu': 1.12.0 + '@swc/core-linux-arm64-musl': 1.12.0 + '@swc/core-linux-x64-gnu': 1.12.0 + '@swc/core-linux-x64-musl': 1.12.0 + '@swc/core-win32-arm64-msvc': 1.12.0 + '@swc/core-win32-ia32-msvc': 1.12.0 + '@swc/core-win32-x64-msvc': 1.12.0 '@swc/counter@0.1.3': {} - '@swc/jest@0.2.38(@swc/core@1.11.29)': + '@swc/jest@0.2.38(@swc/core@1.12.0)': dependencies: '@jest/create-cache-key-function': 29.7.0 - '@swc/core': 1.11.29 + '@swc/core': 1.12.0 '@swc/counter': 0.1.3 jsonc-parser: 3.2.0 - '@swc/types@0.1.21': + '@swc/types@0.1.22': dependencies: '@swc/counter': 0.1.3 @@ -14528,12 +14556,12 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tabler/icons-webfont@3.33.0': + '@tabler/icons-webfont@3.34.0': dependencies: - '@tabler/icons': 3.33.0 + '@tabler/icons': 3.34.0 sharp: 0.34.2 - '@tabler/icons@3.33.0': {} + '@tabler/icons@3.34.0': {} '@tensorflow/tfjs-backend-cpu@4.22.0(@tensorflow/tfjs-core@4.22.0(encoding@0.1.13))': dependencies: @@ -14661,7 +14689,7 @@ snapshots: '@tokenizer/inflate@0.2.7': dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) fflate: 0.8.2 token-types: 6.0.0 transitivePeerDependencies: @@ -14681,7 +14709,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/archiver@6.0.3': dependencies: @@ -14693,36 +14721,40 @@ snapshots: '@types/babel__core@7.20.0': dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.0 '@types/babel__generator@7.6.4': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.25.6 '@types/babel__template@7.4.1': dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__traverse@7.20.0': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.25.6 '@types/bcryptjs@2.4.6': {} - '@types/body-parser@1.19.5': + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.36 - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/braces@3.0.1': {} '@types/canvas-confetti@1.9.0': {} + '@types/chai@5.2.2': + dependencies: + '@types/deep-eql': 4.0.2 + '@types/color-convert@2.0.4': dependencies: '@types/color-name': 1.1.1 @@ -14731,9 +14763,9 @@ snapshots: '@types/connect@3.4.36': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 - '@types/content-disposition@0.5.8': {} + '@types/content-disposition@0.5.9': {} '@types/cookie@0.6.0': {} @@ -14743,6 +14775,8 @@ snapshots: dependencies: '@types/ms': 0.7.34 + '@types/deep-eql@4.0.2': {} + '@types/disposable-email-domains@1.0.2': {} '@types/dlv@1.1.5': {} @@ -14751,31 +14785,33 @@ snapshots: '@types/eslint@7.29.0': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} + '@types/express-serve-static-core@4.17.33': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/express@4.17.17': dependencies: - '@types/body-parser': 1.19.5 + '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.17.33 '@types/qs': 6.9.7 '@types/serve-static': 1.15.1 '@types/fluent-ffmpeg@2.1.27': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/graceful-fs@4.1.6': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@types/hammerjs@2.0.46': {} @@ -14789,7 +14825,7 @@ snapshots: '@types/http-link-header@1.0.7': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/istanbul-lib-coverage@2.0.4': {} @@ -14810,7 +14846,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -14848,24 +14884,20 @@ snapshots: '@types/mysql@2.15.26': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@types/node-fetch@2.6.11': dependencies: - '@types/node': 22.15.28 - form-data: 4.0.2 + '@types/node': 22.15.31 + form-data: 4.0.3 - '@types/node@22.15.21': - dependencies: - undici-types: 6.21.0 - - '@types/node@22.15.28': + '@types/node@22.15.31': dependencies: undici-types: 6.21.0 '@types/nodemailer@6.4.17': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/normalize-package-data@2.4.1': {} @@ -14876,11 +14908,11 @@ snapshots: '@types/oauth2orize@1.11.5': dependencies: '@types/express': 4.17.17 - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/oauth@0.9.6': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/offscreencanvas@2019.3.0': {} @@ -14888,17 +14920,17 @@ snapshots: '@types/pg-pool@2.0.6': dependencies: - '@types/pg': 8.15.2 + '@types/pg': 8.15.4 - '@types/pg@8.15.2': + '@types/pg@8.15.4': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 pg-protocol: 1.10.0 - pg-types: 4.0.1 + pg-types: 2.2.0 '@types/pg@8.6.1': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 pg-protocol: 1.10.0 pg-types: 2.2.0 @@ -14910,7 +14942,7 @@ snapshots: '@types/qrcode@1.5.5': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/qs@6.9.7': {} @@ -14928,7 +14960,7 @@ snapshots: '@types/readdir-glob@1.1.1': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@types/redis-info@3.0.3': {} @@ -14951,7 +14983,7 @@ snapshots: '@types/serve-static@1.15.1': dependencies: '@types/mime': 3.0.1 - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@types/serviceworker@0.0.74': {} @@ -14977,8 +15009,8 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 22.15.28 - form-data: 4.0.2 + '@types/node': 22.15.31 + form-data: 4.0.3 '@types/supertest@6.0.3': dependencies: @@ -14987,7 +15019,7 @@ snapshots: '@types/tedious@4.0.14': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@types/throttle-debounce@5.0.2': {} @@ -15003,19 +15035,19 @@ snapshots: '@types/vary@1.1.3': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/wawoff2@1.0.2': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 '@types/web-push@3.6.4': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.21 + '@types/node': 22.15.31 '@types/yargs-parser@21.0.0': {} @@ -15025,18 +15057,18 @@ snapshots: '@types/yauzl@2.10.0': dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 optional: true - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.27.0 + '@typescript-eslint/parser': 8.34.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.34.0 + '@typescript-eslint/type-utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.34.0 + eslint: 9.28.0 graphemer: 1.4.0 ignore: 7.0.4 natural-compare: 1.4.0 @@ -15045,117 +15077,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.0(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.33.0 - '@typescript-eslint/type-utils': 8.33.0(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.0(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.33.0 - eslint: 9.27.0 - graphemer: 1.4.0 - ignore: 7.0.4 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.34.0 + '@typescript-eslint/types': 8.34.0 + '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.34.0 + debug: 4.4.1(supports-color@10.0.0) + eslint: 9.28.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/project-service@8.34.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - debug: 4.4.1(supports-color@5.5.0) - eslint: 9.27.0 + '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3) + '@typescript-eslint/types': 8.34.0 + debug: 4.4.1(supports-color@10.0.0) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/scope-manager@8.34.0': dependencies: - '@typescript-eslint/scope-manager': 8.33.0 - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.33.0 - debug: 4.4.1(supports-color@5.5.0) - eslint: 9.27.0 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types': 8.34.0 + '@typescript-eslint/visitor-keys': 8.34.0 - '@typescript-eslint/project-service@8.33.0(typescript@5.8.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.33.0(typescript@5.8.3) - '@typescript-eslint/types': 8.33.0 - debug: 4.4.1(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/scope-manager@8.32.1': - dependencies: - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/visitor-keys': 8.32.1 - - '@typescript-eslint/scope-manager@8.33.0': - dependencies: - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/visitor-keys': 8.33.0 - - '@typescript-eslint/tsconfig-utils@8.33.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.34.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - debug: 4.4.1(supports-color@5.5.0) - eslint: 9.27.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.33.0(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.34.0(eslint@9.28.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.0(eslint@9.27.0)(typescript@5.8.3) - debug: 4.4.1(supports-color@5.5.0) - eslint: 9.27.0 + '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3) + debug: 4.4.1(supports-color@10.0.0) + eslint: 9.28.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.32.1': {} - - '@typescript-eslint/types@8.33.0': {} - - '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/visitor-keys': 8.32.1 - debug: 4.4.1(supports-color@5.5.0) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.34.0': {} - '@typescript-eslint/typescript-estree@8.33.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.34.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.33.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.33.0(typescript@5.8.3) - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/visitor-keys': 8.33.0 - debug: 4.4.1(supports-color@5.5.0) + '@typescript-eslint/project-service': 8.34.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3) + '@typescript-eslint/types': 8.34.0 + '@typescript-eslint/visitor-keys': 8.34.0 + debug: 4.4.1(supports-color@10.0.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -15165,50 +15136,35 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.34.0(eslint@9.28.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 9.27.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + '@typescript-eslint/scope-manager': 8.34.0 + '@typescript-eslint/types': 8.34.0 + '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) + eslint: 9.28.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.33.0(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/visitor-keys@8.34.0': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) - '@typescript-eslint/scope-manager': 8.33.0 - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.8.3) - eslint: 9.27.0 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.32.1': - dependencies: - '@typescript-eslint/types': 8.32.1 - eslint-visitor-keys: 4.2.0 - - '@typescript-eslint/visitor-keys@8.33.0': - dependencies: - '@typescript-eslint/types': 8.33.0 + '@typescript-eslint/types': 8.34.0 eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3))': + '@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))(vue@3.5.16(typescript@5.8.3))': dependencies: - vite: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) vue: 3.5.16(typescript@5.8.3) - '@vitest/coverage-v8@3.1.4(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))': + '@vitest/coverage-v8@3.2.3(vitest@3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.1(supports-color@5.5.0) + ast-v8-to-istanbul: 0.3.3 + debug: 4.4.1(supports-color@10.0.0) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -15218,7 +15174,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vitest: 3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) transitivePeerDependencies: - supports-color @@ -15229,21 +15185,22 @@ snapshots: chai: 5.2.0 tinyrainbow: 1.2.0 - '@vitest/expect@3.1.4': + '@vitest/expect@3.2.3': dependencies: - '@vitest/spy': 3.1.4 - '@vitest/utils': 3.1.4 + '@types/chai': 5.2.2 + '@vitest/spy': 3.2.3 + '@vitest/utils': 3.2.3 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.4(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4))': + '@vitest/mocker@3.2.3(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4))': dependencies: - '@vitest/spy': 3.1.4 + '@vitest/spy': 3.2.3 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.8.6(@types/node@22.15.28)(typescript@5.8.3) - vite: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + msw: 2.10.2(@types/node@22.15.31)(typescript@5.8.3) + vite: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) '@vitest/pretty-format@2.0.5': dependencies: @@ -15253,18 +15210,19 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@3.1.4': + '@vitest/pretty-format@3.2.3': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.1.4': + '@vitest/runner@3.2.3': dependencies: - '@vitest/utils': 3.1.4 + '@vitest/utils': 3.2.3 pathe: 2.0.3 + strip-literal: 3.0.0 - '@vitest/snapshot@3.1.4': + '@vitest/snapshot@3.2.3': dependencies: - '@vitest/pretty-format': 3.1.4 + '@vitest/pretty-format': 3.2.3 magic-string: 0.30.17 pathe: 2.0.3 @@ -15272,9 +15230,9 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/spy@3.1.4': + '@vitest/spy@3.2.3': dependencies: - tinyspy: 3.0.2 + tinyspy: 4.0.3 '@vitest/utils@2.0.5': dependencies: @@ -15289,9 +15247,9 @@ snapshots: loupe: 3.1.3 tinyrainbow: 1.2.0 - '@vitest/utils@3.1.4': + '@vitest/utils@3.2.3': dependencies: - '@vitest/pretty-format': 3.1.4 + '@vitest/pretty-format': 3.2.3 loupe: 3.1.3 tinyrainbow: 2.0.0 @@ -15398,7 +15356,7 @@ snapshots: '@volar/language-core': 2.4.11 '@vue/compiler-dom': 3.5.13 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.14 + '@vue/shared': 3.5.13 alien-signals: 1.0.3 minimatch: 9.0.5 muggle-string: 0.4.1 @@ -15527,17 +15485,17 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.14.1): + acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 - acorn-jsx@5.3.2(acorn@8.14.1): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn@7.4.1: {} - acorn@8.14.1: {} + acorn@8.15.0: {} adm-zip@0.5.10: optional: true @@ -15549,7 +15507,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) transitivePeerDependencies: - supports-color optional: true @@ -15796,6 +15754,12 @@ snapshots: dependencies: tslib: 2.8.1 + ast-v8-to-istanbul@0.3.3: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + estree-walker: 3.0.3 + js-tokens: 9.0.1 + astral-regex@2.0.0: {} astring@1.9.0: {} @@ -15842,7 +15806,7 @@ snapshots: axios@1.8.4(debug@4.4.1): dependencies: follow-redirects: 1.15.9(debug@4.4.1) - form-data: 4.0.2 + form-data: 4.0.3 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -15903,7 +15867,7 @@ snapshots: babel-walk@3.0.0-canary-5: dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.25.6 bail@2.0.2: {} @@ -16029,7 +15993,7 @@ snapshots: node-gyp-build: 4.6.0 optional: true - bullmq@5.53.0: + bullmq@5.53.2: dependencies: cron-parser: 4.9.0 ioredis: 5.6.1 @@ -16179,6 +16143,8 @@ snapshots: chalk@5.4.1: {} + change-case@5.4.4: {} + char-regex@1.0.2: {} character-entities-html4@2.1.0: {} @@ -16344,6 +16310,8 @@ snapshots: colord@2.9.3: {} + colorette@1.4.0: {} + colorette@2.0.19: {} colors@1.4.0: @@ -16387,11 +16355,11 @@ snapshots: concat-map@0.0.1: {} - concat-stream@1.6.2: + concat-stream@2.0.0: dependencies: buffer-from: 1.1.2 inherits: 2.0.4 - readable-stream: 2.3.7 + readable-stream: 3.6.2 typedarray: 0.0.6 config-chain@1.1.13: @@ -16406,7 +16374,7 @@ snapshots: constantinople@4.0.1: dependencies: - '@babel/parser': 7.27.2 + '@babel/parser': 7.25.6 '@babel/types': 7.25.6 content-disposition@0.5.4: @@ -16447,13 +16415,13 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.3.0 - create-jest@29.7.0(@types/node@22.15.21): + create-jest@29.7.0(@types/node@22.15.31): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.21) + jest-config: 29.7.0(@types/node@22.15.31) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -16493,9 +16461,9 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-declaration-sorter@7.2.0(postcss@8.5.3): + css-declaration-sorter@7.2.0(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 css-select@5.1.0: dependencies: @@ -16521,49 +16489,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.7(postcss@8.5.3): + cssnano-preset-default@7.0.7(postcss@8.5.4): dependencies: browserslist: 4.24.5 - css-declaration-sorter: 7.2.0(postcss@8.5.3) - cssnano-utils: 5.0.1(postcss@8.5.3) - postcss: 8.5.3 - postcss-calc: 10.1.1(postcss@8.5.3) - postcss-colormin: 7.0.3(postcss@8.5.3) - postcss-convert-values: 7.0.5(postcss@8.5.3) - postcss-discard-comments: 7.0.4(postcss@8.5.3) - postcss-discard-duplicates: 7.0.2(postcss@8.5.3) - postcss-discard-empty: 7.0.1(postcss@8.5.3) - postcss-discard-overridden: 7.0.1(postcss@8.5.3) - postcss-merge-longhand: 7.0.5(postcss@8.5.3) - postcss-merge-rules: 7.0.5(postcss@8.5.3) - postcss-minify-font-values: 7.0.1(postcss@8.5.3) - postcss-minify-gradients: 7.0.1(postcss@8.5.3) - postcss-minify-params: 7.0.3(postcss@8.5.3) - postcss-minify-selectors: 7.0.5(postcss@8.5.3) - postcss-normalize-charset: 7.0.1(postcss@8.5.3) - postcss-normalize-display-values: 7.0.1(postcss@8.5.3) - postcss-normalize-positions: 7.0.1(postcss@8.5.3) - postcss-normalize-repeat-style: 7.0.1(postcss@8.5.3) - postcss-normalize-string: 7.0.1(postcss@8.5.3) - postcss-normalize-timing-functions: 7.0.1(postcss@8.5.3) - postcss-normalize-unicode: 7.0.3(postcss@8.5.3) - postcss-normalize-url: 7.0.1(postcss@8.5.3) - postcss-normalize-whitespace: 7.0.1(postcss@8.5.3) - postcss-ordered-values: 7.0.2(postcss@8.5.3) - postcss-reduce-initial: 7.0.3(postcss@8.5.3) - postcss-reduce-transforms: 7.0.1(postcss@8.5.3) - postcss-svgo: 7.0.2(postcss@8.5.3) - postcss-unique-selectors: 7.0.4(postcss@8.5.3) + css-declaration-sorter: 7.2.0(postcss@8.5.4) + cssnano-utils: 5.0.1(postcss@8.5.4) + postcss: 8.5.4 + postcss-calc: 10.1.1(postcss@8.5.4) + postcss-colormin: 7.0.3(postcss@8.5.4) + postcss-convert-values: 7.0.5(postcss@8.5.4) + postcss-discard-comments: 7.0.4(postcss@8.5.4) + postcss-discard-duplicates: 7.0.2(postcss@8.5.4) + postcss-discard-empty: 7.0.1(postcss@8.5.4) + postcss-discard-overridden: 7.0.1(postcss@8.5.4) + postcss-merge-longhand: 7.0.5(postcss@8.5.4) + postcss-merge-rules: 7.0.5(postcss@8.5.4) + postcss-minify-font-values: 7.0.1(postcss@8.5.4) + postcss-minify-gradients: 7.0.1(postcss@8.5.4) + postcss-minify-params: 7.0.3(postcss@8.5.4) + postcss-minify-selectors: 7.0.5(postcss@8.5.4) + postcss-normalize-charset: 7.0.1(postcss@8.5.4) + postcss-normalize-display-values: 7.0.1(postcss@8.5.4) + postcss-normalize-positions: 7.0.1(postcss@8.5.4) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.4) + postcss-normalize-string: 7.0.1(postcss@8.5.4) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.4) + postcss-normalize-unicode: 7.0.3(postcss@8.5.4) + postcss-normalize-url: 7.0.1(postcss@8.5.4) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.4) + postcss-ordered-values: 7.0.2(postcss@8.5.4) + postcss-reduce-initial: 7.0.3(postcss@8.5.4) + postcss-reduce-transforms: 7.0.1(postcss@8.5.4) + postcss-svgo: 7.0.2(postcss@8.5.4) + postcss-unique-selectors: 7.0.4(postcss@8.5.4) - cssnano-utils@5.0.1(postcss@8.5.3): + cssnano-utils@5.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 - cssnano@7.0.7(postcss@8.5.3): + cssnano@7.0.7(postcss@8.5.4): dependencies: - cssnano-preset-default: 7.0.7(postcss@8.5.3) + cssnano-preset-default: 7.0.7(postcss@8.5.4) lilconfig: 3.1.3 - postcss: 8.5.3 + postcss: 8.5.4 csso@5.0.5: dependencies: @@ -16576,7 +16544,7 @@ snapshots: csstype@3.1.3: {} - cypress@14.4.0: + cypress@14.4.1: dependencies: '@cypress/request': 3.0.8 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) @@ -16671,6 +16639,12 @@ snapshots: optionalDependencies: supports-color: 8.1.1 + debug@4.4.1(supports-color@10.0.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 10.0.0 + debug@4.4.1(supports-color@5.5.0): dependencies: ms: 2.1.3 @@ -17040,7 +17014,7 @@ snapshots: esbuild-register@3.5.0(esbuild@0.25.5): dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) esbuild: 0.25.5 transitivePeerDependencies: - supports-color @@ -17136,27 +17110,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.27.0): - dependencies: - debug: 3.2.7(supports-color@8.1.1) - optionalDependencies: - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - eslint: 9.27.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.27.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 8.33.0(eslint@9.27.0)(typescript@5.8.3) - eslint: 9.27.0 + '@typescript-eslint/parser': 8.34.0(eslint@9.28.0)(typescript@5.8.3) + eslint: 9.28.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -17165,9 +17129,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 9.27.0 + eslint: 9.28.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.27.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -17179,50 +17143,21 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.34.0(eslint@9.28.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0): + eslint-plugin-vue@10.2.0(eslint@9.28.0)(vue-eslint-parser@10.1.3(eslint@9.28.0)): dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7(supports-color@8.1.1) - doctrine: 2.1.0 - eslint: 9.27.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.27.0) - hasown: 2.0.2 - is-core-module: 2.15.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - string.prototype.trimend: 1.0.8 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.33.0(eslint@9.27.0)(typescript@5.8.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-vue@10.1.0(eslint@9.27.0)(vue-eslint-parser@10.1.3(eslint@9.27.0)): - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) - eslint: 9.27.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + eslint: 9.28.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 semver: 7.7.2 - vue-eslint-parser: 10.1.3(eslint@9.27.0) + vue-eslint-parser: 10.1.3(eslint@9.28.0) xml-name-validator: 4.0.0 eslint-rule-docs@1.1.235: {} @@ -17236,25 +17171,25 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.27.0: + eslint@9.28.0: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.1 '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.27.0 + '@eslint/js': 9.28.0 '@eslint/plugin-kit': 0.3.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) escape-string-regexp: 4.0.0 eslint-scope: 8.3.0 eslint-visitor-keys: 4.2.0 @@ -17278,8 +17213,8 @@ snapshots: espree@10.3.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.0 esprima@4.0.1: {} @@ -17298,7 +17233,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esutils@2.0.3: {} @@ -17372,21 +17307,6 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.5.3: - dependencies: - '@sindresorhus/merge-streams': 4.0.0 - cross-spawn: 7.0.6 - figures: 6.1.0 - get-stream: 9.0.1 - human-signals: 8.0.0 - is-plain-obj: 4.1.0 - is-stream: 4.0.1 - npm-run-path: 6.0.0 - pretty-ms: 9.2.0 - signal-exit: 4.1.0 - strip-final-newline: 4.0.0 - yoctocolors: 2.1.1 - execa@9.6.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -17682,7 +17602,7 @@ snapshots: follow-redirects@1.15.9(debug@4.4.1): optionalDependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) for-each@0.3.3: dependencies: @@ -17699,11 +17619,12 @@ snapshots: form-data-encoder@4.0.2: {} - form-data@4.0.2: + form-data@4.0.3: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 + hasown: 2.0.2 mime-types: 2.1.35 formdata-polyfill@4.0.10: @@ -17897,7 +17818,7 @@ snapshots: globals@14.0.0: {} - globals@16.1.0: {} + globals@16.2.0: {} globalthis@1.0.3: dependencies: @@ -17962,7 +17883,7 @@ snapshots: webidl-conversions: 7.0.0 whatwg-mimetype: 3.0.0 - happy-dom@17.5.6: + happy-dom@17.6.3: dependencies: webidl-conversions: 7.0.0 whatwg-mimetype: 3.0.0 @@ -18080,7 +18001,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) transitivePeerDependencies: - supports-color @@ -18108,15 +18029,15 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) transitivePeerDependencies: - supports-color optional: true - https-proxy-agent@7.0.6: + https-proxy-agent@7.0.6(supports-color@10.0.0): dependencies: agent-base: 7.1.3 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) transitivePeerDependencies: - supports-color @@ -18128,8 +18049,6 @@ snapshots: human-signals@5.0.0: {} - human-signals@8.0.0: {} - human-signals@8.0.1: {} iconv-lite@0.4.24: @@ -18163,8 +18082,8 @@ snapshots: import-in-the-middle@1.11.2: dependencies: - acorn: 8.14.1 - acorn-import-attributes: 1.9.5(acorn@8.14.1) + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) cjs-module-lexer: 1.2.2 module-details-from-path: 1.0.3 @@ -18181,6 +18100,8 @@ snapshots: indent-string@5.0.0: {} + index-to-position@1.1.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -18212,7 +18133,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -18422,7 +18343,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -18431,7 +18352,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -18467,7 +18388,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -18487,16 +18408,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.21): + jest-cli@29.7.0(@types/node@22.15.31): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.21) + create-jest: 29.7.0(@types/node@22.15.31) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@22.15.21) + jest-config: 29.7.0(@types/node@22.15.31) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -18506,37 +18427,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.21): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.15.21 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@22.15.28): + jest-config@29.7.0(@types/node@22.15.31): dependencies: '@babel/core': 7.24.7 '@jest/test-sequencer': 29.7.0 @@ -18561,7 +18452,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -18590,7 +18481,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -18607,7 +18498,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 22.15.28 + '@types/node': 22.15.31 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -18646,7 +18537,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 22.15.31 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -18681,7 +18572,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -18709,7 +18600,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -18755,7 +18646,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 chalk: 4.1.2 ci-info: 3.7.1 graceful-fs: 4.2.11 @@ -18774,7 +18665,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.28 + '@types/node': 22.15.31 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -18788,17 +18679,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.21): + jest@29.7.0(@types/node@22.15.31): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@22.15.21) + jest-cli: 29.7.0(@types/node@22.15.31) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -18822,10 +18713,14 @@ snapshots: glob: 8.1.0 nopt: 6.0.0 + js-levenshtein@1.1.6: {} + js-stringify@1.0.2: {} js-tokens@4.0.0: {} + js-tokens@9.0.1: {} + js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -18850,7 +18745,7 @@ snapshots: decimal.js: 10.5.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 + https-proxy-agent: 7.0.6(supports-color@10.0.0) is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.16 parse5: 7.3.0 @@ -19098,8 +18993,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 source-map-js: 1.2.1 mailcheck@1.1.1: {} @@ -19266,7 +19161,7 @@ snapshots: media-typer@0.3.0: {} - meilisearch@0.50.0: {} + meilisearch@0.51.0: {} memoizerific@1.11.3: dependencies: @@ -19301,7 +19196,7 @@ snapshots: dependencies: '@twemoji/parser': 15.0.0 - microformats-parser@2.0.2: + microformats-parser@2.0.3: dependencies: parse5: 7.3.0 @@ -19477,7 +19372,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -19647,18 +19542,18 @@ snapshots: optionalDependencies: msgpackr-extract: 3.0.2 - msw-storybook-addon@2.0.4(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3)): + msw-storybook-addon@2.0.5(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3)): dependencies: is-node-process: 1.2.0 - msw: 2.8.6(@types/node@22.15.28)(typescript@5.8.3) + msw: 2.10.2(@types/node@22.15.31)(typescript@5.8.3) - msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3): + msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.0.2(@types/node@22.15.28) - '@mswjs/interceptors': 0.38.7 + '@inquirer/confirm': 5.0.2(@types/node@22.15.31) + '@mswjs/interceptors': 0.39.2 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 @@ -19679,11 +19574,11 @@ snapshots: muggle-string@0.4.1: {} - multer@2.0.0: + multer@2.0.1: dependencies: append-field: 1.0.0 busboy: 1.6.0 - concat-stream: 1.6.2 + concat-stream: 2.0.0 mkdirp: 0.5.6 object-assign: 4.1.1 type-is: 1.6.18 @@ -19701,6 +19596,8 @@ snapshots: nan@2.22.2: {} + nanoid@3.3.11: {} + nanoid@3.3.8: {} nanoid@5.1.5: {} @@ -19941,8 +19838,6 @@ snapshots: oblivious-set@1.4.0: {} - obuf@1.1.2: {} - on-exit-leak-free@2.1.0: {} on-finished@2.4.1: @@ -19977,13 +19872,14 @@ snapshots: openapi-types@12.1.3: {} - openapi-typescript@6.7.6: + openapi-typescript@7.8.0(typescript@5.8.3): dependencies: + '@redocly/openapi-core': 1.34.3(supports-color@10.0.0) ansi-colors: 4.1.3 - fast-glob: 3.3.3 - js-yaml: 4.1.0 - supports-color: 9.4.0 - undici: 5.28.5 + change-case: 5.4.4 + parse-json: 8.3.0 + supports-color: 10.0.0 + typescript: 5.8.3 yargs-parser: 21.1.1 optionator@0.9.4: @@ -20057,6 +19953,12 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.27.1 + index-to-position: 1.1.0 + type-fest: 4.41.0 + parse-ms@4.0.0: {} parse-srcset@1.0.2: {} @@ -20137,8 +20039,6 @@ snapshots: pg-int8@1.0.1: {} - pg-numeric@1.0.2: {} - pg-pool@3.10.0(pg@8.16.0): dependencies: pg: 8.16.0 @@ -20153,16 +20053,6 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg-types@4.0.1: - dependencies: - pg-int8: 1.0.1 - pg-numeric: 1.0.2 - postgres-array: 3.0.2 - postgres-bytea: 3.0.0 - postgres-date: 2.0.1 - postgres-interval: 3.0.0 - postgres-range: 1.1.3 - pg@8.16.0: dependencies: pg-connection-string: 2.9.0 @@ -20232,9 +20122,11 @@ snapshots: dependencies: irregular-plurals: 3.5.0 + pluralize@8.0.0: {} + pngjs@5.0.0: {} - pnpm@10.11.0: {} + pnpm@10.12.1: {} polished@4.2.2: dependencies: @@ -20242,142 +20134,142 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-calc@10.1.1(postcss@8.5.3): + postcss-calc@10.1.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.3(postcss@8.5.3): + postcss-colormin@7.0.3(postcss@8.5.4): dependencies: browserslist: 4.24.5 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.5(postcss@8.5.3): + postcss-convert-values@7.0.5(postcss@8.5.4): dependencies: browserslist: 4.24.5 - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.4(postcss@8.5.3): + postcss-discard-comments@7.0.4(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-selector-parser: 7.1.0 - postcss-discard-duplicates@7.0.2(postcss@8.5.3): + postcss-discard-duplicates@7.0.2(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 - postcss-discard-empty@7.0.1(postcss@8.5.3): + postcss-discard-empty@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 - postcss-discard-overridden@7.0.1(postcss@8.5.3): + postcss-discard-overridden@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 - postcss-merge-longhand@7.0.5(postcss@8.5.3): + postcss-merge-longhand@7.0.5(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - stylehacks: 7.0.5(postcss@8.5.3) + stylehacks: 7.0.5(postcss@8.5.4) - postcss-merge-rules@7.0.5(postcss@8.5.3): + postcss-merge-rules@7.0.5(postcss@8.5.4): dependencies: browserslist: 4.24.5 caniuse-api: 3.0.0 - cssnano-utils: 5.0.1(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 5.0.1(postcss@8.5.4) + postcss: 8.5.4 postcss-selector-parser: 7.1.0 - postcss-minify-font-values@7.0.1(postcss@8.5.3): + postcss-minify-font-values@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.1(postcss@8.5.3): + postcss-minify-gradients@7.0.1(postcss@8.5.4): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.1(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 5.0.1(postcss@8.5.4) + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.3(postcss@8.5.3): + postcss-minify-params@7.0.3(postcss@8.5.4): dependencies: browserslist: 4.24.5 - cssnano-utils: 5.0.1(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 5.0.1(postcss@8.5.4) + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.5(postcss@8.5.3): + postcss-minify-selectors@7.0.5(postcss@8.5.4): dependencies: cssesc: 3.0.0 - postcss: 8.5.3 + postcss: 8.5.4 postcss-selector-parser: 7.1.0 - postcss-normalize-charset@7.0.1(postcss@8.5.3): + postcss-normalize-charset@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 - postcss-normalize-display-values@7.0.1(postcss@8.5.3): + postcss-normalize-display-values@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.1(postcss@8.5.3): + postcss-normalize-positions@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.1(postcss@8.5.3): + postcss-normalize-repeat-style@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.1(postcss@8.5.3): + postcss-normalize-string@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.1(postcss@8.5.3): + postcss-normalize-timing-functions@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.3(postcss@8.5.3): + postcss-normalize-unicode@7.0.3(postcss@8.5.4): dependencies: browserslist: 4.24.5 - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.1(postcss@8.5.3): + postcss-normalize-url@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.1(postcss@8.5.3): + postcss-normalize-whitespace@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.2(postcss@8.5.3): + postcss-ordered-values@7.0.2(postcss@8.5.4): dependencies: - cssnano-utils: 5.0.1(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 5.0.1(postcss@8.5.4) + postcss: 8.5.4 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.3(postcss@8.5.3): + postcss-reduce-initial@7.0.3(postcss@8.5.4): dependencies: browserslist: 4.24.5 caniuse-api: 3.0.0 - postcss: 8.5.3 + postcss: 8.5.4 - postcss-reduce-transforms@7.0.1(postcss@8.5.3): + postcss-reduce-transforms@7.0.1(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 postcss-selector-parser@6.1.2: @@ -20390,15 +20282,15 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.2(postcss@8.5.3): + postcss-svgo@7.0.2(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.4(postcss@8.5.3): + postcss-unique-selectors@7.0.4(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-selector-parser: 7.1.0 postcss-value-parser@4.2.0: {} @@ -20409,28 +20301,22 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postgres-array@2.0.0: {} + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 - postgres-array@3.0.2: {} + postgres-array@2.0.0: {} postgres-bytea@1.0.0: {} - postgres-bytea@3.0.0: - dependencies: - obuf: 1.1.2 - postgres-date@1.0.7: {} - postgres-date@2.0.1: {} - postgres-interval@1.2.0: dependencies: xtend: 4.0.2 - postgres-interval@3.0.0: {} - - postgres-range@1.1.3: {} - prebuild-install@7.1.3: dependencies: detect-libc: 2.0.4 @@ -20866,7 +20752,7 @@ snapshots: require-in-the-middle@7.3.0: dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) module-details-from-path: 1.0.3 resolve: 1.22.8 transitivePeerDependencies: @@ -20927,30 +20813,30 @@ snapshots: dependencies: glob: 10.4.5 - rollup@4.41.1: + rollup@4.42.0: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.41.1 - '@rollup/rollup-android-arm64': 4.41.1 - '@rollup/rollup-darwin-arm64': 4.41.1 - '@rollup/rollup-darwin-x64': 4.41.1 - '@rollup/rollup-freebsd-arm64': 4.41.1 - '@rollup/rollup-freebsd-x64': 4.41.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 - '@rollup/rollup-linux-arm-musleabihf': 4.41.1 - '@rollup/rollup-linux-arm64-gnu': 4.41.1 - '@rollup/rollup-linux-arm64-musl': 4.41.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 - '@rollup/rollup-linux-riscv64-gnu': 4.41.1 - '@rollup/rollup-linux-riscv64-musl': 4.41.1 - '@rollup/rollup-linux-s390x-gnu': 4.41.1 - '@rollup/rollup-linux-x64-gnu': 4.41.1 - '@rollup/rollup-linux-x64-musl': 4.41.1 - '@rollup/rollup-win32-arm64-msvc': 4.41.1 - '@rollup/rollup-win32-ia32-msvc': 4.41.1 - '@rollup/rollup-win32-x64-msvc': 4.41.1 + '@rollup/rollup-android-arm-eabi': 4.42.0 + '@rollup/rollup-android-arm64': 4.42.0 + '@rollup/rollup-darwin-arm64': 4.42.0 + '@rollup/rollup-darwin-x64': 4.42.0 + '@rollup/rollup-freebsd-arm64': 4.42.0 + '@rollup/rollup-freebsd-x64': 4.42.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.42.0 + '@rollup/rollup-linux-arm-musleabihf': 4.42.0 + '@rollup/rollup-linux-arm64-gnu': 4.42.0 + '@rollup/rollup-linux-arm64-musl': 4.42.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.42.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.42.0 + '@rollup/rollup-linux-riscv64-gnu': 4.42.0 + '@rollup/rollup-linux-riscv64-musl': 4.42.0 + '@rollup/rollup-linux-s390x-gnu': 4.42.0 + '@rollup/rollup-linux-x64-gnu': 4.42.0 + '@rollup/rollup-linux-x64-musl': 4.42.0 + '@rollup/rollup-win32-arm64-msvc': 4.42.0 + '@rollup/rollup-win32-ia32-msvc': 4.42.0 + '@rollup/rollup-win32-x64-msvc': 4.42.0 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -21002,7 +20888,7 @@ snapshots: parse-srcset: 1.0.2 postcss: 8.5.3 - sass@1.89.0: + sass@1.89.2: dependencies: chokidar: 4.0.3 immutable: 5.0.3 @@ -21162,14 +21048,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@3.4.2: + shiki@3.6.0: dependencies: - '@shikijs/core': 3.4.2 - '@shikijs/engine-javascript': 3.4.2 - '@shikijs/engine-oniguruma': 3.4.2 - '@shikijs/langs': 3.4.2 - '@shikijs/themes': 3.4.2 - '@shikijs/types': 3.4.2 + '@shikijs/core': 3.6.0 + '@shikijs/engine-javascript': 3.6.0 + '@shikijs/engine-oniguruma': 3.6.0 + '@shikijs/langs': 3.6.0 + '@shikijs/themes': 3.6.0 + '@shikijs/types': 3.6.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -21223,7 +21109,7 @@ snapshots: dependencies: '@hapi/hoek': 11.0.4 '@hapi/wreck': 18.0.1 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) joi: 17.13.3 transitivePeerDependencies: - supports-color @@ -21323,7 +21209,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.3 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) socks: 2.8.4 transitivePeerDependencies: - supports-color @@ -21420,7 +21306,7 @@ snapshots: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 @@ -21576,6 +21462,10 @@ snapshots: strip-json-comments@3.1.1: {} + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + strnum@1.0.5: {} strtok3@10.2.2: @@ -21588,19 +21478,19 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 5.3.1 - stylehacks@7.0.5(postcss@8.5.3): + stylehacks@7.0.5(postcss@8.5.4): dependencies: browserslist: 4.24.5 - postcss: 8.5.3 + postcss: 8.5.4 postcss-selector-parser: 7.1.0 superagent@10.2.1: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) fast-safe-stringify: 2.1.1 - form-data: 4.0.2 + form-data: 4.0.3 formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 @@ -21615,6 +21505,8 @@ snapshots: transitivePeerDependencies: - supports-color + supports-color@10.0.0: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -21627,8 +21519,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@9.4.0: {} - supports-hyperlinks@2.3.0: dependencies: has-flag: 4.0.0 @@ -21696,10 +21586,10 @@ snapshots: dependencies: execa: 6.1.0 - terser@5.39.2: + terser@5.42.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -21755,7 +21645,12 @@ snapshots: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 - tinypool@1.0.2: {} + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tinypool@1.1.0: {} tinyrainbow@1.2.0: {} @@ -21763,6 +21658,8 @@ snapshots: tinyspy@3.0.2: {} + tinyspy@4.0.3: {} + tldts-core@6.1.61: {} tldts@6.1.61: @@ -21868,7 +21765,7 @@ snapshots: tsx@4.19.4: dependencies: - esbuild: 0.25.4 + esbuild: 0.25.5 get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 @@ -21897,6 +21794,8 @@ snapshots: type-fest@4.26.1: {} + type-fest@4.41.0: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -21943,7 +21842,7 @@ snapshots: app-root-path: 3.1.0 buffer: 6.0.3 dayjs: 1.11.13 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) dedent: 1.6.0 dotenv: 16.4.7 glob: 10.4.5 @@ -22051,7 +21950,7 @@ snapshots: unplugin@1.4.0: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 chokidar: 4.0.3 webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 @@ -22064,6 +21963,8 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + uri-js-replace@1.0.1: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -22136,13 +22037,13 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@3.1.4(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4): + vite-node@3.2.3(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4): dependencies: cac: 6.7.14 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) transitivePeerDependencies: - '@types/node' - jiti @@ -22159,52 +22060,54 @@ snapshots: vite-plugin-turbosnap@1.0.3: {} - vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4): + vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.3 - rollup: 4.41.1 + rollup: 4.42.0 tinyglobby: 0.2.13 optionalDependencies: - '@types/node': 22.15.28 + '@types/node': 22.15.31 fsevents: 2.3.3 - sass: 1.89.0 - terser: 5.39.2 + sass: 1.89.2 + terser: 5.42.0 tsx: 4.19.4 - vitest-fetch-mock@0.4.5(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)): + vitest-fetch-mock@0.4.5(vitest@3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)): dependencies: - vitest: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vitest: 3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) - vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.28)(happy-dom@17.5.6)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4): + vitest@3.2.3(@types/debug@4.1.12)(@types/node@22.15.31)(happy-dom@17.6.3)(jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5))(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4): dependencies: - '@vitest/expect': 3.1.4 - '@vitest/mocker': 3.1.4(msw@2.8.6(@types/node@22.15.28)(typescript@5.8.3))(vite@6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4)) - '@vitest/pretty-format': 3.1.4 - '@vitest/runner': 3.1.4 - '@vitest/snapshot': 3.1.4 - '@vitest/spy': 3.1.4 - '@vitest/utils': 3.1.4 + '@types/chai': 5.2.2 + '@vitest/expect': 3.2.3 + '@vitest/mocker': 3.2.3(msw@2.10.2(@types/node@22.15.31)(typescript@5.8.3))(vite@6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4)) + '@vitest/pretty-format': 3.2.3 + '@vitest/runner': 3.2.3 + '@vitest/snapshot': 3.2.3 + '@vitest/spy': 3.2.3 + '@vitest/utils': 3.2.3 chai: 5.2.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@10.0.0) expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 + picomatch: 4.0.2 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.13 - tinypool: 1.0.2 + tinyglobby: 0.2.14 + tinypool: 1.1.0 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) - vite-node: 3.1.4(@types/node@22.15.28)(sass@1.89.0)(terser@5.39.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) + vite-node: 3.2.3(@types/node@22.15.31)(sass@1.89.2)(terser@5.42.0)(tsx@4.19.4) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.15.28 - happy-dom: 17.5.6 + '@types/node': 22.15.31 + happy-dom: 17.6.3 jsdom: 26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti @@ -22260,7 +22163,7 @@ snapshots: vue-docgen-api@4.75.1(vue@3.5.16(typescript@5.8.3)): dependencies: - '@babel/parser': 7.27.2 + '@babel/parser': 7.25.6 '@babel/types': 7.25.6 '@vue/compiler-dom': 3.5.13 '@vue/compiler-sfc': 3.5.16 @@ -22273,10 +22176,10 @@ snapshots: vue: 3.5.16(typescript@5.8.3) vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.16(typescript@5.8.3)) - vue-eslint-parser@10.1.3(eslint@9.27.0): + vue-eslint-parser@10.1.3(eslint@9.28.0): dependencies: - debug: 4.4.1(supports-color@5.5.0) - eslint: 9.27.0 + debug: 4.4.1(supports-color@10.0.0) + eslint: 9.28.0 eslint-scope: 8.3.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -22344,7 +22247,7 @@ snapshots: dependencies: asn1.js: 5.4.1 http_ece: 1.2.0 - https-proxy-agent: 7.0.6 + https-proxy-agent: 7.0.6(supports-color@10.0.0) jws: 4.0.0 minimist: 1.2.8 transitivePeerDependencies: @@ -22438,7 +22341,7 @@ snapshots: with@7.0.2: dependencies: - '@babel/parser': 7.27.2 + '@babel/parser': 7.25.6 '@babel/types': 7.25.6 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 @@ -22506,6 +22409,8 @@ snapshots: yallist@5.0.0: {} + yaml-ast-parser@0.0.43: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 diff --git a/renovate.json5 b/renovate.json5 index a57df8befb..ded6b987c5 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -40,6 +40,7 @@ 'packages/misskey-bubble-game/**/package.json', 'packages/misskey-reversi/**/package.json', 'packages/sw/**/package.json', + 'packages/icons-subsetter/**/package.json', ], // prevent wastage of Chromatic snapshots rebaseWhen: 'never', @@ -63,12 +64,6 @@ ], }, { - groupName: '[icons-subsetter] Update dependencies', - matchFileNames: [ - 'packages/icons-subsetter/**/package.json', - ], - }, - { groupName: '[GitHub Actions] Update dependencies', matchFileNames: [ '.github/workflows/**/*.yml', diff --git a/scripts/changelog-checker/package-lock.json b/scripts/changelog-checker/package-lock.json index e9059b4718..4ed26757a6 100644 --- a/scripts/changelog-checker/package-lock.json +++ b/scripts/changelog-checker/package-lock.json @@ -9,16 +9,16 @@ "version": "1.0.0", "devDependencies": { "@types/mdast": "4.0.4", - "@types/node": "22.15.21", - "@vitest/coverage-v8": "3.1.4", + "@types/node": "22.15.31", + "@vitest/coverage-v8": "3.2.3", "mdast-util-to-string": "4.0.0", "remark": "15.0.1", "remark-parse": "11.0.0", "typescript": "5.8.3", "unified": "11.0.5", "vite": "6.3.5", - "vite-node": "3.1.4", - "vitest": "3.1.4" + "vite-node": "3.2.3", + "vitest": "3.2.3" } }, "node_modules/@ampproject/remapping": { @@ -890,6 +890,16 @@ "win32" ] }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -899,6 +909,13 @@ "@types/ms": "*" } }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", @@ -923,9 +940,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.15.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz", - "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==", + "version": "22.15.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", + "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", "dev": true, "license": "MIT", "dependencies": { @@ -939,15 +956,16 @@ "dev": true }, "node_modules/@vitest/coverage-v8": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.4.tgz", - "integrity": "sha512-G4p6OtioySL+hPV7Y6JHlhpsODbJzt1ndwHAFkyk6vVjpK03PFsKnauZIzcd0PrK4zAbc5lc+jeZ+eNGiMA+iw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.3.tgz", + "integrity": "sha512-D1QKzngg8PcDoCE8FHSZhREDuEy+zcKmMiMafYse41RZpBE5EDJyKOTdqK3RQfsV2S2nyKor5KCs8PyPRFqKPg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", - "debug": "^4.4.0", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", @@ -962,8 +980,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.1.4", - "vitest": "3.1.4" + "@vitest/browser": "3.2.3", + "vitest": "3.2.3" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -972,14 +990,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.4.tgz", - "integrity": "sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.3.tgz", + "integrity": "sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.1.4", - "@vitest/utils": "3.1.4", + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.3", + "@vitest/utils": "3.2.3", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -988,13 +1007,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.4.tgz", - "integrity": "sha512-8IJ3CvwtSw/EFXqWFL8aCMu+YyYXG2WUSrQbViOZkWTKTVicVwZ/YiEZDSqD00kX+v/+W+OnxhNWoeVKorHygA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.3.tgz", + "integrity": "sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.1.4", + "@vitest/spy": "3.2.3", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1003,7 +1022,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -1015,9 +1034,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.4.tgz", - "integrity": "sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.3.tgz", + "integrity": "sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==", "dev": true, "license": "MIT", "dependencies": { @@ -1028,27 +1047,28 @@ } }, "node_modules/@vitest/runner": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.4.tgz", - "integrity": "sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.3.tgz", + "integrity": "sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.1.4", - "pathe": "^2.0.3" + "@vitest/utils": "3.2.3", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.4.tgz", - "integrity": "sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.3.tgz", + "integrity": "sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.1.4", + "@vitest/pretty-format": "3.2.3", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1057,26 +1077,26 @@ } }, "node_modules/@vitest/spy": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.4.tgz", - "integrity": "sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.3.tgz", + "integrity": "sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==", "dev": true, "license": "MIT", "dependencies": { - "tinyspy": "^3.0.2" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.4.tgz", - "integrity": "sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.3.tgz", + "integrity": "sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.1.4", + "@vitest/pretty-format": "3.2.3", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -1120,6 +1140,18 @@ "node": ">=12" } }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", + "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -1228,9 +1260,9 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1557,6 +1589,13 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -2561,6 +2600,19 @@ "node": ">=8" } }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2603,9 +2655,9 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2620,9 +2672,9 @@ } }, "node_modules/tinypool": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", - "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.0.tgz", + "integrity": "sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==", "dev": true, "license": "MIT", "engines": { @@ -2640,9 +2692,9 @@ } }, "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", "dev": true, "license": "MIT", "engines": { @@ -2860,17 +2912,17 @@ } }, "node_modules/vite-node": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.4.tgz", - "integrity": "sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.3.tgz", + "integrity": "sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.4.0", + "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -2883,32 +2935,34 @@ } }, "node_modules/vitest": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.4.tgz", - "integrity": "sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.3.tgz", + "integrity": "sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.1.4", - "@vitest/mocker": "3.1.4", - "@vitest/pretty-format": "^3.1.4", - "@vitest/runner": "3.1.4", - "@vitest/snapshot": "3.1.4", - "@vitest/spy": "3.1.4", - "@vitest/utils": "3.1.4", + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.3", + "@vitest/mocker": "3.2.3", + "@vitest/pretty-format": "^3.2.3", + "@vitest/runner": "3.2.3", + "@vitest/snapshot": "3.2.3", + "@vitest/spy": "3.2.3", + "@vitest/utils": "3.2.3", "chai": "^5.2.0", - "debug": "^4.4.0", + "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", + "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.13", - "tinypool": "^1.0.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.0", "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.1.4", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.3", "why-is-node-running": "^2.3.0" }, "bin": { @@ -2924,8 +2978,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.1.4", - "@vitest/ui": "3.1.4", + "@vitest/browser": "3.2.3", + "@vitest/ui": "3.2.3", "happy-dom": "*", "jsdom": "*" }, diff --git a/scripts/changelog-checker/package.json b/scripts/changelog-checker/package.json index b0f61bb4aa..fa6cf09ea1 100644 --- a/scripts/changelog-checker/package.json +++ b/scripts/changelog-checker/package.json @@ -10,15 +10,15 @@ }, "devDependencies": { "@types/mdast": "4.0.4", - "@types/node": "22.15.21", - "@vitest/coverage-v8": "3.1.4", + "@types/node": "22.15.31", + "@vitest/coverage-v8": "3.2.3", "mdast-util-to-string": "4.0.0", "remark": "15.0.1", "remark-parse": "11.0.0", "typescript": "5.8.3", "unified": "11.0.5", "vite": "6.3.5", - "vite-node": "3.1.4", - "vitest": "3.1.4" + "vite-node": "3.2.3", + "vitest": "3.2.3" } } |