mirror of
https://framagit.org/framasoft/mobilizon.git
synced 2024-12-21 23:44:30 +00:00
663 lines
17 KiB
GraphQL
663 lines
17 KiB
GraphQL
# This file was generated based on ".graphqlconfig.yaml". Do not edit manually.
|
|
|
|
schema {
|
|
query: RootQueryType
|
|
mutation: RootMutationType
|
|
}
|
|
|
|
"An ActivityPub actor"
|
|
interface Actor {
|
|
"The actor's avatar picture"
|
|
avatar: Picture
|
|
"The actor's banner picture"
|
|
banner: Picture
|
|
"The actor's domain if (null if it's this instance)"
|
|
domain: String
|
|
"List of followers"
|
|
followers: [Follower]
|
|
"Number of followers for this actor"
|
|
followersCount: Int
|
|
"List of followings"
|
|
following: [Follower]
|
|
"Number of actors following this actor"
|
|
followingCount: Int
|
|
"Internal ID for this actor"
|
|
id: Int
|
|
"The actors RSA Keys"
|
|
keys: String
|
|
"If the actor is from this instance"
|
|
local: Boolean
|
|
"Whether the actors manually approves followers"
|
|
manuallyApprovesFollowers: Boolean
|
|
"The actor's displayed name"
|
|
name: String
|
|
"A list of the events this actor has organized"
|
|
organizedEvents: [Event]
|
|
"The actor's preferred username"
|
|
preferredUsername: String
|
|
"The actor's summary"
|
|
summary: String
|
|
"If the actor is suspended"
|
|
suspended: Boolean
|
|
"The type of Actor (Person, Group,…)"
|
|
type: ActorType
|
|
"The ActivityPub actor's URL"
|
|
url: String
|
|
}
|
|
|
|
type Address {
|
|
country: String
|
|
description: String
|
|
"The floor this event is at"
|
|
floor: String
|
|
"The geocoordinates for the point where this address is"
|
|
geom: Point
|
|
"The address's locality"
|
|
locality: String
|
|
postalCode: String
|
|
region: String
|
|
"The address's street name (with number)"
|
|
street: String
|
|
}
|
|
|
|
"A comment"
|
|
type Comment {
|
|
"Internal ID for this comment"
|
|
id: ID
|
|
local: Boolean
|
|
primaryLanguage: String
|
|
replies: [Comment]
|
|
text: String
|
|
threadLanguages: [String]!
|
|
url: String
|
|
uuid: UUID
|
|
visibility: CommentVisibility
|
|
}
|
|
|
|
"A config object"
|
|
type Config {
|
|
description: String
|
|
name: String
|
|
registrationsOpen: Boolean
|
|
}
|
|
|
|
"Represents a deleted feed_token"
|
|
type DeletedFeedToken {
|
|
actor: DeletedObject
|
|
user: DeletedObject
|
|
}
|
|
|
|
"Represents a deleted member"
|
|
type DeletedMember {
|
|
actor: DeletedObject
|
|
parent: DeletedObject
|
|
}
|
|
|
|
"A struct containing the id of the deleted object"
|
|
type DeletedObject {
|
|
id: Int
|
|
}
|
|
|
|
"Represents a deleted participant"
|
|
type DeletedParticipant {
|
|
actor: DeletedObject
|
|
event: DeletedObject
|
|
}
|
|
|
|
"An event"
|
|
type Event {
|
|
"Who the event is attributed to (often a group)"
|
|
attributedTo: Actor
|
|
"Datetime for when the event begins"
|
|
beginsOn: DateTime
|
|
"The event's category"
|
|
category: String
|
|
"When the event was created"
|
|
createdAt: DateTime
|
|
"The event's description"
|
|
description: String
|
|
"Datetime for when the event ends"
|
|
endsOn: DateTime
|
|
"Internal ID for this event"
|
|
id: Int
|
|
"Whether the event is local or not"
|
|
local: Boolean
|
|
"Online address of the event"
|
|
onlineAddress: OnlineAddress
|
|
"The event's organizer (as a person)"
|
|
organizerActor: Actor
|
|
"The event's participants"
|
|
participants: [Participant]
|
|
"Phone address for the event"
|
|
phoneAddress: PhoneAddress
|
|
"The type of the event's address"
|
|
physicalAddress: Address
|
|
"The event's picture"
|
|
picture: Picture
|
|
"When the event was published"
|
|
publishAt: DateTime
|
|
"Events related to this one"
|
|
relatedEvents: [Event]
|
|
"The event's description's slug"
|
|
slug: String
|
|
"Status of the event"
|
|
status: EventStatus
|
|
"The event's tags"
|
|
tags: [Tag]
|
|
"The event's title"
|
|
title: String
|
|
"When the event was last updated"
|
|
updatedAt: DateTime
|
|
"The ActivityPub Event URL"
|
|
url: String
|
|
"The Event UUID"
|
|
uuid: UUID
|
|
"The event's visibility"
|
|
visibility: EventVisibility
|
|
}
|
|
|
|
"Search events result"
|
|
type Events {
|
|
"Event elements"
|
|
elements: [Event]!
|
|
"Total elements"
|
|
total: Int!
|
|
}
|
|
|
|
"Represents a participant to an event"
|
|
type FeedToken {
|
|
"The event which the actor participates in"
|
|
actor: Actor
|
|
"The role of this actor at this event"
|
|
token: String
|
|
"The actor that participates to the event"
|
|
user: User
|
|
}
|
|
|
|
"""
|
|
Represents an actor's follower
|
|
"""
|
|
type Follower {
|
|
"Which profile follows"
|
|
actor: Actor
|
|
"Whether the follow has been approved by the target actor"
|
|
approved: Boolean
|
|
"What or who the profile follows"
|
|
targetActor: Actor
|
|
}
|
|
|
|
"""
|
|
Represents a group of actors
|
|
"""
|
|
type Group implements Actor {
|
|
"The actor's avatar picture"
|
|
avatar: Picture
|
|
"The actor's banner picture"
|
|
banner: Picture
|
|
"The actor's domain if (null if it's this instance)"
|
|
domain: String
|
|
"List of followers"
|
|
followers: [Follower]
|
|
"Number of followers for this actor"
|
|
followersCount: Int
|
|
"List of followings"
|
|
following: [Follower]
|
|
"Number of actors following this actor"
|
|
followingCount: Int
|
|
"Internal ID for this group"
|
|
id: Int
|
|
"The actors RSA Keys"
|
|
keys: String
|
|
"If the actor is from this instance"
|
|
local: Boolean
|
|
"Whether the actors manually approves followers"
|
|
manuallyApprovesFollowers: Boolean
|
|
"List of group members"
|
|
members: [Member]!
|
|
"The actor's displayed name"
|
|
name: String
|
|
"Whether the group is opened to all or has restricted access"
|
|
openness: Openness
|
|
"A list of the events this actor has organized"
|
|
organizedEvents: [Event]
|
|
"The actor's preferred username"
|
|
preferredUsername: String
|
|
"The actor's summary"
|
|
summary: String
|
|
"If the actor is suspended"
|
|
suspended: Boolean
|
|
"The type of Actor (Person, Group,…)"
|
|
type: ActorType
|
|
"The type of group : Group, Community,…"
|
|
types: GroupType
|
|
"The ActivityPub actor's URL"
|
|
url: String
|
|
}
|
|
|
|
"Search groups result"
|
|
type Groups {
|
|
"Group elements"
|
|
elements: [Group]!
|
|
"Total elements"
|
|
total: Int!
|
|
}
|
|
|
|
"A JWT and the associated user ID"
|
|
type Login {
|
|
"A JWT Token for this session"
|
|
token: String!
|
|
"The user associated to this session"
|
|
user: User!
|
|
}
|
|
|
|
"""
|
|
Represents a member of a group
|
|
"""
|
|
type Member {
|
|
"Which profile is member of"
|
|
actor: Person
|
|
"Of which the profile is member"
|
|
parent: Group
|
|
"The role of this membership"
|
|
role: Int
|
|
}
|
|
|
|
type OnlineAddress {
|
|
info: String
|
|
url: String
|
|
}
|
|
|
|
"Represents a participant to an event"
|
|
type Participant {
|
|
"The actor that participates to the event"
|
|
actor: Actor
|
|
"The event which the actor participates in"
|
|
event: Event
|
|
"The role of this actor at this event"
|
|
role: Int
|
|
}
|
|
|
|
"""
|
|
Represents a person identity
|
|
"""
|
|
type Person implements Actor {
|
|
"The actor's avatar picture"
|
|
avatar: Picture
|
|
"The actor's banner picture"
|
|
banner: Picture
|
|
"The actor's domain if (null if it's this instance)"
|
|
domain: String
|
|
"A list of the feed tokens for this person"
|
|
feedTokens: [FeedToken]
|
|
"List of followers"
|
|
followers: [Follower]
|
|
"Number of followers for this actor"
|
|
followersCount: Int
|
|
"List of followings"
|
|
following: [Follower]
|
|
"Number of actors following this actor"
|
|
followingCount: Int
|
|
"The list of events this person goes to"
|
|
goingToEvents: [Event]
|
|
"Internal ID for this person"
|
|
id: Int
|
|
"The actors RSA Keys"
|
|
keys: String
|
|
"If the actor is from this instance"
|
|
local: Boolean
|
|
"Whether the actors manually approves followers"
|
|
manuallyApprovesFollowers: Boolean
|
|
"The list of groups this person is member of"
|
|
memberOf: [Member]
|
|
"The actor's displayed name"
|
|
name: String
|
|
"A list of the events this actor has organized"
|
|
organizedEvents: [Event]
|
|
"The actor's preferred username"
|
|
preferredUsername: String
|
|
"The actor's summary"
|
|
summary: String
|
|
"If the actor is suspended"
|
|
suspended: Boolean
|
|
"The type of Actor (Person, Group,…)"
|
|
type: ActorType
|
|
"The ActivityPub actor's URL"
|
|
url: String
|
|
"The user this actor is associated to"
|
|
user: User
|
|
}
|
|
|
|
"Search persons result"
|
|
type Persons {
|
|
"Person elements"
|
|
elements: [Person]!
|
|
"Total elements"
|
|
total: Int!
|
|
}
|
|
|
|
type PhoneAddress {
|
|
info: String
|
|
phone: String
|
|
}
|
|
|
|
"A picture"
|
|
type Picture {
|
|
"The picture's alternative text"
|
|
alt: String
|
|
"The picture's ID"
|
|
id: ID
|
|
"The picture's name"
|
|
name: String
|
|
"The picture's full URL"
|
|
url: String
|
|
}
|
|
|
|
type RootMutationType {
|
|
"Change default actor for user"
|
|
changeDefaultActor(preferredUsername: String!): User
|
|
"Create a comment"
|
|
createComment(actorUsername: String!, text: String!): Comment
|
|
"Create an event"
|
|
createEvent(
|
|
beginsOn: DateTime!,
|
|
category: String!,
|
|
description: String!,
|
|
endsOn: DateTime,
|
|
onlineAddress: String,
|
|
organizerActorId: ID!,
|
|
phoneAddress: String,
|
|
#The picture for the event, either as an object or directly the ID of an existing Picture
|
|
picture: PictureInput,
|
|
public: Boolean,
|
|
publishAt: DateTime,
|
|
state: Int,
|
|
status: Int,
|
|
title: String!,
|
|
visibility: EventVisibility = PRIVATE
|
|
): Event
|
|
"Create a Feed Token"
|
|
createFeedToken(actorId: Int): FeedToken
|
|
"Create a group"
|
|
createGroup(
|
|
#The actor's username which will be the admin (otherwise user's default one)
|
|
adminActorUsername: String,
|
|
#The avatar for the group, either as an object or directly the ID of an existing Picture
|
|
avatar: PictureInput,
|
|
#The banner for the group, either as an object or directly the ID of an existing Picture
|
|
banner: PictureInput,
|
|
#The summary for the group
|
|
description: String = "",
|
|
#The displayed name for the group
|
|
name: String,
|
|
#The name for the group
|
|
preferredUsername: String!
|
|
): Group
|
|
"Create a new person for user"
|
|
createPerson(
|
|
#The avatar for the profile, either as an object or directly the ID of an existing Picture
|
|
avatar: PictureInput,
|
|
#The banner for the profile, either as an object or directly the ID of an existing Picture
|
|
banner: PictureInput,
|
|
#The displayed name for the new profile
|
|
name: String = "",
|
|
preferredUsername: String!,
|
|
#The summary for the new profile
|
|
summary: String = ""
|
|
): Person
|
|
"Create an user"
|
|
createUser(email: String!, password: String!): User
|
|
"Delete an event"
|
|
deleteEvent(actorId: Int!, eventId: Int!): DeletedObject
|
|
"Delete a feed token"
|
|
deleteFeedToken(token: String!): DeletedFeedToken
|
|
"Delete a group"
|
|
deleteGroup(actorId: Int!, groupId: Int!): DeletedObject
|
|
"Join an event"
|
|
joinEvent(actorId: Int!, eventId: Int!): Participant
|
|
"Join a group"
|
|
joinGroup(actorId: Int!, groupId: Int!): Member
|
|
"Leave an event"
|
|
leaveEvent(actorId: Int!, eventId: Int!): DeletedParticipant
|
|
"Leave an event"
|
|
leaveGroup(actorId: Int!, groupId: Int!): DeletedMember
|
|
"Login an user"
|
|
login(email: String!, password: String!): Login
|
|
"Register a first profile on registration"
|
|
registerPerson(
|
|
#The avatar for the profile, either as an object or directly the ID of an existing Picture
|
|
avatar: PictureInput,
|
|
#The banner for the profile, either as an object or directly the ID of an existing Picture
|
|
banner: PictureInput,
|
|
#The email from the user previously created
|
|
email: String!,
|
|
#The displayed name for the new profile
|
|
name: String = "",
|
|
preferredUsername: String!,
|
|
#The summary for the new profile
|
|
summary: String = ""
|
|
): Person
|
|
"Resend registration confirmation token"
|
|
resendConfirmationEmail(email: String!, locale: String = "en"): String
|
|
"Reset user password"
|
|
resetPassword(locale: String = "en", password: String!, token: String!): Login
|
|
"Send a link through email to reset user password"
|
|
sendResetPassword(email: String!, locale: String = "en"): String
|
|
"Upload a picture"
|
|
uploadPicture(actorId: ID!, alt: String, file: Upload!, name: String!): Picture
|
|
"Validate an user after registration"
|
|
validateUser(token: String!): Login
|
|
}
|
|
|
|
"""
|
|
Root Query
|
|
"""
|
|
type RootQueryType {
|
|
"Get the instance config"
|
|
config: Config
|
|
"Get an event by uuid"
|
|
event(uuid: UUID!): Event
|
|
"Get all events"
|
|
events(limit: Int = 10, page: Int = 1): [Event]
|
|
"Get a group by it's preferred username"
|
|
group(preferredUsername: String!): Group
|
|
"Get all groups"
|
|
groups(limit: Int = 10, page: Int = 1): [Group]
|
|
"Get the persons for an user"
|
|
identities: [Person]
|
|
"Get the current actor for the logged-in user"
|
|
loggedPerson: Person
|
|
"Get the current user"
|
|
loggedUser: User
|
|
"Get all participants for an event uuid"
|
|
participants(limit: Int = 10, page: Int = 1, uuid: UUID!): [Participant]
|
|
"Get a person by it's preferred username"
|
|
person(preferredUsername: String!): Person
|
|
"Get a picture"
|
|
picture(id: String!): Picture
|
|
"Reverse geocode coordinates"
|
|
reverseGeocode(latitude: Float!, longitude: Float!): [Address]
|
|
"Search for an address"
|
|
searchAddress(query: String!): [Address]
|
|
"Search events"
|
|
searchEvents(limit: Int = 10, page: Int = 1, search: String!): Events
|
|
"Search groups"
|
|
searchGroups(limit: Int = 10, page: Int = 1, search: String!): Groups
|
|
"Search persons"
|
|
searchPersons(limit: Int = 10, page: Int = 1, search: String!): Persons
|
|
"Get the list of tags"
|
|
tags(limit: Int = 10, page: Int = 1): [Tag]!
|
|
"Get an user"
|
|
user(id: ID!): User
|
|
"List instance users"
|
|
users(direction: SortDirection = DESC, limit: Int = 10, page: Int = 1, sort: SortableUserField = ID): Users
|
|
}
|
|
|
|
"A tag"
|
|
type Tag {
|
|
"The tag's ID"
|
|
id: ID
|
|
"Related tags to this tag"
|
|
related: [Tag]
|
|
"The tags's slug"
|
|
slug: String
|
|
"The tag's title"
|
|
title: String
|
|
}
|
|
|
|
"A local user of Mobilizon"
|
|
type User {
|
|
"The datetime the last activation/confirmation token was sent"
|
|
confirmationSentAt: DateTime
|
|
"The account activation/confirmation token"
|
|
confirmationToken: String
|
|
"The datetime when the user was confirmed/activated"
|
|
confirmedAt: DateTime
|
|
"The user's default actor"
|
|
defaultActor: Person
|
|
"The user's email"
|
|
email: String!
|
|
"A list of the feed tokens for this user"
|
|
feedTokens: [FeedToken]
|
|
"The user's ID"
|
|
id: ID!
|
|
"The user's list of profiles (identities)"
|
|
profiles: [Person]!
|
|
"The datetime last reset password email was sent"
|
|
resetPasswordSentAt: DateTime
|
|
"The token sent when requesting password token"
|
|
resetPasswordToken: String
|
|
}
|
|
|
|
"Users list"
|
|
type Users {
|
|
"User elements"
|
|
elements: [User]!
|
|
"Total elements"
|
|
total: Int!
|
|
}
|
|
|
|
"The list of types an actor can be"
|
|
enum ActorType {
|
|
#An ActivityPub Application
|
|
APPLICATION
|
|
#An ActivityPub Group
|
|
GROUP
|
|
#An ActivityPub Organization
|
|
ORGANIZATION
|
|
#An ActivityPub Person
|
|
PERSON
|
|
#An ActivityPub Service
|
|
SERVICE
|
|
}
|
|
|
|
"The list of visibility options for a comment"
|
|
enum CommentVisibility {
|
|
#visible only to people invited
|
|
INVITE
|
|
#Visible only after a moderator accepted
|
|
MODERATED
|
|
#Visible only to people members of the group or followers of the person
|
|
PRIVATE
|
|
#Publically listed and federated. Can be shared.
|
|
PUBLIC
|
|
#Visible only to people with the link - or invited
|
|
UNLISTED
|
|
}
|
|
|
|
"The list of possible options for the event's status"
|
|
enum EventStatus {
|
|
#The event is cancelled
|
|
CANCELLED
|
|
#The event is confirmed
|
|
CONFIRMED
|
|
#The event is tentative
|
|
TENTATIVE
|
|
}
|
|
|
|
"The list of visibility options for an event"
|
|
enum EventVisibility {
|
|
#visible only to people invited
|
|
INVITE
|
|
#Visible only after a moderator accepted
|
|
MODERATED
|
|
#Visible only to people members of the group or followers of the person
|
|
PRIVATE
|
|
#Publically listed and federated. Can be shared.
|
|
PUBLIC
|
|
#Visible only to people with the link - or invited
|
|
UNLISTED
|
|
}
|
|
|
|
"""
|
|
The types of Group that exist
|
|
"""
|
|
enum GroupType {
|
|
#A public group of many actors
|
|
COMMUNITY
|
|
#A private group of persons
|
|
GROUP
|
|
}
|
|
|
|
"""
|
|
Describes how an actor is opened to follows
|
|
"""
|
|
enum Openness {
|
|
#The actor can only be followed by invitation
|
|
INVITE_ONLY
|
|
#The actor needs to accept the following before it's effective
|
|
MODERATED
|
|
#The actor is open to followings
|
|
OPEN
|
|
}
|
|
|
|
"Available sort directions"
|
|
enum SortDirection {
|
|
ASC
|
|
DESC
|
|
}
|
|
|
|
"The list of possible options for the event's status"
|
|
enum SortableUserField {
|
|
ID
|
|
}
|
|
|
|
"An attached picture or a link to a picture"
|
|
input PictureInput {
|
|
picture: PictureInputObject
|
|
pictureId: String
|
|
}
|
|
|
|
"An attached picture"
|
|
input PictureInputObject {
|
|
actorId: ID
|
|
alt: String
|
|
file: Upload!
|
|
name: String!
|
|
}
|
|
|
|
|
|
"""
|
|
The `Point` scalar type represents Point geographic information compliant string data,
|
|
represented as floats separated by a semi-colon. The geodetic system is WGS 84
|
|
"""
|
|
scalar Point
|
|
|
|
"""
|
|
The `DateTime` scalar type represents a date and time in the UTC
|
|
timezone. The DateTime appears in a JSON response as an ISO8601 formatted
|
|
string, including UTC timezone (\"Z\"). The parsed date and time string will
|
|
be converted to UTC and any UTC offset other than 0 will be rejected.
|
|
"""
|
|
scalar DateTime
|
|
|
|
"""
|
|
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
|
|
|
|
"""
|
|
Represents an uploaded file.
|
|
"""
|
|
scalar Upload
|