$schema: ../../vocab-tools/schema.yaml
name: InteractionPolicy
compactName: InteractionPolicy
uri: "https://gotosocial.org/ns#InteractionPolicy"
entity: false
typeless: true
description: |
  Represents an interaction policy attached to a post, specifying who can
  like, reply to, announce, or quote it.  Each sub-policy
  ({@link InteractionRule}) defines which actors receive automatic or manual
  approval.

  See [GoToSocial interaction controls](https://docs.gotosocial.org/en/latest/federation/interaction_controls/)
  for details.
defaultContext: "https://gotosocial.org/ns"

properties:
- singularName: canLike
  functional: true
  compactName: canLike
  uri: "https://gotosocial.org/ns#canLike"
  untyped: true
  description: |
    The sub-policy specifying who can like the post.

    When absent, implementations should assume that anyone can like the post
    (i.e., `automaticApproval` defaults to the public collection).
  range:
  - "https://gotosocial.org/ns#InteractionRule"

- singularName: canReply
  functional: true
  compactName: canReply
  uri: "https://gotosocial.org/ns#canReply"
  untyped: true
  description: |
    The sub-policy specifying who can reply to the post.

    When absent, implementations should assume that anyone can reply
    (i.e., `automaticApproval` defaults to the public collection).
  range:
  - "https://gotosocial.org/ns#InteractionRule"

- singularName: canAnnounce
  functional: true
  compactName: canAnnounce
  uri: "https://gotosocial.org/ns#canAnnounce"
  untyped: true
  description: |
    The sub-policy specifying who can announce (boost) the post.

    When absent, implementations should assume that anyone can announce
    (i.e., `automaticApproval` defaults to the public collection).
  range:
  - "https://gotosocial.org/ns#InteractionRule"

- singularName: canQuote
  functional: true
  compactName: canQuote
  uri: "https://gotosocial.org/ns#canQuote"
  untyped: true
  description: |
    The sub-policy specifying who can quote the post.

    When absent, implementations should assume that anyone can quote the post
    (i.e., `automaticApproval` defaults to the public collection).
  range:
  - "https://gotosocial.org/ns#InteractionRule"
