7 KiB
Table of Contents
Validation/Import of remote events
This document gives an overview how remote Event
objects are treated by common Fediverse applications.
Mastodon
Last updated: 2024-10-20
Mastodon does not have support or events, but an Event
object is in the list of converted object types.
It neglets all event related fields but title
, summary
and url
which it uses to create a Mastodon status (toot) representation of the event.
Mobilizon
Last uptaded: 2024-01-20
Information sources:
Required
attributedTo
oractor
: Mobilizon uses actor for the user profile and attributedTo for the group. But asactor
being part of an object is not part of the ActivityPub spec, solely usingattributedTo
might preferred if they are similar.id
: This is also used for theurl
.name
: The events title.
Optional
attachment
How they are usedanonymousparticipationenabled
category
: default list of categories can be found in the source code, but it can be extended via environment variables. Note that the source code shows them in lowercase, but they have to be passed as uppercase, e.g.MOVEMENTS_POLITICS
.commentsEnabled
contacts
: a list of contacts: each item might be just theid
/url
or anActor
object.content
:contentMap
is currently not supported by Mobilizon.endTime
externalParticipationUrl
: Only used ifjoinMode
is set toexternal
.is_online
: Boolean indicating whether the Event is online.joinMode
:[free, restricted, invite, external]
default isfree
.location
: The subkeyaddress
is accepted, both asPostalAddress
and pure text.maximumAttendeeCapacity
mentions
metadata
: This is a list that can contain items. TODO.participantCount
: Not parsed at the momentrepliesModerationOption
remainingAttendeeCapacity
: Not parsed at the momentstartTime
tag
timezone
url
: Documentation - Note:url
was added to the list as it was referenced in the text but not explicitly listed in the initial set.
Not used
url
: internally Mobilizon uses theid
as URL.
To Test:
Handling of visibility, comments and discoverability
- If
https://www.w3.org/ns/activitystreams#Public
is not into
it will be treated asunlisted
, else aspublic
. This are the only options for remote events, even though internally Mobilizon supports[public, unlisted, restricted, private]
. - For comments to be enabled within Mobilizon either
commentsEnabled
must betrue
orrepliesModerationOption
must be set toallow_all
.repliesModerationOption
is more important. If none is of both is passed replies will be disabled. - When the
attributedTo
(or ifattributedTo
is not set, butactor
is set) contains anActor
of typePerson
the remoteEvent
will not be listed and searchable. - If
timezone
is not defined Mobilizon might calculate the timezone via thelocation
.
Attachment/Banner-image handling
Mobilizon currently expects all images to by within attachment
and to be an Object
of type Document
. It first looks for an object where the name
is equal to Banner
. If that is not found it uses ´attachment[0]`.
Gancio
Last uptaded: 2024-01-20
Required
id
: even though Gancio currently does not list it as required in its source code, there will be an error without out it.name
: The events title.startTime
Optional
attachment
Only the first one is used as a banner image, all others are ignored, see below.content
contentMap
is currently not supported by Gancio.endTime
location
: The subkeyaddress
is accepted, both asPostalAddress
and pure text. ForPostalAddress
onlystreetAddress
,addressLocality
, andaddressCountry
are used.summary
The summary is only used when no content is supplied.
Not used
attributedTo
/actor
: Gancio does not support fetching event other than by receiving aCreate
orUpdate
activity (TODO: what aboutAnnounce
), the actor is always just fetched from the activity, not the object within.
Handling of visibility
Currently Gancio does not seem to handle any visibility or replies-policy options. It sets all remote events it received to the internal is_visible
to true
.
Banner image
Gancio takes the first attachment
of the Event
object as the banner image of the event. It optionally supports name
as the alternative text and focalPoint
.