Files
Archivum/backend/internal/graph/schema.graphql
brasse b e6b64e3344 feat: Archivum skeleton — Go/GraphQL backend + Vue 3 PWA frontend
Full project scaffold: multi-stage Dockerfile (ARM64/AMD64), AsciiDoc↔TipTap
bridge, Setup Wizard, CodeMirror source editor, Git-backed storage layer,
LDAP+JWT auth skeleton, Tailwind mobile-first layout, and VS Code build/push
tasks targeting registry at 192.168.0.19:5000.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 13:07:01 +02:00

88 lines
2.1 KiB
GraphQL

type Query {
# Returns REQUIRE_SETUP if config is missing.
systemStatus: SystemStatus!
# 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!
# 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!
}
# ── Types ──────────────────────────────────────────────────────────────────────
enum SystemStatus {
OK
REQUIRE_SETUP
}
type Document {
slug: String!
content: String!
meta: DocumentMeta!
}
type DocumentMeta {
slug: String!
title: String!
updatedAt: 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!
}