Files
Archivum/backend/internal/graph/schema.graphql
2026-04-10 18:31:38 +02:00

128 lines
2.9 KiB
GraphQL

type Query {
# Returns REQUIRE_SETUP if config is missing.
systemStatus: SystemStatus!
# Fetch current configuration (admin only).
config: AppConfig!
# List directories on the server for UI pickers.
serverDirectories(path: String): [ServerDirectory!]!
# Fetch a document by its slug path.
document(slug: String!): Document
# List documents under an optional path prefix.
documents(prefix: String): [DocumentMeta!]!
# Commit history for a document.
history(slug: String!): [CommitEntry!]!
# Unified diff between two commits for a document.
diff(slug: String!, fromHash: String!, toHash: String!): String!
# Raw content of a document at a specific commit.
documentAtCommit(slug: String!, hash: String!): String!
}
type Mutation {
# First-run setup.
setup(input: SetupInput!): Boolean!
# Test an LDAP configuration before saving.
testLdapConnection(input: LDAPInput!): LDAPTestResult!
# Authenticate and receive a bearer token.
login(username: String!, password: String!): String!
# Invalidate the current session.
logout: Boolean!
# Save (create or update) a document.
saveDocument(input: SaveDocumentInput!): Document!
# Delete a document.
deleteDocument(slug: String!): Boolean!
# Modify LDAP Configuration (admin only).
updateLdapConfig(input: LDAPInput): Boolean!
# Modify Storage Path (admin only).
updateStoragePath(path: String!): Boolean!
# Change the current user's password.
changePassword(old: String!, new: String!): Boolean!
}
# ── Types ──────────────────────────────────────────────────────────────────────
enum SystemStatus {
OK
REQUIRE_SETUP
}
type AppConfig {
storagePath: String!
ldap: LDAPConfig
}
type LDAPConfig {
host: String!
port: Int!
baseDN: String!
bindDN: String!
}
type ServerDirectory {
name: String!
path: String!
}
type Document {
slug: String!
content: String!
meta: DocumentMeta!
}
type DocumentMeta {
slug: String!
title: String!
updatedAt: String!
}
type LDAPTestResult {
success: Boolean!
message: String!
}
type CommitEntry {
hash: String!
author: String!
email: String!
date: String!
subject: String!
}
# ── Inputs ─────────────────────────────────────────────────────────────────────
input SetupInput {
storagePath: String!
adminUser: String!
adminPass: String!
ldap: LDAPInput
jwtSecret: String!
}
input LDAPInput {
host: String!
port: Int!
baseDN: String!
bindDN: String!
bindPassword: String!
}
input SaveDocumentInput {
slug: String!
content: String!
commitMessage: String!
}