schema {
query: Query
mutation: Mutation
}
type SelectCropParameter implements CropParameter {
id: ID
crop: Crop
uri: String
title: String
required: Boolean
options(after: String, first: Int, before: String, last: Int): CropParameterOptionConnection
}
interface CropParameter {
id: ID
crop: Crop
uri: String
title: String
required: Boolean
}
type Crop {
id: ID
name(locale: String): String
tradeType: TradeType
parameters(after: String, first: Int, before: String, last: Int): CropParameterConnection
}
enum TradeType {
FROM_STORAGE
TO_STORAGE
}
type CropParameterConnection {
"Edges of the connection"
edges: [CropParameterConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type CropParameterConnectionEdge {
"Node of the Edge"
node: CropParameter
"The edge cursor"
cursor: String!
}
"Information about pagination in a connection."
type PageInfo {
"When paginating forwards, are there more items?"
hasNextPage: Boolean!
"When paginating backwards, are there more items?"
hasPreviousPage: Boolean!
"When paginating backwards, the cursor to continue."
startCursor: String
"When paginating forwards, the cursor to continue."
endCursor: String
}
type CropParameterOptionConnection {
"Edges of the connection"
edges: [CropParameterOptionConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type CropParameterOptionConnectionEdge {
"Node of the Edge"
node: CropParameterOption
"The edge cursor"
cursor: String!
}
type CropParameterOption {
id: ID
cropParameter: SelectCropParameter
uri: String
title: String
}
type FloatCropParameter implements CropParameter {
id: ID
crop: Crop
uri: String
title: String
required: Boolean
min: Float
max: Float
unit: String
}
type SelectOfferParameter implements OfferParameter {
id: ID
cropParameter: SelectCropParameter
offer: Offer
option: CropParameterOption
}
interface OfferParameter {
id: ID
cropParameter: CropParameter
offer: Offer
}
type Offer {
id: ID
storage: Storage
crop: Crop
amount: Float
totalAmount: Float
yearHarvested: Int
archived: Boolean
parameters(after: String, first: Int, before: String, last: Int): OfferParameterConnection
contracts(after: String, first: Int, before: String, last: Int): ContractConnection
orders(after: String, first: Int, before: String, last: Int): OrderConnection
allowedQuarters(after: String, first: Int, before: String, last: Int): QuarterConnection
}
type Storage {
id: ID
label: String
currency: Currency
user: User
crops: [Crop!]!
address: String
zip: String
archived: Boolean
locationArray: [String]
company: Company
offers(after: String, first: Int, before: String, last: Int, archived: Boolean): OfferConnection
lastPrices(after: String, first: Int, before: String, last: Int, cropIds: [ID!]): MarketPriceConnection
prices(after: String, first: Int, before: String, last: Int, from: DateTime!, to: DateTime, aggregated: Boolean, cropIds: [ID!]): MarketPriceConnection
}
enum Currency {
CZK
EUR
}
type User {
id: ID
name: String
email: String
phone: PhoneNumber
timeCreated: DateTime
timeUpdated: DateTime
company(companyId: ID!): Company
companies(after: String, first: Int, before: String, last: Int): CompanyConnection
roles: [String]
availableFunctions: [UserAvailableFunctions]
subscriptions: [Subscription]
enabledNotificationGroup: [NotificationGroup]
contractSignatures(after: String, first: Int, before: String, last: Int, signed: Boolean): UserContractSignatureConnection
}
scalar PhoneNumber
scalar DateTime
type Company {
id: ID
name: String
email: String
identificationNumber: String
vatNumber: String
businessRegistration: String
street: String
city: String
zip: String
country: Country
phone: PhoneNumber
timeCreated: DateTime
timeUpdated: DateTime
companyType: CompanyType
banks: [CompanyBank]
hasBankData: Boolean
storages(after: String, first: Int, before: String, last: Int, archived: Boolean, tradeType: TradeType): StorageConnection
contracts(after: String, first: Int, before: String, last: Int): ContractConnection
generalAgreementUrl: String
generalAgreementFile: DataUri
isPaid: Boolean
role: String
}
enum Country {
"Austria"
AT
"Belgium"
BE
"Bulgaria"
BG
"Bosna and Hercegovina"
BA
"Belarus"
BY
"Switzerland"
CH
"Cyprus"
CY
"Czech Republic"
CZ
"Deutschland"
DE
"Denmark"
DK
"Estonia"
EE
"Spain"
ES
"Finland"
FI
"France"
FR
"Greece"
GR
"Croatia"
HR
"Hungary"
HU
"Iceland"
IS
"Ireland"
IE
"Italy"
IT
"Liechtenstein"
LI
"Lithuania"
LT
"Luxemburg"
LU
"Latvia"
LV
"Monaco"
MC
"Moldavia"
MD
"Montenegro"
ME
"Northern Macedonia"
MK
"Malta"
MT
"Netherlands"
NL
"Norway"
NO
"Poland"
PL
"Portugal"
PT
"Romania"
RO
"Serbia"
RS
"Russia"
RU
"Sweden"
SE
"Slovenia"
SI
"Slovakia"
SK
"San Marino"
SM
"Ukraine"
UA
"United Kingdom"
UK
}
enum CompanyType {
PERSON
COMPANY
}
type CompanyBank {
id: ID
currency: String
bankName: String
iban: String
bic: String
}
type StorageConnection {
"Edges of the connection"
edges: [StorageConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type StorageConnectionEdge {
"Node of the Edge"
node: Storage
"The edge cursor"
cursor: String!
}
type ContractConnection {
"Edges of the connection"
edges: [ContractConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type ContractConnectionEdge {
"Node of the Edge"
node: Contract
"The edge cursor"
cursor: String!
}
type Contract {
id: ID
marketPrice: MarketPrice
offer: Offer
amount: Float
status: ContractStatus
timeCreated: DateTime
timeProcessed: DateTime
currency: String
price: Float
finalPrice: Float
note: String
transport: Transport
customTransport: Boolean
transportNote: String
transportDestination: String
confirmation: Confirmation
confirmationUrl: String @deprecated(reason: "New confirmation files are signed using external service and managed via confirmation field")
confirmationFile: DataUri @deprecated(reason: "New confirmation files are signed using external service and managed via confirmation field")
confirmationFileName: String @deprecated(reason: "New confirmation files are signed using external service and managed via confirmation field")
parameters(after: String, first: Int, before: String, last: Int): ContractParameterConnection
additionalInfo: String
"Current user's signature object for this contract"
userSignature: UserContractSignature
traderSigned: Boolean
externalNumber: String
}
type MarketPrice {
id: ID
crop: Crop
quarter: Quarter
region: Region
date: DateTime
status: MarketPriceStatus
price(currency: Currency!): Float
priceCzk: Float
priceEur: Float
}
type Quarter {
id: ID
name: String
dateFrom: DateTime
dateTo: DateTime
}
type Region {
id: ID
name: String
}
enum MarketPriceStatus {
FRESH
PRICING_ONLY
OUTDATED
}
enum ContractStatus {
PENDING
PROCESSING
SUCCESS
FAILED
CONFIRMED
SIGNED
}
enum Transport {
FCA
CPT
}
type Confirmation {
id: ID!
completed: Boolean!
documents: [ConfirmationDocument!]!
}
type ConfirmationDocument {
name: String!
url: String!
}
scalar DataUri
type ContractParameterConnection {
"Edges of the connection"
edges: [ContractParameterConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type ContractParameterConnectionEdge {
"Node of the Edge"
node: ContractParameter
"The edge cursor"
cursor: String!
}
interface ContractParameter {
id: ID
cropParameter: CropParameter
contract: Contract
}
type UserContractSignature {
id: ID!
user: User!
contract: Contract!
slug: String!
status: ContractSignatureStatus!
}
enum ContractSignatureStatus {
COMPLETED
AWAITING
SENT
OPENED
}
type CompanyConnection {
"Edges of the connection"
edges: [CompanyConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type CompanyConnectionEdge {
"Node of the Edge"
node: Company
"The edge cursor"
cursor: String!
}
enum UserAvailableFunctions {
REPORT
}
type Subscription {
id: ID
timeCreated: DateTime
deviceName: String
subscriptionJSON: String
}
enum NotificationGroup {
CONTRACT
ORDER
GENERAL
VOTING
}
type UserContractSignatureConnection {
"Edges of the connection"
edges: [UserContractSignatureConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type UserContractSignatureConnectionEdge {
"Node of the Edge"
node: UserContractSignature
"The edge cursor"
cursor: String!
}
type OfferConnection {
"Edges of the connection"
edges: [OfferConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type OfferConnectionEdge {
"Node of the Edge"
node: Offer
"The edge cursor"
cursor: String!
}
type MarketPriceConnection {
"Edges of the connection"
edges: [MarketPriceConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type MarketPriceConnectionEdge {
"Node of the Edge"
node: MarketPrice
"The edge cursor"
cursor: String!
}
type OfferParameterConnection {
"Edges of the connection"
edges: [OfferParameterConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type OfferParameterConnectionEdge {
"Node of the Edge"
node: OfferParameter
"The edge cursor"
cursor: String!
}
type OrderConnection {
"Edges of the connection"
edges: [OrderConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type OrderConnectionEdge {
"Node of the Edge"
node: Order
"The edge cursor"
cursor: String!
}
type Order {
id: ID
offer: Offer
quarter: Quarter
amount: Float
price: Float
lowPrice: Float
currency: String
active: Boolean
customTransport: Boolean
transportNote: String
note: String
}
type QuarterConnection {
"Edges of the connection"
edges: [QuarterConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type QuarterConnectionEdge {
"Node of the Edge"
node: Quarter
"The edge cursor"
cursor: String!
}
type FloatOfferParameter implements OfferParameter {
id: ID
cropParameter: FloatCropParameter
offer: Offer
value: Float
}
type SelectContractParameter implements ContractParameter {
id: ID
cropParameter: SelectCropParameter
contract: Contract
option: CropParameterOption
}
type FloatContractParameter implements ContractParameter {
id: ID
cropParameter: FloatCropParameter
contract: Contract
value: Float
}
type Query {
user(id: ID): User
storage(id: ID!): Storage
crops(after: String, first: Int, before: String, last: Int, tradeType: TradeType): CropConnection
crop(id: ID!): Crop
cropPricesInRegion(gps: GPSPointInput!, traderCompanyId: ID): [MarketPrice]
offer(id: ID!): Offer
offers(after: String, first: Int, before: String, last: Int, userId: ID!, archived: Boolean, tradeType: TradeType): OfferConnection
company(id: ID!): Company
contracts(after: String, first: Int, before: String, last: Int, userId: ID, companyId: ID!, cropId: ID, storageId: ID, quarterId: ID, status: ContractStatus, tradeType: TradeType): ContractConnection
contract(id: ID!): Contract
quarters(after: String, first: Int, before: String, last: Int, upcoming: Boolean): QuarterConnection
canITrade: Boolean
stockReport(company: ID!, format: StockReportFormat!, date: DateTime!): Report
}
type CropConnection {
"Edges of the connection"
edges: [CropConnectionEdge]
"Page info of the connection"
pageInfo: PageInfo
"Total count of items in the connection."
totalCount: Int
}
type CropConnectionEdge {
"Node of the Edge"
node: Crop
"The edge cursor"
cursor: String!
}
input GPSPointInput {
latitude: Float
longitude: Float
}
enum StockReportFormat {
XLS
PDF
}
type Report {
content: String
}
type Mutation {
addStorage(storage: StorageInput!): Storage
editStorage(id: ID!, storage: StorageInput!): Storage
archiveStorage(id: ID!): Storage
addOffer(offer: OfferInput!): Offer
editOffer(id: ID!, offer: OfferInput!): Offer
archiveOffer(id: ID!): Offer
addContract(contract: ContractInput!): Contract
addFastContract(fastContract: FastContractInput!): Contract
addOrder(order: OrderInput!): Order
addFastOrder(fastOrder: FastOrderInput!): Order
editOrder(id: ID!, order: OrderInput!): Order
removeOrder(id: ID!): ID
}
input StorageInput {
label: String!
currency: Currency!
crops: [ID!]
company: ID!
address: String!
zip: String!
}
input OfferInput {
storage: ID!
crop: ID!
amount: Float!
yearHarvested: Int!
parameters: [OfferParameterInput]
}
input OfferParameterInput {
cropParameter: ID!
type: OfferParameterType!
value: Float
option: ID
}
enum OfferParameterType {
FLOAT
SELECT
}
input ContractInput {
offer: ID!
marketPrice: ID!
amount: Float!
note: String
currency: String!
customTransport: Boolean!
transportNote: String
}
input FastContractInput {
gps: GPSPointInput!
zip: String!
crop: ID!
amount: Float!
yearHarvested: Int!
marketPrice: ID!
currency: Currency!
company: ID!
note: String
}
input OrderInput {
offer: ID!
quarter: ID!
amount: Float!
price: Float!
lowPrice: Float
active: Boolean!
currency: String!
customTransport: Boolean!
transportNote: String
note: String
}
input FastOrderInput {
gps: GPSPointInput!
zip: String!
crop: ID!
amount: Float!
yearHarvested: Int!
quarter: ID!
price: Float!
lowPrice: Float
currency: Currency!
company: ID!
note: String
}