<?php
/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Friendica\Module;
$profileRoutes = [
- '' => [Module\Profile\Index::class, [R::GET]],
- '/contacts/common' => [Module\Profile\Common::class, [R::GET]],
- '/contacts[/{type}]' => [Module\Profile\Contacts::class, [R::GET]],
- '/media' => [Module\Profile\Media::class, [R::GET]],
- '/photos' => [Module\Profile\Photos::class, [R::GET, R::POST]],
- '/profile' => [Module\Profile\Profile::class, [R::GET]],
- '/remote_follow' => [Module\Profile\RemoteFollow::class, [R::GET, R::POST]],
- '/restricted' => [Module\Profile\Restricted::class, [R::GET ]],
- '/schedule' => [Module\Profile\Schedule::class, [R::GET, R::POST]],
- '/status[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Status::class, [R::GET]],
- '/unkmail' => [Module\Profile\UnkMail::class, [R::GET, R::POST]],
+ '' => [Module\Profile\Index::class, [R::GET]],
+ '/contacts/common' => [Module\Profile\Common::class, [R::GET]],
+ '/contacts[/{type}]' => [Module\Profile\Contacts::class, [R::GET]],
+ '/media' => [Module\Profile\Media::class, [R::GET]],
+ '/photos' => [Module\Profile\Photos::class, [R::GET, R::POST]],
+ '/profile' => [Module\Profile\Profile::class, [R::GET]],
+ '/remote_follow' => [Module\Profile\RemoteFollow::class, [R::GET, R::POST]],
+ '/restricted' => [Module\Profile\Restricted::class, [R::GET ]],
+ '/schedule' => [Module\Profile\Schedule::class, [R::GET, R::POST]],
+ '/conversations[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Conversations::class, [R::GET]],
+ '/unkmail' => [Module\Profile\UnkMail::class, [R::GET, R::POST]],
];
$apiRoutes = [
'/friendica' => [
'/activity/{verb:attendmaybe|attendno|attendyes|dislike|like|unattendmaybe|unattendno|unattendyes|undislike|unlike}[.{extension:json|xml|rss|atom}]'
=> [Module\Api\Friendica\Activity::class, [ R::POST]],
+ '/statuses/{id:\d+}/dislike' => [Module\Api\Friendica\Statuses\Dislike::class, [ R::POST]],
+ '/statuses/{id:\d+}/disliked_by' => [Module\Api\Friendica\Statuses\DislikedBy::class, [R::GET ]],
+ '/statuses/{id:\d+}/undislike' => [Module\Api\Friendica\Statuses\Undislike::class, [ R::POST]],
'/notification/seen[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Notification\Seen::class, [ R::POST]],
'/notification[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Notification::class, [R::GET ]],
'/notifications[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Notification::class, [R::GET ]],
'/direct_messages_setseen[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\DirectMessages\Setseen::class, [ R::POST]],
'/direct_messages_search[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\DirectMessages\Search ::class, [R::GET ]],
'/events[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Events\Index::class, [R::GET ]],
- '/event_create[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Events\Create::class, [ R::POST]],
- '/event_delete[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Events\Delete::class, [ R::POST]],
- '/group_show[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Group\Show::class, [R::GET ]],
- '/group_create[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Group\Create::class, [ R::POST]],
- '/group_delete[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Group\Delete::class, [ R::POST]],
- '/group_update[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Group\Update::class, [ R::POST]],
+ '/event_create[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Events\Create::class, [ R::POST]],
+ '/event_delete[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Events\Delete::class, [ R::POST]],
+ '/circle_show[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Circle\Show::class, [R::GET ]],
+ '/circle_create[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Circle\Create::class, [ R::POST]],
+ '/circle_delete[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Circle\Delete::class, [ R::POST]],
+ '/circle_update[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Circle\Update::class, [ R::POST]],
+
+ // Backward compatibility
+ // @deprecated
+ '/group_show[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Circle\Show::class, [R::GET ]],
+ '/group_create[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Circle\Create::class, [ R::POST]],
+ '/group_delete[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Circle\Delete::class, [ R::POST]],
+ '/group_update[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Circle\Update::class, [ R::POST]],
+
'/profile/show[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Profile\Show::class, [R::GET ]],
+ '/photoalbums[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Photoalbum\Index::class, [R::GET ]],
+ '/photoalbum[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Photoalbum\Show::class, [R::GET ]],
'/photoalbum/delete[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Photoalbum\Delete::class, [ R::POST]],
'/photoalbum/update[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Photoalbum\Update::class, [ R::POST]],
'/photos/list[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Photo\Lists::class, [R::GET ]],
'/show[.{extension:json|xml|rss|atom}]' => [Module\Api\Twitter\Users\Show::class, [R::GET ]],
'/show/{id:\d+}[.{extension:json|xml|rss|atom}]' => [Module\Api\Twitter\Users\Show::class, [R::GET ]],
],
+ '/whoami' => [Module\ActivityPub\Whoami::class, [R::GET ]],
];
return [
'/trends/tags' => [Module\Api\Mastodon\Trends\Tags::class, [R::GET ]],
],
'/v2' => [
- '/instance' => [Module\Api\Mastodon\Unimplemented::class, [R::GET ]], // not supported
+ '/instance' => [Module\Api\Mastodon\InstanceV2::class, [R::GET ]], // not supported
],
'/v{version:\d+}' => [
'/admin/accounts' => [Module\Api\Mastodon\Unimplemented::class, [R::GET ]], // not supported
'/contact' => [
'[/]' => [Module\Contact::class, [R::GET]],
'/{id:\d+}[/]' => [Module\Contact\Profile::class, [R::GET, R::POST]],
- '/{id:\d+}/{action:block|ignore|update|updateprofile}'
+ '/{id:\d+}/{action:block|ignore|collapse|update|updateprofile}'
=> [Module\Contact\Profile::class, [R::GET]],
'/{id:\d+}/advanced' => [Module\Contact\Advanced::class, [R::GET, R::POST]],
'/{id:\d+}/conversations' => [Module\Contact\Conversations::class, [R::GET]],
'/hidden' => [Module\Contact::class, [R::GET]],
'/hovercard' => [Module\Contact\Hovercard::class, [R::GET]],
'/ignored' => [Module\Contact::class, [R::GET]],
+ '/collapsed' => [Module\Contact::class, [R::GET]],
'/match' => [Module\Contact\MatchInterests::class, [R::GET]],
'/pending' => [Module\Contact::class, [R::GET]],
'/redir/{id:\d+}' => [Module\Contact\Redir::class, [R::GET]],
'/follow_confirm' => [Module\FollowConfirm::class, [R::GET, R::POST]],
'/followers/{nickname}' => [Module\ActivityPub\Followers::class, [R::GET]],
'/following/{nickname}' => [Module\ActivityPub\Following::class, [R::GET]],
- '/friendica[/json]' => [Module\Friendica::class, [R::GET]],
+ '/friendica[/{format:json}]' => [Module\Friendica::class, [R::GET]],
'/friendica/inbox' => [Module\ActivityPub\Inbox::class, [R::GET, R::POST]],
'/fsuggest/{contact:\d+}' => [Module\FriendSuggest::class, [R::GET, R::POST]],
- '/group' => [
- '[/]' => [Module\Group::class, [R::GET, R::POST]],
- '/{group:\d+}' => [Module\Group::class, [R::GET, R::POST]],
- '/none' => [Module\Group::class, [R::GET, R::POST]],
- '/new' => [Module\Group::class, [R::GET, R::POST]],
- '/drop/{group:\d+}' => [Module\Group::class, [R::GET, R::POST]],
- '/{group:\d+}/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]],
- '/{group:\d+}/{command:add|remove}/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]],
+ '/circle' => [
+ '[/]' => [Module\Circle::class, [R::GET, R::POST]],
+ '/{circle:\d+}' => [Module\Circle::class, [R::GET, R::POST]],
+ '/none' => [Module\Circle::class, [R::GET, R::POST]],
+ '/new' => [Module\Circle::class, [R::GET, R::POST]],
+ '/drop/{circle:\d+}' => [Module\Circle::class, [R::GET, R::POST]],
+ '/{circle:\d+}/{contact:\d+}' => [Module\Circle::class, [R::GET, R::POST]],
+ '/{circle:\d+}/{command:add|remove}/{contact:\d+}' => [Module\Circle::class, [R::GET, R::POST]],
],
'/hashtag' => [Module\Hashtag::class, [R::GET]],
'/help[/{doc:.+}]' => [Module\Help::class, [R::GET]],
'/item/delete' => [Module\Moderation\Item\Delete::class, [R::GET, R::POST]],
'/item/source[/{guid}]' => [Module\Moderation\Item\Source::class, [R::GET, R::POST]],
+ '/report/create' => [Module\Moderation\Report\Create::class, [R::GET, R::POST]],
+
'/users[/{action}/{uid}]' => [Module\Moderation\Users\Index::class, [R::GET, R::POST]],
'/users/active[/{action}/{uid}]' => [Module\Moderation\Users\Active::class, [R::GET, R::POST]],
'/users/pending[/{action}/{uid}]' => [Module\Moderation\Users\Pending::class, [R::GET, R::POST]],
'/newmember' => [Module\Welcome::class, [R::GET]],
'/nodeinfo/1.0' => [Module\NodeInfo110::class, [R::GET]],
'/nodeinfo/2.0' => [Module\NodeInfo120::class, [R::GET]],
- '/nogroup' => [Module\Group::class, [R::GET]],
+ '/nocircle' => [Module\Circle::class, [R::GET]],
'/noscrape' => [
'/{nick}' => [Module\NoScrape::class, [R::GET]],
'/h2b' => [Module\Oembed::class, [R::GET]],
'/{hash}' => [Module\Oembed::class, [R::GET]],
],
- '/outbox/{nickname}' => [Module\ActivityPub\Outbox::class, [R::GET]],
+ '/outbox/{nickname}' => [Module\ActivityPub\Outbox::class, [R::GET, R::POST]],
'/owa' => [Module\Owa::class, [R::GET]],
'/openid' => [Module\Security\OpenID::class, [R::GET]],
'/opensearch' => [Module\OpenSearch::class, [R::GET]],
'/permission/tooltip/{type}/{id:\d+}' => [Module\PermissionTooltip::class, [R::GET]],
'/photo' => [
+ '/{size:thumb_small|scaled_full}_{name}' => [Module\Photo::class, [R::GET]],
'/{name}' => [Module\Photo::class, [R::GET]],
'/{type}/{id:\d+}' => [Module\Photo::class, [R::GET]],
'/{type:contact|header}/{guid}' => [Module\Photo::class, [R::GET]],
],
// OStatus stack modules
- '/ostatus/repair' => [Module\OStatus\Repair::class, [R::GET ]],
- '/ostatus/subscribe' => [Module\OStatus\Subscribe::class, [R::GET ]],
- '/poco' => [Module\User\PortableContacts::class, [R::GET ]],
- '/pubsub/{nickname}/{cid:\d+}' => [Module\OStatus\PubSub::class, [R::GET, R::POST]],
- '/pubsubhubbub/{nickname}' => [Module\OStatus\PubSubHubBub::class, [ R::POST]],
- '/salmon/{nickname}' => [Module\OStatus\Salmon::class, [ R::POST]],
+ '/ostatus/repair' => [Module\OStatus\Repair::class, [R::GET ]],
+ '/ostatus/subscribe' => [Module\OStatus\Subscribe::class, [R::GET ]],
+ '/poco' => [Module\User\PortableContacts::class, [R::GET ]],
+ '/pubsub' => [Module\OStatus\PubSub::class, [R::GET, R::POST]],
+ '/pubsub/{nickname}[/{cid:\d+}]' => [Module\OStatus\PubSub::class, [R::GET, R::POST]],
+ '/pubsubhubbub[/{nickname}]' => [Module\OStatus\PubSubHubBub::class, [ R::POST]],
+ '/salmon[/{nickname}]' => [Module\OStatus\Salmon::class, [ R::POST]],
'/search' => [
'[/]' => [Module\Search\Index::class, [R::GET ]],
'/network' => [
'[/]' => [Module\Conversation\Network::class, [R::GET]],
'/archive/{from:\d\d\d\d-\d\d-\d\d}[/{to:\d\d\d\d-\d\d-\d\d}]' => [Module\Conversation\Network::class, [R::GET]],
- '/forum/{contact_id:\d+}' => [Module\Conversation\Network::class, [R::GET]],
- '/group/{group_id:\d+}' => [Module\Conversation\Network::class, [R::GET]],
+ '/group/{contact_id:\d+}' => [Module\Conversation\Network::class, [R::GET]],
+ '/circle/{circle_id:\d+}' => [Module\Conversation\Network::class, [R::GET]],
],
'/randprof' => [Module\RandomProfile::class, [R::GET]],
'/update_network' => [
'[/]' => [Module\Update\Network::class, [R::GET]],
'/archive/{from:\d\d\d\d-\d\d-\d\d}[/{to:\d\d\d\d-\d\d-\d\d}]' => [Module\Update\Network::class, [R::GET]],
- '/forum/{contact_id:\d+}' => [Module\Update\Network::class, [R::GET]],
- '/group/{group_id:\d+}' => [Module\Update\Network::class, [R::GET]],
+ '/group/{contact_id:\d+}' => [Module\Update\Network::class, [R::GET]],
+ '/circle/{circle_id:\d+}' => [Module\Update\Network::class, [R::GET]],
],
'/update_profile' => [Module\Update\Profile::class, [R::GET]],