summaryrefslogtreecommitdiff
path: root/internal/api
AgeCommit message (Collapse)AuthorFiles
2025-04-25[chore] Move deps to code.superseriousbusiness.org (#4054)Libravatar tobi7
2025-04-19[bugfix] Fix '+'-separated scopes not being recognized (#4028)Libravatar tobi4
* [bugfix] Fix '+'-separated scopes not being recognized * comment
2025-04-19[chore] Little settings panel report view tweak (#4025)v0.19.0-rc2Libravatar tobi1
2025-04-19[chore] Update robots.txt with latest ai bullshit (#4024)Libravatar tobi1
2025-04-18[bugfix] new token API issues (#4022)Libravatar kim2
* fix incorrect endpoint being registered for /token/{id} * update the maximum page value for tokens endpoint to 100 * update the available tokens page options * set a default limit of 25 to match the first available settings panel option * ensure OnInvalidateToken() hook is called during token delete
2025-04-18[feature/frontend] Hide "engagement" stats, edits, and other info under a ↵Libravatar tobi1
little drop down to unclutter status info bar (#4021) * dick about with stats a bit * more dicking abuot * lil tweaks * more about-dicking * weee * comments * fixie uppie
2025-04-14[bugfix] websocket header token not always returned (#4009)Libravatar kim1
* always include headerToken response if provided, because Chrome *sigh* * wording * Update internal/api/client/streaming/stream.go Co-authored-by: Ilia Pozdnyakov <iliazeus@proton.me> --------- Co-authored-by: Ilia Pozdnyakov <iliazeus@proton.me>
2025-04-14[bugfix] media v2 endpoint fix unset url (#4008)Libravatar kim2
* update semantics of when media URL is left unset * fix test
2025-04-10[feature] Implement /oauth/revoke for token revocation (#3983)Libravatar tobi4
2025-04-09[chore] add IPPrefixes type so we don't need separate rate limit parsed ↵Libravatar kim1
field (#3982) * add IPPrefixes type so we don't need separate rate limit parsed field * sshhhh please linter, mommy's working
2025-04-07[feature] add TOTP two-factor authentication (2FA) (#3960)Libravatar tobi14
* [feature] add TOTP two-factor authentication (2FA) * use byteutil.S2B to avoid allocations when comparing + generating password hashes * don't bother with string conversion for consts * use io.ReadFull * use MustGenerateSecret for backup codes * rename util functions
2025-04-06[chore] Migrate accounts to new table, relax uniqueness constraint of actor ↵Libravatar tobi5
`url` and collections (#3928) * [chore] Migrate accounts to new table, relax uniqueness constraint of actor url and collections * fiddle with it! (that's what she said) * remove unused cache fields * sillyness * fix tiny whoopsie
2025-04-04[feature] Allow editing domain blocks/allows, fix comment import (#3967)Libravatar tobi8
* start implementing editing of existing domain permissions * [feature] Allow editing domain blocks/allows, fix comment import * [bugfix] Use "comment" via /api/v1/instance * fix the stuff
2025-03-31[feature] Use blurhashes in frontend, tidy up gallery view a bit (#3948)Libravatar tobi1
* [feature] Use blurhashes in frontend, tidy up gallery view a bit * weeeeeeeeeeeeeeeee * beep boop
2025-03-30[docs] Fix Swagger URL for the "edit status" operation (#3932)Libravatar Leonid Shevtsov1
2025-03-26[feature] Allow user to choose "gallery" style layout for web view of ↵Libravatar tobi8
profile (#3917) * [feature] Allow user to choose "gallery" style web layout * find a bug and squish it up and all day long you'll have good luck * just a sec * [performance] reindex public timeline + tinker with query a bit * fiddling * should be good now * last bit of finagling, i'm done now i prommy * panic normally
2025-03-17[feature] Application creation + management via API + settings panel (#3906)Libravatar tobi8
* [feature] Application creation + management via API + settings panel * fix docs links * add errnorows test * use known application as shorter * add comment about side effects
2025-03-07[feature] Parse content warning to HTML, serialize via client API as ↵Libravatar tobi9
plaintext (#3876) * [feature] Parse content warning as HTML, serialize via API to plaintext * tidy up some cruft * whoops * oops * i'm da joker baybee * clemency muy lorde * rename some of the text functions for clarity * jiggle the opts * fiddle de deee * hopefully the last test fix i ever have to do in my beautiful life
2025-03-06[bugfix] Store and expose status content type (#3870)Libravatar ewwwin7
* Add ContentType to internal models * Add ContentType to API models StatusSource and StatusEdit * Add helpers to convert between API/internal StatusContentType * Write status content type on create/edit * Add migration * Update API docs go run github.com/go-swagger/go-swagger/cmd/swagger generate spec --scan-models --exclude-deps --output docs/api/swagger.yaml * ensure ContentType is updated anywhere Text is * Update docs, take care of TODOs * Set ContentType in more places where Text is set * We don't actually use ContentType on the API status model * Update StatusSource test * Remove unused helper function I copied * Revert change to StatusContentType swagger annotation I'm going to include this in a follow-on PR instead. * Add test for updating content type in edits * Return a value from processContentType instead of modifying the existing status Fixes an issue that was caught by the test I just added - the recorded edit would be marked with the *new* content type instead of the old one, which is obviously bad * Add test for handling of statuses with no stored content type * repurpose an existing test status instead of adding a new one to avoid breaking other tests * Add test to ensure newly created statuses always have content type saved * Do include content type on status API model actually This is mostly important when deleting and redrafting. The comment on `apimodel.Status.Text` implies that it's not sent except in response to status deletion, but actually this doesn't seem to be the case; it also appears to be present in responses to creations and normal fetches and stuff. So I'm treating `ContentType` the same here. * Update new tests to check content type on API statuses * Check content type of API statuses in all tests where text is checked * update other api tests with status content type field * Add test ensuring text and content type are returned when deleting a status * Convert processContentType to free function and remove unused parameter * check for the correct value in the deletion test * Be explicit about this test status having an empty content type * Use omitempty consistently on API models * clean up the final diff a bit * one more swagger regen for the road * Handle nil statuses in processContentType * Don't pass processContentType the entire edit form, it doesn't need it * Move processContentType to common.go and use for creation as well * Remove unused parameters to ContentTypeToAPIContentType
2025-03-05[bugfix] Return useful err on `server start` failure (#3879)Libravatar tobi1
* [bugfix] Return useful err on `server start` failure * remove scheduler started func * remove tryUntil
2025-03-04[feature] Add token review / delete to backend + settings panel (#3845)Libravatar tobi10
2025-03-03[feature] Refactor tokens, allow multiple app redirect_uris (#3849)Libravatar tobi33
* [feature] Refactor tokens, allow multiple app redirect_uris * move + tweak handlers a bit * return error for unset oauth2.ClientStore funcs * wrap UpdateToken with cache * panic handling * cheeky little time optimization * unlock on error
2025-03-02[chore] migrate oauth2 -> codeberg (#3857)Libravatar tobi1
2025-03-02[chore] github.com/superseriousbusiness/activity -> ↵Libravatar tobi5
codeberg.org/superseriousbusiness/activity (#3853)
2025-03-01[feature] Implement CSV import for mutes (#3696)Libravatar Xavier Vello2
* Implement CSV import for mutes * update swagger.yaml * update documentation * add ImportTestSuite.TestImportMutes * fix comment typo
2025-02-26[feature] Enforce OAuth token scopes (#3835)Libravatar tobi195
* move tokenauth to apiutil * enforce scopes * docs * update test models, remove deprecated "follow" * file header * tests * tweak scope matcher * simplify... * fix tests * log user out of settings panel in case of oauth error
2025-02-25[docs] Fix swagger operation descriptions (#3830)Libravatar mkljczk2
* Fix swagger operation descriptions Signed-off-by: mkljczk <git@mkljczk.pl> * generate a swagger file Signed-off-by: mkljczk <git@mkljczk.pl> --------- Signed-off-by: mkljczk <git@mkljczk.pl>
2025-02-24[feature] Use ETag for robots.txt to prevent mishaps (#3829)v0.18.1Libravatar tobi3
* [feature] Use ETag for robots.txt to prevent mishaps * check incoming if-none-match header
2025-02-20[feature] Add page-specific class per template (#3814)v0.18.0-rc3Libravatar tobi1
* [feature] Add page-specific class per template * cheeky bit cheaper
2025-02-12[feature] Implement backfilling statuses thru scheduled_at (#3685)Libravatar Vyr Cossont3
* Implement backfilling statuses thru scheduled_at * Forbid mentioning others in backfills * Update error messages & codes * Add new tests for backfilled statuses * Test that backfilling doesn't timeline or notify * Fix check for absence of notification * Test that backfills do not cause federation * Fix type of apimodel.StatusCreateRequest.ScheduledAt in tests * Add config file switch and min date check
2025-02-11[bug] respect `X-Robots-Tag` and `robots.txt` on api/v1/instance and ↵Libravatar alemi.dev1
nodeinfo (#3756) * feat: check X-Robots-Tag when accessing /api/v1/instance or /nodeinfo endpoints respect X-Robots-Tag * chore: go fmt ./... * Check robots.txt as well, add tests --------- Co-authored-by: tobi <tobi.smethurst@protonmail.com>
2025-02-11[bugfix] Suggest lowercase username when creating via OIDC (#3780)Libravatar tobi1
2025-02-08[bug] Add missing `group` property to the Account model (#3746)Libravatar pnwmatt10
* Stub out account's Group parameter * Fix typo in Contributing documentation * Update swagger and match style * Update the swagger command to mimic test/swagger.sh * Fix tests for new `group` param in Account model * More test changes for new `group` param in Account * Continuing test changes for `group` param stubbing * Another round of `group` stubbing for tests
2025-02-06[chore] update otel libraries (#3740)Libravatar Dominik Süß2
* chore: update otel dependencies * refactor: combine tracing & metrics in observability package * chore: update example tracing compose file
2025-02-05[feature] Use `X-Robots-Tag` headers to instruct scrapers/crawlers (#3737)Libravatar tobi8
* [feature] Use `X-Robots-Tag` headers to instruct scrapers/crawlers * use switch for RobotsHeaders
2025-02-04[feature] Change `instance-stats-randomize` to `instance-stats-mode` with ↵Libravatar tobi5
multiple options; implement nodeinfo 2.1 (#3734) * [feature] Change `instance-stats-randomize` to `instance-stats-mode` with multiple options; implement nodeinfo 2.1 * swaggalaggadingdong
2025-02-03[feature] Implement Web Push notification policy (#3721)Libravatar Vyr Cossont5
* Web Push: add policy column to subscriptions * Web Push: add policy to API * Web Push: test notification policy * go-fmt unrelated file (how did this get thru?)
2025-02-01[bugfix] Swagger: fix media_ids[] param for creating statuses (#3722)Libravatar Vyr Cossont1
2025-01-31[feature] Add `instance-stats-randomize` config option (#3718)Libravatar tobi4
* [feature] Add `instance-stats-randomize` config option * don't use cache (overkill)
2025-01-27[chore] skip `trusted-proxies` warning if ip excepted from rate limiting (#3699)Libravatar tobi1
* [chore] skip `trusted-proxies` warning if ip excepted from rate limiting * weep * typo * fix env parsing test
2025-01-26[chore] Allow suppressing trusted-proxies warning by disabling rate limiting ↵Libravatar tobi1
(#3686)
2025-01-26[docs] Swagger: fix filter context params by moving enum list from the list ↵Libravatar Vyr Cossont4
type to the item type (#3684) Reported by `@modulus:matrix.org`
2025-01-23[feature] Push notifications (#3587)Libravatar Vyr Cossont45
* Update push subscription API model to be Mastodon 4.0 compatible * Add webpush-go dependency # Conflicts: # go.sum * Single-row table for storing instance's VAPID key pair * Generate VAPID key pair during startup * Add VAPID public key to instance info API * Return VAPID public key when registering an app * Store Web Push subscriptions in DB * Add Web Push sender (similar to email sender) * Add no-op push senders to most processor tests * Test Web Push notifications from workers * Delete Web Push subscriptions when account is deleted * Implement push subscription API * Linter fixes * Update Swagger * Fix enum to int migration * Fix GetVAPIDKeyPair * Create web push subscriptions table with indexes * Log Web Push server error messages * Send instance URL as Web Push JWT subject * Accept any 2xx code as a success * Fix malformed VAPID sub claim * Use packed notification flags * Remove unused date columns * Add notification type for update notifications Not used yet * Make GetVAPIDKeyPair idempotent and remove PutVAPIDKeyPair * Post-rebase fixes * go mod tidy * Special-case 400 errors other than 408/429 Most client errors should remove the subscription. * Improve titles, trim body to reasonable length * Disallow cleartext HTTP for Web Push servers * Fix lint * Remove redundant index on unique column Also removes redundant unique and notnull tags on ID column since these are implied by pk * Make realsender.go more readable * Use Tobi's style for wrapping errors * Restore treating all 5xx codes as temporary problems * Always load target account settings * Stub `policy` and `standard` * webpush.Sender: take type converter as ctor param * Move webpush.MockSender and noopSender into testrig
2025-01-23[feature] Serve bot accounts over AP as Service instead of Person (#3672)Libravatar tobi1
* pepis * oopsie doopsie * bollocks
2025-01-23[feature] Add warning about `trusted-proxies` to make config easier (#3675)Libravatar tobi1
* [feature] Add warning about `trusted-proxies` to make config easier * thank you linter, hugs and kisses to you
2025-01-14[chore] better dns validation (#3644)Libravatar kim1
* add seperate PunifyValidate() function for properly validating domain names when converting to punycode * rename function, strip port from domain validation
2025-01-08[bugfix] More permissive CSV parsing for perm subs, text parse fix (#3638)Libravatar tobi1
* [bugfix] More permissive CSV parsing for perm subs, text parse fix * wee * change the way dry works, slightly * me oh my, i'm just a little guy * we're just normal men
2025-01-08[feature] Fetch + create domain permissions from subscriptions nightly (#3635)Libravatar tobi28
* peepeepoopoo * test domain perm subs * swagger * envparsing * dries your wets * start on docs * finish up docs * copy paste errors * rename actions package * rename force -> skipCache * move obfuscate parse nearer to where err is checked * make higherPrios a simple slice * don't use receiver for permsFrom funcs * add more context to error logs * defer finished log * use switch for permType instead of if/else * thanks linter, love you <3 * validate csv headers before full read * use bufio scanner
2025-01-05[feature] Create/update/remove domain permission subscriptions (#3623)Libravatar tobi11
* [feature] Create/update/remove domain permission subscriptions * lint * envparsing * remove errant fmt.Println * create drafts, subs, exclude, from snapshot models * name etag column correctly * remove count column * lint
2024-12-28[bugfix] Advertise audio/mpeg as supported (#3632)Libravatar Daenney1
This will be either an mp1, mp2 or mp3 file. In practice it'll probably be mp3, but this handles mp1 too for good measure. We don't advertise audio/mp1 as a supported media type since best I can tell that was never a MIME type that's been used. This also changes the returned MIME-type for mp2 and mp3 to audio/mpeg, to match what's expected and supported by most things nowadays. Fixes: #3531