// Code generated by github.com/99designs/gqlgen, DO NOT EDIT.

package model

type AuthPayload struct {
	Token string `json:"token"`
	User  *User  `json:"user"`
}

type Message struct {
	ID              string   `json:"id"`
	SenderID        string   `json:"senderId"`
	Sender          *User    `json:"sender"`
	Content         string   `json:"content"`
	SentAt          string   `json:"sentAt"`
	Receivers       []string `json:"receivers"`
	ReceiverObjects []*User  `json:"receiverObjects"`
	CreatedAt       string   `json:"createdAt"`
	UpdatedAt       string   `json:"updatedAt"`
}

type Mutation struct {
}

type NewMessage struct {
	Content   string   `json:"content"`
	Receivers []string `json:"receivers"`
}

type NewNote struct {
	Title     string `json:"title"`
	Content   string `json:"content"`
	UserID    string `json:"userId"`
	ServiceID string `json:"serviceId"`
}

type NewPermission struct {
	Code        string `json:"code"`
	Description string `json:"description"`
}

type NewRole struct {
	Name        string   `json:"name"`
	Description string   `json:"description"`
	Permissions []string `json:"permissions"`
}

type NewService struct {
	Name         string   `json:"name"`
	Description  *string  `json:"description,omitempty"`
	CreatedByID  string   `json:"createdById"`
	Participants []string `json:"participants"`
}

type NewTask struct {
	Title       string  `json:"title"`
	Content     string  `json:"content"`
	CreatedByID string  `json:"createdById"`
	AssigneeID  *string `json:"assigneeId,omitempty"`
	StatusID    *string `json:"statusId,omitempty"`
	DueDate     *string `json:"dueDate,omitempty"`
	Priority    string  `json:"priority"`
}

type NewTaskStatus struct {
	Code  string `json:"code"`
	Label string `json:"label"`
}

type NewUser struct {
	Email    string   `json:"email"`
	Password string   `json:"password"`
	Roles    []string `json:"roles"`
}

type NewWorkflowTemplate struct {
	Name        string  `json:"name"`
	Description *string `json:"description,omitempty"`
	Definition  string  `json:"definition"`
	IsActive    *bool   `json:"isActive,omitempty"`
}

type Note struct {
	ID        string   `json:"id"`
	Title     string   `json:"title"`
	Content   string   `json:"content"`
	UserID    string   `json:"userId"`
	User      *User    `json:"user"`
	ServiceID string   `json:"serviceId"`
	Service   *Service `json:"service"`
	CreatedAt string   `json:"createdAt"`
	UpdatedAt string   `json:"updatedAt"`
}

type Permission struct {
	ID          string `json:"id"`
	Code        string `json:"code"`
	Description string `json:"description"`
}

type Query struct {
}

type Role struct {
	ID          string        `json:"id"`
	Name        string        `json:"name"`
	Description string        `json:"description"`
	Permissions []*Permission `json:"permissions"`
}

type Service struct {
	ID           string  `json:"id"`
	Name         string  `json:"name"`
	Description  *string `json:"description,omitempty"`
	CreatedByID  string  `json:"createdById"`
	CreatedBy    *User   `json:"createdBy"`
	Participants []*User `json:"participants"`
	Tasks        []*Task `json:"tasks"`
	CreatedAt    string  `json:"createdAt"`
	UpdatedAt    string  `json:"updatedAt"`
}

type StartWorkflowInput struct {
	ServiceID *string `json:"serviceId,omitempty"`
	Context   *string `json:"context,omitempty"`
}

type Subscription struct {
}

type Task struct {
	ID          string      `json:"id"`
	Title       string      `json:"title"`
	Content     string      `json:"content"`
	CreatedByID string      `json:"createdById"`
	CreatedBy   *User       `json:"createdBy"`
	UpdatedByID string      `json:"updatedById"`
	UpdatedBy   *User       `json:"updatedBy"`
	AssigneeID  *string     `json:"assigneeId,omitempty"`
	Assignee    *User       `json:"assignee,omitempty"`
	StatusID    *string     `json:"statusId,omitempty"`
	Status      *TaskStatus `json:"status,omitempty"`
	DueDate     *string     `json:"dueDate,omitempty"`
	Priority    string      `json:"priority"`
	CreatedAt   string      `json:"createdAt"`
	UpdatedAt   string      `json:"updatedAt"`
}

type TaskStatus struct {
	ID        string  `json:"id"`
	Code      string  `json:"code"`
	Label     string  `json:"label"`
	Tasks     []*Task `json:"tasks"`
	CreatedAt string  `json:"createdAt"`
	UpdatedAt string  `json:"updatedAt"`
}

type UpdateMessageInput struct {
	Content   *string  `json:"content,omitempty"`
	Receivers []string `json:"receivers,omitempty"`
}

type UpdateNoteInput struct {
	Title     *string `json:"title,omitempty"`
	Content   *string `json:"content,omitempty"`
	UserID    *string `json:"userId,omitempty"`
	ServiceID *string `json:"serviceId,omitempty"`
}

type UpdatePermissionInput struct {
	Code        *string `json:"code,omitempty"`
	Description *string `json:"description,omitempty"`
}

type UpdateRoleInput struct {
	Name        *string  `json:"name,omitempty"`
	Description *string  `json:"description,omitempty"`
	Permissions []string `json:"permissions"`
}

type UpdateServiceInput struct {
	Name         *string  `json:"name,omitempty"`
	Description  *string  `json:"description,omitempty"`
	CreatedByID  *string  `json:"createdById,omitempty"`
	Participants []string `json:"participants"`
}

type UpdateTaskInput struct {
	Title       *string `json:"title,omitempty"`
	Content     *string `json:"content,omitempty"`
	CreatedByID *string `json:"createdById,omitempty"`
	AssigneeID  *string `json:"assigneeId,omitempty"`
	StatusID    *string `json:"statusId,omitempty"`
	DueDate     *string `json:"dueDate,omitempty"`
	Priority    *string `json:"priority,omitempty"`
}

type UpdateTaskStatusInput struct {
	Code  *string `json:"code,omitempty"`
	Label *string `json:"label,omitempty"`
}

type UpdateUserInput struct {
	Email    *string  `json:"email,omitempty"`
	Password *string  `json:"password,omitempty"`
	Roles    []string `json:"roles"`
}

type UpdateWorkflowTemplateInput struct {
	Name        *string `json:"name,omitempty"`
	Description *string `json:"description,omitempty"`
	Definition  *string `json:"definition,omitempty"`
	IsActive    *bool   `json:"isActive,omitempty"`
}

type User struct {
	ID        string  `json:"id"`
	Email     string  `json:"email"`
	Roles     []*Role `json:"roles"`
	CreatedAt string  `json:"createdAt"`
	UpdatedAt string  `json:"updatedAt"`
}

type WorkflowInstance struct {
	ID          string            `json:"id"`
	Template    *WorkflowTemplate `json:"template"`
	Status      string            `json:"status"`
	Context     *string           `json:"context,omitempty"`
	Service     *Service          `json:"service,omitempty"`
	CreatedAt   string            `json:"createdAt"`
	UpdatedAt   string            `json:"updatedAt"`
	CompletedAt *string           `json:"completedAt,omitempty"`
}

type WorkflowNode struct {
	ID          string  `json:"id"`
	NodeKey     string  `json:"nodeKey"`
	NodeType    string  `json:"nodeType"`
	Status      string  `json:"status"`
	Task        *Task   `json:"task,omitempty"`
	InputData   *string `json:"inputData,omitempty"`
	OutputData  *string `json:"outputData,omitempty"`
	CreatedAt   string  `json:"createdAt"`
	UpdatedAt   string  `json:"updatedAt"`
	StartedAt   *string `json:"startedAt,omitempty"`
	CompletedAt *string `json:"completedAt,omitempty"`
}

type WorkflowTemplate struct {
	ID          string  `json:"id"`
	Name        string  `json:"name"`
	Description *string `json:"description,omitempty"`
	Definition  string  `json:"definition"`
	IsActive    bool    `json:"isActive"`
	CreatedBy   *User   `json:"createdBy"`
	CreatedAt   string  `json:"createdAt"`
	UpdatedAt   string  `json:"updatedAt"`
}
