@graffiti-garden/wrapper-synchronize
    Preparing search index...

    Interface GraffitiObjectBase

    Objects are the atomic unit in Graffiti that can represent both data (e.g. a social media post or profile) and activities (e.g. a like or follow).

    Each object embeds the actor that created it. Object content and metadata are static but an object may be deleted by its creating actor.

    An object's content is stored in its value property, which can be any JSON object. However, it is recommended to use properties from the Activity Vocabulary or properties that emerge in the Graffiti folksonomy to promote interoperability.

    Each object is globally addressable via its url.

    An object's channels and allowed properties are set by an objects creator to shape the visibility of and access to their object.

    interface GraffitiObjectBase {
        actor: string;
        allowed?: string[] | null;
        channels: string[];
        url: string;
        value: {};
    }
    Index

    Properties

    actor: string

    The URI of the actor that created the object. This actor has the unique permission to delete the object.

    We borrow the term actor from the ActivityPub because like in ActivityPub there is not necessarily a one-to-one mapping between actors and people/users. Multiple people can share the same actor or one person can have multiple actors. Actors can also be bots.

    In Graffiti, actors are always globally unique URIs which allows them to also function as channels.

    allowed?: string[] | null

    An optional array of actor URIs that the creator allows to access the object. If no allowed array is provided, the object can be accessed by anyone (so long as they also know the right channel to look in). An object can always be accessed by its creator, even if the allowed array is empty.

    The allowed array is not revealed to actors other than the creator, like a BCC email. An actor may choose to add a to property to the object's value to indicate other recipients, however this is not enforced by Graffiti and may not accurately reflect the actual allowed array.

    allowed can be combined with channels. For example, to send someone a direct message the sender should post their object to the channel of the recipient's actor URI to notify them of the message and also add the recipient's actor URI to the allowed array to prevent others from seeing the message.

    channels: string[]

    An array of URIs the creator associates with the object. Objects can only be found by querying one of the object's channels using the Graffiti.discover method. This allows creators to express the intended audience of their object which helps to prevent context collapse even in the highly interoperable ecosystem that Graffiti envisions. For example, channel URIs may be:

    • A actor's own actor URI. Posting an object to this channel is a way to broadcast the object to the actor's followers, like posting a tweet.
    • The URL of a Graffiti post. Posting an object to this channel is a way to broadcast to anyone viewing the post, like commenting on a tweet.
    • A URI representing a topic. Posting an object to this channel is a way to broadcast to anyone interested in that topic, like posting in a subreddit.
    url: string

    A globally unique identifier and locator for the object. It can be used to point to an object or to retrieve the object directly with Graffiti.get.

    An object's URL is generated when the object is first created and should include sufficient randomness to prevent collisions and guessing. The URL starts with a "scheme," just like web URLs start with http or https, to indicate to indicate the particular Graffiti implementation. This allows for applications to pull from multiple coexisting Graffiti implementations without collision. Existing schemes include graffiti:local: for objects stored locally (see the local implementation) and graffiti:remote: for objects stored on Graffiti-specific web servers (see the remote implementation) Options available in the future might include graffiti:solid: for objects stored on Solid servers or graffiti:p2p: for objects stored on a peer-to-peer network.

    value: {}

    The object's content as freeform JSON. We recommend using properties from the Activity Vocabulary or properties that emerge in the Graffiti folksonomy to promote interoperability.