cala-server 0.2.2

Server to sync other cala deployments
Documentation
type Account {
	id: ID!
	accountId: UUID!
	version: Int!
	code: String!
	name: String!
	normalBalanceType: DebitOrCredit!
	status: Status!
	externalId: String
	description: String
	metadata: JSON
	createdAt: Timestamp!
	modifiedAt: Timestamp!
	balance(journalId: UUID!, currency: CurrencyCode!): Balance
}

type AccountConnection {
	"""
	Information to aid in pagination.
	"""
	pageInfo: PageInfo!
	"""
	A list of edges.
	"""
	edges: [AccountEdge!]!
	"""
	A list of nodes.
	"""
	nodes: [Account!]!
}

input AccountCreateInput {
	accountId: UUID!
	externalId: String
	code: String!
	name: String!
	normalBalanceType: DebitOrCredit! = CREDIT
	description: String
	status: Status! = ACTIVE
	metadata: JSON
	accountSetIds: [UUID!]
}

type AccountCreatePayload {
	account: Account!
}

"""
An edge in a connection.
"""
type AccountEdge {
	"""
	The item at the end of the edge
	"""
	node: Account!
	"""
	A cursor for use in pagination
	"""
	cursor: String!
}

type AccountSet {
	id: ID!
	accountSetId: UUID!
	version: Int!
	journalId: UUID!
	name: String!
	normalBalanceType: DebitOrCredit!
	description: String
	metadata: JSON
	createdAt: Timestamp!
	modifiedAt: Timestamp!
	balance(currency: CurrencyCode!): Balance
}

input AccountSetCreateInput {
	accountSetId: UUID!
	journalId: UUID!
	name: String!
	normalBalanceType: DebitOrCredit! = CREDIT
	description: String
	metadata: JSON
}

type AccountSetCreatePayload {
	accountSet: AccountSet!
}

enum AccountSetMemberType {
	ACCOUNT
	ACCOUNT_SET
}

input AddToAccountSetInput {
	accountSetId: UUID!
	memberId: UUID!
	memberType: AccountSetMemberType!
}

type AddToAccountSetPayload {
	accountSet: AccountSet!
}

type Balance {
	id: ID!
	journalId: UUID!
	accountId: UUID!
	entryId: UUID!
	currency: CurrencyCode!
	settled: BalanceAmount!
	pending: BalanceAmount!
	encumbrance: BalanceAmount!
	version: Int!
}

type BalanceAmount {
	drBalance: Money!
	crBalance: Money!
	normalBalance: Money!
	entryId: UUID!
}


input CalaOutboxImportJobCreateInput {
	name: String!
	description: String
	endpoint: String!
}

type CalaOutboxImportJobCreatePayload {
	job: Job!
}

scalar CurrencyCode

scalar Date

enum DebitOrCredit {
	DEBIT
	CREDIT
}

scalar Decimal

type EntryInput {
	entryType: Expression!
	accountId: Expression!
	layer: Expression!
	direction: Expression!
	units: Expression!
	currency: Expression!
	description: Expression
}

scalar Expression




scalar JSON

type Job {
	id: ID!
	jobId: UUID!
	name: String!
	description: String
}

type JobConnection {
	"""
	Information to aid in pagination.
	"""
	pageInfo: PageInfo!
	"""
	A list of edges.
	"""
	edges: [JobEdge!]!
	"""
	A list of nodes.
	"""
	nodes: [Job!]!
}

"""
An edge in a connection.
"""
type JobEdge {
	"""
	The item at the end of the edge
	"""
	node: Job!
	"""
	A cursor for use in pagination
	"""
	cursor: String!
}

type Journal {
	id: ID!
	journalId: UUID!
	version: Int!
	name: String!
	status: Status!
	description: String
	createdAt: Timestamp!
	modifiedAt: Timestamp!
}

input JournalCreateInput {
	journalId: UUID!
	name: String!
	status: Status! = ACTIVE
	description: String
}

type JournalCreatePayload {
	journal: Journal!
}

type Money {
	units: Decimal!
	currency: CurrencyCode!
}

type Mutation {
	calaOutboxImportJobCreate(input: CalaOutboxImportJobCreateInput!): CalaOutboxImportJobCreatePayload!
	accountCreate(input: AccountCreateInput!): AccountCreatePayload!
	accountSetCreate(input: AccountSetCreateInput!): AccountSetCreatePayload!
	addToAccountSet(input: AddToAccountSetInput!): AddToAccountSetPayload!
	journalCreate(input: JournalCreateInput!): JournalCreatePayload!
	txTemplateCreate(input: TxTemplateCreateInput!): TxTemplateCreatePayload!
	postTransaction(input: TransactionInput!): PostTransactionPayload!
}

"""
Information about pagination in a connection
"""
type PageInfo {
	"""
	When paginating backwards, are there more items?
	"""
	hasPreviousPage: Boolean!
	"""
	When paginating forwards, are there more items?
	"""
	hasNextPage: Boolean!
	"""
	When paginating backwards, the cursor to continue.
	"""
	startCursor: String
	"""
	When paginating forwards, the cursor to continue.
	"""
	endCursor: String
}

enum ParamDataType {
	STRING
	INTEGER
	DECIMAL
	BOOLEAN
	UUID
	DATE
	TIMESTAMP
	JSON
}

type ParamDefinition {
	name: String!
	type: ParamDataType!
	default: Expression
	description: String
}

input ParamDefinitionInput {
	name: String!
	type: ParamDataType!
	default: Expression
	description: String
}

type PostTransactionPayload {
	transaction: Transaction!
}

type Query {
	serverVersion: String!
	account(id: UUID!): Account
	accountByExternalId(externalId: String!): Account
	accounts(first: Int!, after: String): AccountConnection!
	accountSet(id: UUID!): AccountSet
	journal(id: UUID!): Journal
	balance(journalId: UUID!, accountId: UUID!, currency: CurrencyCode!): Balance
	transaction(id: UUID!): Transaction
	transactionByExternalId(externalId: String!): Transaction
	txTemplate(id: UUID!): TxTemplate
	txTemplateByCode(code: String!): TxTemplate
	jobs(first: Int!, after: String): JobConnection!
}

enum Status {
	ACTIVE
	LOCKED
}


scalar Timestamp

type Transaction {
	id: ID!
	transactionId: UUID!
	version: Int!
	txTemplateId: UUID!
	journalId: UUID!
	effective: Date!
	correlationId: String!
	externalId: String
	description: String
	metadata: JSON
	createdAt: Timestamp!
	modifiedAt: Timestamp!
}

input TransactionInput {
	transactionId: UUID!
	txTemplateCode: String!
	params: JSON
}

type TxInput {
	effective: Expression!
	journalId: Expression!
	correlationId: Expression
	externalId: Expression
	description: Expression
	metadata: Expression
}

type TxTemplate {
	id: ID!
	txTemplateId: UUID!
	version: Int!
	code: String!
	params: [ParamDefinition!]
	txInput: TxInput!
	entries: [EntryInput!]!
	description: String
	metadata: JSON
	createdAt: Timestamp!
	modifiedAt: Timestamp!
}

input TxTemplateCreateInput {
	txTemplateId: UUID!
	code: String!
	params: [ParamDefinitionInput!]
	txInput: TxTemplateTxInput!
	entries: [TxTemplateEntryInput!]!
	description: String
	metadata: JSON
}

type TxTemplateCreatePayload {
	txTemplate: TxTemplate!
}

input TxTemplateEntryInput {
	entryType: Expression!
	accountId: Expression!
	layer: Expression!
	direction: Expression!
	units: Expression!
	currency: Expression!
	description: Expression
}

input TxTemplateTxInput {
	effective: Expression!
	journalId: Expression!
	correlationId: Expression
	externalId: Expression
	description: Expression
	metadata: Expression
}

scalar UUID

directive @include(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
directive @skip(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
schema {
	query: Query
	mutation: Mutation
}