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

3792 lines
73 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]
"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 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
}
"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: 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 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
}
"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
}
"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 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 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
}
"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
}
"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
"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
}
"Some metadata associated with a media"
type MediaMetadata {
"The media width (if a picture)"
width: Int
"The media width (if a height)"
height: Int
"The media blurhash (if a picture"
blurhash: String
}
"Instance anonymous event creation validation configuration"
type AnonymousEventCreationValidation {
"The policy to validate anonymous event creations by email"
email: AnonymousEventCreationValidationEmail
"The policy to validate anonymous event creations by captcha"
captcha: AnonymousEventCreationValidationCaptcha
}
"The list of possible options for the event's status"
enum EventCommentModeration {
"Anyone can comment under the event"
ALLOW_ALL
"Every comment has to be moderated by the admin"
MODERATED
"No one can comment except for the admin"
CLOSED
}
"Represents a person identity"
type Person implements ActionLogObject & Actor {
"Internal ID for this person"
id: ID
"The user this actor is associated to"
user: User
"The list of groups this person is member of"
memberOf: [Member]
"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
"A list of the feed tokens for this person"
feedTokens: [FeedToken]
"A list of the events this actor has organized"
organizedEvents(
"The page in the paginated event list"
page: Int
"The limit of events per page"
limit: Int
): PaginatedEventList