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

1278 lines
26 KiB
GraphQL
Raw Normal View History

# source: http://localhost:4000/api
# timestamp: Mon Oct 14 2019 10:27:57 GMT+0200 (Central European Summer Time)
2019-04-26 15:22:16 +02:00
schema {
query: RootQueryType
mutation: RootMutationType
2019-04-26 15:22:16 +02:00
}
"""An action log"""
type ActionLog {
"""The action that was done"""
action: ActionLogAction
"""The actor that acted"""
actor: Actor
"""Internal ID for this comment"""
id: ID
"""The time when the action was performed"""
insertedAt: DateTime
"""The object that was acted upon"""
object: ActionLogObject
}
enum ActionLogAction {
EVENT_DELETION
EVENT_UPDATE
NOTE_CREATION
NOTE_DELETION
REPORT_UPDATE_CLOSED
REPORT_UPDATE_OPENED
REPORT_UPDATE_RESOLVED
}
"""The objects that can be in an action log"""
interface ActionLogObject {
"""Internal ID for this object"""
id: ID
}
"""An ActivityPub actor"""
2019-04-26 15:22:16 +02:00
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: ID
"""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
}
"""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
2019-04-26 15:22:16 +02:00
}
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
id: ID
"""The address's locality"""
locality: String
originId: String
postalCode: String
region: String
"""The address's street name (with number)"""
street: String
url: String
}
input AddressInput {
country: String
description: String
"""The floor this event is at"""
floor: String
"""The geocoordinates for the point where this address is"""
geom: Point
id: ID
"""The address's locality"""
locality: String
originId: String
postalCode: String
region: String
"""The address's street name (with number)"""
street: String
url: String
}
"""A comment"""
2019-04-26 15:22:16 +02:00
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
}
"""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
"""Publicly listed and federated. Can be shared."""
PUBLIC
"""Visible only to people with the link - or invited"""
UNLISTED
}
"""A config object"""
2019-04-26 15:22:16 +02:00
type Config {
description: String
name: String
registrationsOpen: Boolean
2019-04-26 15:22:16 +02:00
}
type Dashboard {
"""Last public event publish"""
lastPublicEventPublished: Event
"""The number of local comments"""
numberOfComments: Int
"""The number of local events"""
numberOfEvents: Int
"""The number of current opened reports"""
numberOfReports: Int
"""The number of local users"""
numberOfUsers: Int
}
"""
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
"""Represents a deleted feed_token"""
2019-04-26 15:22:16 +02:00
type DeletedFeedToken {
actor: DeletedObject
user: DeletedObject
2019-04-26 15:22:16 +02:00
}
"""Represents a deleted member"""
2019-04-26 15:22:16 +02:00
type DeletedMember {
actor: DeletedObject
parent: DeletedObject
2019-04-26 15:22:16 +02:00
}
"""A struct containing the id of the deleted object"""
2019-04-26 15:22:16 +02:00
type DeletedObject {
id: ID
2019-04-26 15:22:16 +02:00
}
"""Represents a deleted participant"""
2019-04-26 15:22:16 +02:00
type DeletedParticipant {
actor: DeletedObject
event: DeletedObject
id: ID
2019-04-26 15:22:16 +02:00
}
"""An event"""
type Event implements ActionLogObject {
"""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
"""Whether or not the event is a draft"""
draft: Boolean
"""Datetime for when the event ends"""
endsOn: DateTime
"""Internal ID for this event"""
id: ID
"""The event's visibility"""
joinOptions: EventJoinOptions
"""Whether the event is local or not"""
local: Boolean
"""Online address of the event"""
2019-09-09 11:21:42 +02:00
onlineAddress: String
"""The event options"""
options: EventOptions
"""The event's organizer (as a person)"""
organizerActor: Actor
participantStats: ParticipantStats
"""The event's participants"""
participants(actorId: ID, limit: Int = 10, page: Int = 1, roles: String = ""): [Participant]
"""Phone address for the event"""
2019-09-09 11:21:42 +02:00
phoneAddress: String
"""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
}
"""The list of possible options for the event's status"""
enum EventCommentModeration {
"""Anyone can comment under the event"""
ALLOW_ALL
"""No one can comment except for the admin"""
CLOSED
"""Every comment has to be moderated by the admin"""
MODERATED
}
"""The list of join options for an event"""
enum EventJoinOptions {
"""Anyone can join and is automatically accepted"""
FREE
"""Participants must be invited"""
INVITE
"""Manual acceptation"""
RESTRICTED
}
type EventOffer {
"""The price amount for this offer"""
price: Float
"""The currency for this price offer"""
priceCurrency: String
"""The URL to access to this offer"""
url: String
}
input EventOfferInput {
"""The price amount for this offer"""
price: Float
"""The currency for this price offer"""
priceCurrency: String
"""The URL to access to this offer"""
url: String
}
type EventOptions {
"""The list of special attendees"""
attendees: [String]
"""The policy on public comment moderation under the event"""
commentModeration: EventCommentModeration
"""The maximum attendee capacity for this event"""
maximumAttendeeCapacity: Int
"""The list of offers to show for this event"""
offers: [EventOffer]
"""The list of participation conditions to accept to join this event"""
participationConditions: [EventParticipationCondition]
"""The list of the event"""
program: String
"""The number of remaining seats for this event"""
remainingAttendeeCapacity: Int
"""Whether or not to show the participation price"""
showParticipationPrice: Boolean
"""Whether or not to show the number of remaining seats for this event"""
showRemainingAttendeeCapacity: Boolean
}
input EventOptionsInput {
"""The list of special attendees"""
attendees: [String]
"""The policy on public comment moderation under the event"""
commentModeration: EventCommentModeration
"""The maximum attendee capacity for this event"""
maximumAttendeeCapacity: Int
"""The list of offers to show for this event"""
offers: [EventOfferInput]
"""The list of participation conditions to accept to join this event"""
participationConditions: [EventParticipationConditionInput]
"""The list of the event"""
program: String
"""The number of remaining seats for this event"""
remainingAttendeeCapacity: Int
"""Whether or not to show the participation price"""
showParticipationPrice: Boolean
"""Whether or not to show the number of remaining seats for this event"""
showRemainingAttendeeCapacity: Boolean
}
type EventParticipationCondition {
"""The content for this condition"""
content: String
"""The title for this condition"""
title: String
"""The URL to access this condition"""
url: String
}
input EventParticipationConditionInput {
"""The content for this condition"""
content: String
"""The title for this condition"""
title: String
"""The URL to access this condition"""
url: String
}
"""Search events result"""
2019-04-26 15:22:16 +02:00
type Events {
"""Event elements"""
elements: [Event]!
"""Total elements"""
total: Int!
}
"""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 members of the group or followers of the person"""
PRIVATE
"""Publicly listed and federated. Can be shared."""
PUBLIC
"""Visible only after a moderator accepted"""
RESTRICTED
"""Visible only to people with the link - or invited"""
UNLISTED
2019-04-26 15:22:16 +02:00
}
"""Represents a participant to an event"""
2019-04-26 15:22:16 +02:00
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
2019-04-26 15:22:16 +02:00
}
"""
Represents an actor's follower
2019-04-26 15:22:16 +02:00
"""
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
2019-04-26 15:22:16 +02:00
}
"""
Represents a group of actors
2019-04-26 15:22:16 +02:00
"""
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: ID
"""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
2019-05-31 17:58:03 +02:00
}
"""Search groups result"""
2019-04-26 15:22:16 +02:00
type Groups {
"""Group elements"""
elements: [Group]!
"""Total elements"""
total: Int!
}
"""
The types of Group that exist
"""
enum GroupType {
"""A public group of many actors"""
COMMUNITY
"""A private group of persons"""
GROUP
2019-04-26 15:22:16 +02:00
}
"""A JWT and the associated user ID"""
2019-04-26 15:22:16 +02:00
type Login {
"""A JWT Token for this session"""
2019-08-21 11:25:09 +02:00
accessToken: String!
"""A JWT Token to refresh the access token"""
refreshToken: String!
"""The user associated to this session"""
user: User!
2019-04-26 15:22:16 +02:00
}
"""
Represents a member of a group
2019-04-26 15:22:16 +02:00
"""
type Member {
"""Which profile is member of"""
actor: Person
"""Of which the profile is member"""
parent: Group
"""The role of this membership"""
role: Int
2019-04-26 15:22:16 +02:00
}
"""
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
}
"""Represents a participant to an event"""
2019-04-26 15:22:16 +02:00
type Participant {
"""The actor that participates to the event"""
actor: Actor
"""The event which the actor participates in"""
event: Event
"""The participation ID"""
id: ID
"""The role of this actor at this event"""
role: ParticipantRoleEnum
}
enum ParticipantRoleEnum {
ADMINISTRATOR
CREATOR
MODERATOR
NOT_APPROVED
PARTICIPANT
REJECTED
2019-04-26 15:22:16 +02:00
}
type ParticipantStats {
"""The number of approved participants"""
approved: Int
"""The number of simple participants (excluding creators)"""
participants: Int
"""The number of rejected participants"""
rejected: Int
"""The number of unapproved participants"""
unapproved: Int
}
2019-04-26 15:22:16 +02:00
"""
Represents a person identity
2019-04-26 15:22:16 +02:00
"""
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
"""Internal ID for this person"""
id: ID
"""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 list of events this person goes to"""
participations(eventId: ID): [Participant]
"""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
2019-05-31 17:58:03 +02:00
}
"""Search persons result"""
2019-04-26 15:22:16 +02:00
type Persons {
"""Person elements"""
elements: [Person]!
"""Total elements"""
total: Int!
2019-04-26 15:22:16 +02:00
}
"""A picture"""
type Picture {
"""The picture's alternative text"""
alt: String
"""The picture's detected content type"""
contentType: String
"""The picture's ID"""
id: ID
"""The picture's name"""
name: String
"""The picture's size"""
size: Int
"""The picture's full URL"""
url: String
}
"""An attached picture or a link to a picture"""
input PictureInput {
picture: PictureInputObject
pictureId: ID
}
"""An attached picture"""
input PictureInputObject {
actorId: ID
alt: String
file: Upload!
name: String!
}
2019-04-26 15:22:16 +02:00
"""
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
2019-04-26 15:22:16 +02:00
"""
scalar Point
2019-08-21 11:25:09 +02:00
"""Token"""
type RefreshedToken {
"""Generated access token"""
accessToken: String!
"""Generated refreshed token"""
refreshToken: String!
}
"""A report object"""
type Report implements ActionLogObject {
"""The comments that are reported"""
comments: [Comment]
"""The comment the reporter added about this report"""
content: String
"""The event that is being reported"""
event: Event
"""The internal ID of the report"""
id: ID
"""When the report was created"""
insertedAt: DateTime
"""The notes made on the event"""
notes: [ReportNote]
"""The actor that is being reported"""
reported: Actor
"""The actor that created the report"""
reporter: Actor
"""Whether the report is still active"""
status: ReportStatus
"""When the report was updated"""
updatedAt: DateTime
"""The URI of the report"""
uri: String
2019-05-31 17:58:03 +02:00
}
2019-04-26 15:22:16 +02:00
"""A report note object"""
type ReportNote implements ActionLogObject {
"""The content of the note"""
content: String
"""The internal ID of the report note"""
id: ID
"""When the report note was created"""
insertedAt: DateTime
"""The moderator who added the note"""
moderator: Actor
"""The report on which this note is added"""
report: Report
2019-05-31 17:58:03 +02:00
}
"""The list of possible statuses for a report object"""
enum ReportStatus {
"""The report has been closed"""
CLOSED
"""The report has been opened"""
OPEN
"""The report has been marked as resolved"""
RESOLVED
2019-04-26 15:22:16 +02:00
}
type RootMutationType {
"""Change default actor for user"""
changeDefaultActor(preferredUsername: String!): User
"""Change an user password"""
changePassword(newPassword: String!, oldPassword: String!): User
"""Create a comment"""
createComment(actorUsername: String!, text: String!): Comment
"""Create an event"""
createEvent(
beginsOn: DateTime!
category: String = "meeting"
description: String!