summaryrefslogtreecommitdiffstats
path: root/api/views/instance.py
diff options
context:
space:
mode:
Diffstat (limited to 'api/views/instance.py')
-rw-r--r--api/views/instance.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/api/views/instance.py b/api/views/instance.py
new file mode 100644
index 0000000..5923d30
--- /dev/null
+++ b/api/views/instance.py
@@ -0,0 +1,56 @@
+from django.conf import settings
+
+from activities.models import Post
+from core.models import Config
+from takahe import __version__
+from users.models import Domain, Identity
+
+from .base import api
+
+
+@api.get("/v1/instance")
+@api.get("/v1/instance/")
+def instance_info(request):
+ return {
+ "uri": request.headers.get("host", settings.SETUP.MAIN_DOMAIN),
+ "title": Config.system.site_name,
+ "short_description": "",
+ "description": "",
+ "email": "",
+ "version": __version__,
+ "urls": {},
+ "stats": {
+ "user_count": Identity.objects.filter(local=True).count(),
+ "status_count": Post.objects.filter(local=True).count(),
+ "domain_count": Domain.objects.count(),
+ },
+ "thumbnail": Config.system.site_banner,
+ "languages": ["en"],
+ "registrations": (
+ Config.system.signup_allowed and not Config.system.signup_invite_only
+ ),
+ "approval_required": False,
+ "invites_enabled": False,
+ "configuration": {
+ "accounts": {},
+ "statuses": {
+ "max_characters": Config.system.post_length,
+ "max_media_attachments": 4,
+ "characters_reserved_per_url": 23,
+ },
+ "media_attachments": {
+ "supported_mime_types": [
+ "image/apng",
+ "image/avif",
+ "image/gif",
+ "image/jpeg",
+ "image/png",
+ "image/webp",
+ ],
+ "image_size_limit": (1024**2) * 10,
+ "image_matrix_limit": 2000 * 2000,
+ },
+ },
+ "contact_account": None,
+ "rules": [],
+ }