mobilizon.chapril.org-mobil.../schema.graphql

4182 lines
80 KiB
GraphQL
Raw Normal View History

"Represents a schema"
schema {
query: RootQueryType
mutation: RootMutationType
subscription: RootSubscriptionType
}
"A JWT and the associated user ID"
type Login {
"A JWT Token for this session"
accessToken: String!
"A JWT Token to refresh the access token"
refreshToken: String!
"The user associated to this session"
user: User!
}
"Instance anonymous participation configuration"
type AnonymousParticipation {
"Whether anonymous participations are allowed"
allowed: Boolean
"The ways to validate anonymous participations"
validation: AnonymousParticipationValidation
}
"Available sort directions"
enum SortDirection {
"Ascending order"
ASC
"Descending order"
DESC
}
"Token"
type RefreshedToken {
"Generated access token"
accessToken: String!
"Generated refreshed token"
refreshToken: String!
}
"Represents an application"
type Application implements Actor {
"Internal ID for this application"
id: ID
"The ActivityPub actor's URL"
url: String
"The type of Actor (Person, Group,…)"
type: ActorType
"The actor's displayed name"
name: String
"The actor's domain if (null if it's this instance)"
domain: String
"If the actor is from this instance"
local: Boolean
"The actor's summary"
summary: String
"The actor's preferred username"
preferredUsername: String
"Whether the actors manually approves followers"
manuallyApprovesFollowers: Boolean
"If the actor is suspended"
suspended: Boolean
"The actor's avatar media"
avatar: Media
"The actor's banner media"
banner: Media
"Number of followers for this actor"
followersCount: Int
"Number of actors following this actor"
followingCount: Int
"The total size of the media from this actor"
mediaSize: Int
}
"Instance anonymous event creation configuration"
type AnonymousEventCreation {
"Whether anonymous event creation is enabled"
allowed: Boolean
"The methods to validate events created anonymously"
validation: AnonymousEventCreationValidation
}
"The list of values the for pending notification settings"
enum NotificationPendingEnum {
"None. The notification won't be sent."
NONE
"Direct. The notification will be sent right away each time."
DIRECT
"One hour. Notifications will be sent at most each hour"
ONE_HOUR
"One day. Notifications will be sent at most each day"
ONE_DAY
"One Week. Notifications will be sent at most each week"
ONE_WEEK
}
"The possible values for a participant role"
enum ParticipantRoleEnum {
"The participant has not been approved"
NOT_APPROVED
"The participant has not confirmed their participation"
NOT_CONFIRMED
"The participant is a regular participant"
PARTICIPANT
"The participant is an event moderator"
MODERATOR
"The participant is an event administrator"
ADMINISTRATOR
"The participant is an event creator"
CREATOR
"The participant has been rejected from this event"
REJECTED
}
"Available event sort fields"
enum EventOrderBy {
"Sort by the date the event starts"
BEGINS_ON
"Sort by the date the event was created"
INSERTED_AT
"Sort by the date the event was updated"
UPDATED_AT
}
"A config object"
type Config {
"The instance's name"
name: String
"The instance's short description"
description: String
"The instance's long description"
longDescription: String
"The instance's slogan"
slogan: String
"The instance's contact details"
contact: String
"The instance's admins languages"
languages: [String]
"The instance list of event categories possibilities"
eventCategories: [EventCategoryOption]
"Whether the registrations are opened"
registrationsOpen: Boolean
"Whether the registration are on an allowlist"
registrationsAllowlist: Boolean
"Whether the demo mode is enabled"
demoMode: Boolean
"The country code from the IP"
countryCode: String
"The IP's location"
location: Lonlat
"The instance's geocoding settings"
geocoding: Geocoding
"The instance's maps settings"
maps: Maps
"The instance's anonymous action settings"
anonymous: Anonymous
"The instance's enabled resource providers"
resourceProviders: [ResourceProvider]
"The configuration for upload limits"
uploadLimits: UploadLimits
"The instance's available timezones"
timezones: [String]
"The instance's features"
features: Features
"The instance's restrictions"
restrictions: Restrictions
"The instance's version"
version: String
"Whether this instance is federation"
federating: Boolean
"The instance's terms"
terms(
"The user's locale. The terms will be translated in their language, if available."
locale: String
): Terms
"The instance's privacy policy"
privacy(
"The user's locale. The privacy policy will be translated in their language, if available."
locale: String
): Privacy
"The instance's rules"
rules: String
"The instance auth methods"
auth: Auth
"The instance's feed settings"
instanceFeeds: InstanceFeeds
"Web Push settings for the instance"
webPush: WebPush
"The instance list of export formats"
exportFormats: ExportFormats
"Configuration for diverse analytics services"
analytics: [Analytics]
}
"A tag"
type Tag {
"The tag's ID"
id: ID
"The tags's slug"
slug: String
"The tag's title"
title: String
"Related tags to this tag"
related: [Tag]
}
"Instance map routing configuration"
type Routing {
"The instance's routing type"
type: RoutingType
}
"Language information"
type Language {
"The iso-639-3 language code"
code: String
"The language name"
name: String
}
"The list of roles an user can have"
enum UserRole {
"Administrator role"
ADMINISTRATOR
"Moderator role"
MODERATOR
"User role"
USER
}
"""
A list of possible values for the type option to search an address.
Results may vary depending on the geocoding provider.
"""
enum AddressSearchType {
"Administrative results (cities, regions,...)"
ADMINISTRATIVE
}
"A todo list"
type TodoList {
"The todo list's ID"
id: ID
"The todo list's title"
title: String
"The actor that owns this todo list"
actor: Actor
"The todo-list's todos"
todos(
"The page in the paginated todos list"
page: Int
"The limit of todos per page"
limit: Int
): PaginatedTodoList
}
"Represents a participant to an event"
type Participant {
"The participation ID"
id: ID
"The event which the actor participates in"
event: Event
"The actor that participates to the event"
actor: Actor
"The role of this actor at this event"
role: ParticipantRoleEnum
"The metadata associated to this participant"
metadata: ParticipantMetadata
"The datetime this participant was created"
insertedAt: DateTime
}
"The list of sortable fields for an user list"
enum SortableUserField {
"The user's ID"
ID
}
interface ActivityObject {
id: ID
}
"A paginated list of activity items"
type PaginatedActivityList {
"A list of activities"
elements: [Activity]
"The total number of elements in the list"
total: Int
}
"""
The `UUID` scalar type represents UUID4 compliant string data, represented as UTF-8
character sequences. The UUID4 type is most often used to represent unique
human-readable ID strings.
"""
scalar UUID
"A paginated list of instances"
type PaginatedInstanceList {
"A list of instances"
elements: [Instance]
"The total number of instances in the list"
total: Int
}
"A paginated list of discussions"
type PaginatedDiscussionList {
"A list of discussion"
elements: [Discussion]
"The total number of discussions in the list"
total: Int
}
"The set of parameters needed to input a location"
input LocationInput {
"The range in kilometers the user wants to see events"
range: Int
"A geohash representing the user's preferred location"
geohash: String
"A string describing the user's preferred location"
name: String
}
"The objects that can be in an action log"
interface ActionLogObject {
"Internal ID for this object"
id: ID
}
"Represents an uploaded file."
scalar Upload
"A paginated list of posts"
type PaginatedPostList {
"A list of posts"
elements: [Post]
"The total number of posts in the list"
total: Int
}
"A comment"
type Comment implements ActivityObject & ActionLogObject {
"Internal ID for this comment"
id: ID
"An UUID for this comment"
uuid: UUID
"Comment URL"
url: String
"Whether this comment is local or not"
local: Boolean
"The visibility for the comment"
visibility: CommentVisibility
"The comment body"
text: String
"The comment's primary language"
primaryLanguage: String
"A list of replies to the comment"
replies: [Comment]
"The number of total known replies to this comment"
totalReplies: Int
"The comment this comment directly replies to"
inReplyToComment: Comment
"The eventual event this comment is under"
event: Event
"The original comment that started the thread this comment is in"
originComment: Comment
"The thread languages"
threadLanguages: [String]!
"The comment's author"
actor: Person
"When was the comment inserted in database"
insertedAt: DateTime
"When was the comment updated"
updatedAt: DateTime
"When was the comment deleted"
deletedAt: DateTime
"When was the comment published"
publishedAt: DateTime
"Whether this comment needs to be announced to participants"
isAnnouncement: Boolean!
"The comment language"
language: String
}
"An attached media or a link to a media"
input MediaInput {
"A full media attached"
media: MediaInputObject
"The ID of an existing media"
mediaId: ID
}
"Instance anonymous reports"
type AnonymousReports {
"Whether anonymous reports are allowed"
allowed: Boolean
}
"Search events result"
type Events {
"Total elements"
total: Int!
"Event elements"
elements: [Event]!
}
"Instance maps configuration"
type Maps {
"The instance's maps tiles configuration"
tiles: Tiles
"The instance's maps routing configuration"
routing: Routing
}
"Search groups result"
type Groups {
"Total elements"
total: Int!
"Group elements"
elements: [Group]!
}
"The list of possible statuses for a report object"
enum ReportStatus {
"The report has been opened"
OPEN
"The report has been closed"
CLOSED
"The report has been marked as resolved"
RESOLVED
}
enum ActivityAuthor {
"Activities created by the current actor"
SELF
"Activities created by others"
BY
}
"The metadata associated to the resource"
type ResourceMetadata {
"The type of the resource"
type: String
"The resource's metadata title"
title: String
"The resource's metadata description"
description: String
"The resource's metadata image"
imageRemoteUrl: String
"The resource's metadata image width"
width: Int
"The resource's metadata image height"
height: Int
"The resource's author name"
authorName: String
"The resource's author URL"
authorUrl: String
"The resource's provider name"
providerName: String
"The resource's provider URL"
providerUrl: String
"The resource's author name"
html: String
"The resource's favicon URL"
faviconUrl: String
}
"Metadata about a participant"
type ParticipantMetadata {
"The eventual token to leave an event when user is anonymous"
cancellationToken: String
"The eventual message the participant left"
message: String
"The participant's locale"
locale: String
}
"A media"
type Media {
"The media's ID"
id: ID
"The media's alternative text"
alt: String
"The media's name"
name: String
"The media's full URL"
url: String
"The media's detected content type"
contentType: String
"The media's size"
size: Int
"The media's metadata"
metadata: MediaMetadata
}
"Instance anonymous participation with validation by captcha configuration"
type AnonymousParticipationValidationCaptcha {
"Whether anonymous participation validation by captcha is enabled"
enabled: Boolean
}
"Instance anonymous event creation captcha validation configuration"
type AnonymousEventCreationValidationCaptcha {
"Whether anonymous event creation with validation by captcha is enabled"
enabled: Boolean
}
"A todo"
type Todo {
"The todo's ID"
id: ID
"The todo's title"
title: String
"The todo's status"
status: Boolean
"The todo's due date"
dueDate: DateTime
"The todo's creator"
creator: Actor
"The todo list this todo is attached to"
todoList: TodoList
"The todos's assigned person"
assignedTo: Actor
}
"Root subscription"
type RootSubscriptionType {
"Notify when a person's participation's status changed for an event"
eventPersonParticipationChanged(
"The person's ID"
personId: ID!
): Person
"Notify when a person's membership's status changed for a group"
groupMembershipChanged(
"The person's ID"
personId: ID!
"The group's federated username"
group: String!
): Person
"Notify when a discussion changed"
discussionCommentChanged(
"The discussion's slug"
slug: String!
): Discussion
}
"Event categories list configuration"
type EventCategoryOption {
"The ID of the event category"
id: String
"The translated name of the event category"
label: String
}
type AnalyticsConfiguration {
"The key for the analytics configuration element"
key: String
"The value for the analytics configuration element"
value: String
"The analytics configuration type"
type: AnalyticsConfigurationType
}
"Represents a deleted feed_token"
type DeletedFeedToken {
"The user that owned the deleted feed token"
user: DeletedObject
"The actor that owned the deleted feed token"
actor: DeletedObject
}
"Instance anonymous participation validation configuration"
type AnonymousParticipationValidation {
"The policy to validate anonymous participations by email"
email: AnonymousParticipationValidationEmail
"The policy to validate anonymous participations by captcha"
captcha: AnonymousParticipationValidationCaptcha
}
type Location {
"The range in kilometers the user wants to see events"
range: Int
"A geohash representing the user's preferred location"
geohash: String
"A string describing the user's preferred location"
name: String
}
enum ExportFormatEnum {
"CSV format"
CSV
"PDF format"
PDF
"ODS format"
ODS
}
"The list of visibility options for a comment"
enum CommentVisibility {
"Publicly listed and federated. Can be shared."
PUBLIC
"Visible only to people with the link - or invited"
UNLISTED
"Visible only to people members of the group or followers of the person"
PRIVATE
"Visible only after a moderator accepted"
MODERATED
"visible only to people invited"
INVITE
}
"The list of visibility options for an event"
enum EventVisibility {
"Publicly listed and federated. Can be shared."
PUBLIC
"Visible only to people with the link - or invited"
UNLISTED
"Visible only after a moderator accepted"
RESTRICTED
"Visible only to people members of the group or followers of the person"
PRIVATE
}
"The instance's auth configuration"
type Auth {
"Whether or not LDAP auth is enabled"
ldap: Boolean
"List of oauth providers"
oauthProviders: [OauthProvider]
}
"An action log"
type ActionLog {
"Internal ID for this comment"
id: ID
"The actor that acted"
actor: Actor
"The object that was acted upon"
object: ActionLogObject
"The action that was done"
action: ActionLogAction
"The time when the action was performed"
insertedAt: DateTime
}
"The acceptable values for the instance's terms type"
enum InstanceTermsType {
"An URL. Users will be redirected to this URL."
URL
"Terms will be set to Mobilizon's default terms"
DEFAULT
"Custom terms text"
CUSTOM
}
"A entity that can be interacted with from a remote instance"
interface Interactable {
"A public URL for the entity"
url: String
}
enum EventType {
"The event will happen in person. It can also be livestreamed, but has a physical address"
IN_PERSON
"The event will only happen online. It has no physical address"
ONLINE
}
enum EventMetadataType {
"A string"
STRING
"An integer"
INTEGER
"A boolean"
BOOLEAN
}
enum RoutingType {
"Redirect to openstreetmap.org's direction endpoint"
OPENSTREETMAP
"Redirect to Google Maps's direction endpoint"
GOOGLE_MAPS
}
"A struct containing the id of the deleted object"
type DeletedObject {
id: ID
}
"A follow group event"
type FollowedGroupEvent {
user: User
profile: Person
group: Group
event: Event
}
"A paginated list of comments"
type PaginatedCommentList {
"A list of comments"
elements: [Comment]
"The total number of comments in the list"
total: Int
}
"A paginated list of members"
type PaginatedMemberList {
"A list of members"
elements: [Member]
"The total number of elements in the list"
total: Int
}
"A post"
type Post implements ActivityObject {
"The post's ID"
id: ID
"The post's title"
title: String
"The post's slug"
slug: String
"The post's body, as HTML"
body: String
"The post's URL"
url: String
"Whether the post is a draft"
draft: Boolean
"The post's author"
author: Actor
"The post's group"
attributedTo: Actor
"The post's visibility"
visibility: PostVisibility
"When the post was published"
publishAt: DateTime
"The post's creation date"
insertedAt: DateTime
"The post's last update date"
updatedAt: DateTime
"The post language"
language: String
"The post's tags"
tags: [Tag]
"The posts's media"
picture: Media
}
"A paginated list of action logs"
type PaginatedActionLogList {
"A list of action logs"
elements: [ActionLog]
"The total number of action logs in the list"
total: Int
}
"A paginated list of events"
type PaginatedEventList {
"A list of events"
elements: [Event]
"The total number of events in the list"
total: Int
}
"Represents a deleted participant"
type DeletedParticipant {
"The participant ID"
id: ID
"The participant's event"
event: DeletedObject
"The participant's actor"
actor: DeletedObject
}
"A paginated list of follower objects"
type PaginatedFollowerList {
"A list of followers"
elements: [Follower]
"The total number of elements in the list"
total: Int
}
type Analytics {
"ID of the analytics service"
id: String
"Whether the service is activated or not"
enabled: Boolean
"A list of key-values configuration"
configuration: [AnalyticsConfiguration]
}
enum InstancesSortFields {
EVENT_COUNT
PERSON_COUNT
GROUP_COUNT
FOLLOWERS_COUNT
FOLLOWINGS_COUNT
REPORTS_COUNT
MEDIA_SIZE
}
"The list of possible options for the event's status"
enum EventStatus {
"The event is tentative"
TENTATIVE
"The event is confirmed"
CONFIRMED
"The event is cancelled"
CANCELLED
}
"A statistics object"
type Statistics {
"The number of local users"
numberOfUsers: Int
"The total number of events"
numberOfEvents: Int
"The number of local events"
numberOfLocalEvents: Int
"The total number of comments"
numberOfComments: Int
"The number of local events"
numberOfLocalComments: Int
"The total number of groups"
numberOfGroups: Int
"The number of local groups"
numberOfLocalGroups: Int
"The number of this instance's followers"
numberOfInstanceFollowers: Int
"The number of instances this instance follows"
numberOfInstanceFollowings: Int
}
"Export formats configuration"
type ExportFormats {
"The list of formats the event participants can be exported to"
eventParticipants: [String]
}
"Search persons result"
type Persons {
"Total elements"
total: Int!
"Person elements"
elements: [Person]!
}
"An oAuth Provider"
type OauthProvider {
"The provider ID"
id: String
"The label for the auth provider"
label: String
}
"An ActivityPub actor"
interface Actor {
"Internal ID for this actor"
id: ID
"The ActivityPub actor's URL"
url: String
"The type of Actor (Person, Group,…)"
type: ActorType
"The actor's displayed name"
name: String
"The actor's domain if (null if it's this instance)"
domain: String
"If the actor is from this instance"
local: Boolean
"The actor's summary"
summary: String
"The actor's preferred username"
preferredUsername: String
"Whether the actors manually approves followers"
manuallyApprovesFollowers: Boolean
"If the actor is suspended"
suspended: Boolean
"The actor's avatar media"
avatar: Media