$schema: ../codegen/schema.yaml
name: Group
compactName: Group
uri: "https://www.w3.org/ns/activitystreams#Group"
extends: "https://www.w3.org/ns/activitystreams#Object"
entity: true
description: Represents a formal or informal collective of Actors.
defaultContext:
- "https://www.w3.org/ns/activitystreams"
- "https://w3id.org/security/v1"
- "https://w3id.org/security/data-integrity/v1"
- "https://www.w3.org/ns/did/v1"
- "https://w3id.org/security/multikey/v1"
- alsoKnownAs:
    "@id": "as:alsoKnownAs"
    "@type": "@id"
  manuallyApprovesFollowers: "as:manuallyApprovesFollowers"
  movedTo:
    "@id": "as:movedTo"
    "@type": "@id"
  toot: "http://joinmastodon.org/ns#"
  Emoji: "toot:Emoji"
  featured:
    "@id": "toot:featured"
    "@type": "@id"
  featuredTags:
    "@id": "toot:featuredTags"
    "@type": "@id"
  discoverable: "toot:discoverable"
  suspended: "toot:suspended"
  memorial: "toot:memorial"
  indexable: "toot:indexable"
  schema: "http://schema.org#"
  PropertyValue: "schema:PropertyValue"
  value: "schema:value"
  misskey: "https://misskey-hub.net/ns#"
  _misskey_followedMessage: "misskey:_misskey_followedMessage"
  isCat: "misskey:isCat"

properties:
- pluralName: preferredUsernames
  singularName: preferredUsername
  singularAccessor: true
  compactName: preferredUsername
  uri: "https://www.w3.org/ns/activitystreams#preferredUsername"
  description: |
    A short username which may be used to refer to the actor,
    with no uniqueness guarantees.
  range:
  - "http://www.w3.org/2001/XMLSchema#string"
  - "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"

- pluralName: publicKeys
  singularName: publicKey
  singularAccessor: true
  compactName: publicKey
  uri: "https://w3id.org/security#publicKey"
  description: A public part of the key pair owned by this actor.
  untyped: true
  range:
  - "https://w3id.org/security#Key"

- pluralName: assertionMethods
  singularName: assertionMethod
  singularAccessor: true
  compactName: assertionMethod
  uri: "https://w3id.org/security#assertionMethod"
  description: |
    Represents this actor's public keys.  It serves as equivalent to
    the `publicKeys` property, but is used for [FEP-521a] compliance.

    [FEP-521a]: https://w3id.org/fep/521a
  range:
  - "https://w3id.org/security#Multikey"

- singularName: manuallyApprovesFollowers
  functional: true
  compactName: manuallyApprovesFollowers
  uri: "https://www.w3.org/ns/activitystreams#manuallyApprovesFollowers"
  description: |
    When `true`, conveys that for this actor, follow requests are not usually
    automatically approved, but instead are examined by a person who may accept
    or reject the request, at some time in the future.  Setting of `false`
    conveys no information and may be ignored.  This information is typically
    used to affect display of accounts, such as showing an account as private or
    locked.
  range:
  - "http://www.w3.org/2001/XMLSchema#boolean"

- singularName: inbox
  functional: true
  compactName: inbox
  uri: "http://www.w3.org/ns/ldp#inbox"
  description: |
    The inbox stream contains all activities received by the actor.  The server
    SHOULD filter content according to the requester's permission.  In general,
    the owner of an inbox is likely to be able to access all of their inbox
    contents.  Depending on access control, some other content may be public,
    whereas other content may require authentication for non-owner users,
    if they can access the inbox at all.

    The server MUST perform de-duplication of activities returned by the inbox.
    Duplication can occur if an activity is addressed both to an actor's
    followers, and a specific actor who also follows the recipient actor,
    and the server has failed to de-duplicate the recipients list.
    Such deduplication MUST be performed by comparing the `id` of the activities
    and dropping any activities already seen.
  range:
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
  - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"

- singularName: outbox
  functional: true
  compactName: outbox
  uri: "https://www.w3.org/ns/activitystreams#outbox"
  description: |
    The outbox stream contains activities the user has published,
    subject to the ability of the requestor to retrieve the activity
    (that is, the contents of the outbox are filtered by the permissions of
    the person reading it).  If a user submits a request without
    [Authorization](https://www.w3.org/TR/activitypub/#authorization)
    the server should respond with all of the
    [Public](https://www.w3.org/TR/activitypub/#public-addressing) posts.
    This could potentially be all relevant objects published by the user,
    though the number of available items is left to the discretion of those
    implementing and deploying the server.
  range:
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
  - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"

- singularName: following
  functional: true
  compactName: following
  uri: "https://www.w3.org/ns/activitystreams#following"
  description: |
    This is a list of everybody that the actor has followed, added as a
    [side effect](https://www.w3.org/TR/activitypub/#follow-activity-outbox).
    The `following` collection MUST be either an {@link OrderedCollection}
    or a {@link Collection} and MAY be filtered on privileges of
    an authenticated user or as appropriate when no authentication is given.
  range:
  - "https://www.w3.org/ns/activitystreams#Collection"

- singularName: followers
  functional: true
  compactName: followers
  uri: "https://www.w3.org/ns/activitystreams#followers"
  description: |
    This is a list of everyone who has sent a {@link Follow} activity
    for the actor, added as a
    [side effect](https://www.w3.org/TR/activitypub/#follow-activity-outbox).
    This is where one would find a list of all the actors that are following
    the actor.  The `followers` collection MUST be either
    an {@link OrderedCollection} or a {@link Collection} and MAY be filtered on
    privileges of an authenticated user or as appropriate when no authentication
    is given.
  range:
  - "https://www.w3.org/ns/activitystreams#Collection"

- singularName: liked
  functional: true
  compactName: liked
  uri: "https://www.w3.org/ns/activitystreams#liked"
  description: |
    This is a list of every object from all of the actor's {@link Like}
    activities, added as a
    [side effect](https://www.w3.org/TR/activitypub/#like-activity-outbox).
    The `liked` collection MUST be either an {@link OrderedCollection} or
    a {@link Collection} and MAY be filtered on privileges of an authenticated
    user or as appropriate when no authentication is given.
  range:
  - "https://www.w3.org/ns/activitystreams#Collection"

- singularName: featured
  functional: true
  compactName: featured
  uri: "http://joinmastodon.org/ns#featured"
  description: |
    What is known in Mastodon as "pinned statuses", or statuses that are always
    featured at the top of people's profiles, is implemented using an extra
    property `featured` on the actor object that points to a {@link Collection}
    of objects.
  range:
  - "https://www.w3.org/ns/activitystreams#Collection"

- singularName: featuredTags
  functional: true
  compactName: featuredTags
  uri: "http://joinmastodon.org/ns#featuredTags"
  description: |
    What is known in Mastodon as "featured hashtags", hashtags that are featured
    at people's profiles, is implemented using an extra property `featuredTags`
    on the actor object that points to a {@link Collection} of {@link Hashtag}
    objects specifically.
  range:
  - "https://www.w3.org/ns/activitystreams#Collection"

- pluralName: streams
  singularName: stream
  singularAccessor: false
  compactName: streams
  uri: "https://www.w3.org/ns/activitystreams#streams"
  description: |
    A list of supplementary Collections which may be of interest.
  range:
  - "https://www.w3.org/ns/activitystreams#Collection"

- singularName: endpoints
  functional: true
  compactName: endpoints
  uri: "https://www.w3.org/ns/activitystreams#endpoints"
  description: |
    A JSON object which maps additional (typically server/domain-wide) endpoints
    which may be useful either for this actor or someone referencing this actor.
    This mapping may be nested inside the actor document as the value or may be
    a link to a JSON-LD document with these properties.
  range:
  - "https://www.w3.org/ns/activitystreams#Endpoints"

- singularName: discoverable
  functional: true
  compactName: discoverable
  uri: "http://joinmastodon.org/ns#discoverable"
  description: |
    Allows users to opt-in or opt-out of discoverability features like
    the profile directory.  This flag may also be used as an indicator of
    the user's preferences toward being included in external discovery services,
    such as search engines or other indexing tools.
  range:
  - "http://www.w3.org/2001/XMLSchema#boolean"

- singularName: suspended
  functional: true
  compactName: suspended
  uri: "http://joinmastodon.org/ns#suspended"
  description: |
    Reports whether a user was locally suspended, for better handling of
    these accounts.
  range:
  - "http://www.w3.org/2001/XMLSchema#boolean"

- singularName: memorial
  functional: true
  compactName: memorial
  uri: "http://joinmastodon.org/ns#memorial"
  description: Whether the actor is in-memorial state.
  range:
  - "http://www.w3.org/2001/XMLSchema#boolean"

- singularName: indexable
  functional: true
  compactName: indexable
  uri: "http://joinmastodon.org/ns#indexable"
  description: Whether the actor allows to be indexed.
  range:
  - "http://www.w3.org/2001/XMLSchema#boolean"

- singularName: successor
  functional: true
  compactName: movedTo
  uri: "https://www.w3.org/ns/activitystreams#movedTo"
  description: >-
    Signifies that an actor has been moved to a different ID.
    Used in Mastodon-style data portability with the {@link Move} activity;
    see [ActivityPub Data Portability/Move
    Action](https://swicg.github.io/activitypub-data-portability/#move-action)
    for more details. 
  range:
  - "https://www.w3.org/ns/activitystreams#Application"
  - "https://www.w3.org/ns/activitystreams#Group"
  - "https://www.w3.org/ns/activitystreams#Organization"
  - "https://www.w3.org/ns/activitystreams#Person"
  - "https://www.w3.org/ns/activitystreams#Service"

- pluralName: aliases
  singularName: alias
  singularAccessor: true
  compactName: alsoKnownAs
  uri: "https://www.w3.org/ns/activitystreams#alsoKnownAs"
  description: |
    The `aliases` (`alsoKnownAs`) property is used to specify alternative names
    or aliases for an entity.  It can be used to provide additional identifiers
    or labels for an entity, which can be useful in scenarios where an entity
    may have multiple names or aliases.
  range:
  - "https://www.w3.org/ns/activitystreams#Application"
  - "https://www.w3.org/ns/activitystreams#Group"
  - "https://www.w3.org/ns/activitystreams#Organization"
  - "https://www.w3.org/ns/activitystreams#Person"
  - "https://www.w3.org/ns/activitystreams#Service"

- pluralName: services
  singularName: service
  singularAccessor: true
  compactName: service
  uri: "https://www.w3.org/ns/did#service"
  description: |
    Means of communicating or interacting with the DID subject or associated
    entities via one or more service endpoints. Examples include discovery
    services, agent services, social networking services, file storage services,
    and verifiable credential repository services. 
  range:
  - "https://www.w3.org/ns/did#Service"

- singularName: followedMessage
  functional: true
  compactName: _misskey_followedMessage
  uri: "https://misskey-hub.net/ns#_misskey_followedMessage"
  description: |
    This value is used for `Actor` type objects to show message on followed.
  range:
  - "http://www.w3.org/2001/XMLSchema#string"

- singularName: cat
  functional: true
  compactName: isCat
  uri: "https://misskey-hub.net/ns#isCat"
  description: |
    Used on actors to indicate that they in some way identify as a cat,
    expressed as a boolean value. If this property is set to `true`,
    displaying the actor or their notes will have some special effects
    attached in some clients.
  range:
  - "http://www.w3.org/2001/XMLSchema#boolean"
