-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathschema.graphql
135 lines (123 loc) · 2.93 KB
/
schema.graphql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
type Approval @entity(immutable: true) {
id: Bytes!
owner: Bytes! # address
approved: Bytes! # address
tokenId: BigInt! # uint256
blockNumber: BigInt!
blockTimestamp: BigInt!
transactionHash: Bytes!
}
type ApprovalForAll @entity(immutable: true) {
id: Bytes!
owner: Bytes! # address
operator: Bytes! # address
approved: Boolean! # bool
blockNumber: BigInt!
blockTimestamp: BigInt!
transactionHash: Bytes!
}
type NewMint @entity(immutable: true) {
id: Bytes!
tokenId: BigInt! # uint256
name: String!
description: String!
externalURL: String!
ENS: String!
commitHash: String! # string
gitRepository: String! # string
ipfsHash: String!
logo: String!
color: Int!
accessPointAutoApproval: Boolean!
triggeredBy: Bytes! # address
owner: Owner! # address
verifier: Bytes!
blockNumber: BigInt!
blockTimestamp: BigInt!
transactionHash: Bytes!
}
type MetadataUpdate @entity(immutable: true) {
id: Bytes!
tokenId: BigInt!
key: String!
stringValue: String
uint24Value: Int
multipleStringValue: [String!]!
booleanValue: Boolean
byAddress: Bytes!
blockNumber: BigInt!
blockTimestamp: BigInt!
transactionHash: Bytes!
}
type Transfer @entity(immutable: true) {
id: Bytes!
from: Bytes! # address
to: Bytes! # address
tokenId: BigInt! # uint256
blockNumber: BigInt!
blockTimestamp: BigInt!
transactionHash: Bytes!
}
type Token @entity {
id: Bytes! # Token ID
mintTransaction: NewMint!
tokenId: BigInt! # uint256
name: String!
description: String!
externalURL: String!
ENS: String!
logo: String!
color: Int!
accessPointAutoApproval: Boolean!
owner: Owner!
mintedBy: Bytes!
controllers: [Controller!]
accessPoints: [AccessPoint!] @derivedFrom(field: "token")
verifier: Verifier # Address
verified: Boolean!
createdAt: BigInt!
builds: [Build!]!
}
type Build @entity {
id: Bytes! # Token ID
gitRepository: GitRepository!
commitHash: String!
ipfsHash: String!
domain: String!
token: Token! @derivedFrom(field: "builds")
}
# Owner entity for collection, access points, and tokens
type Owner @entity {
id: Bytes! # address
tokens: [Token!] @derivedFrom(field: "owner")
accessPoints: [AccessPoint!] @derivedFrom(field: "owner")
collection: Boolean!
}
# Controller entity for tokens
type Controller @entity {
id: Bytes! # address
tokens: [Token!] @derivedFrom(field: "controllers")
}
# Verifier entity for tokens
type Verifier @entity {
id: Bytes! # address
tokens: [Token!] @derivedFrom(field: "verifier")
}
type GitRepository @entity {
id: String! # transaction hash of the first transaction this repository appeared in
builds: [Build!] @derivedFrom(field: "gitRepository")
}
type AccessPoint @entity {
id: String! # AP Name
token: Token!
score: BigInt!
contentVerified: Boolean!
nameVerified: Boolean!
owner: Owner!
creationStatus: String!
createdAt: BigInt!
}
type Collection @entity {
id: Bytes!
totalTokens: BigInt!
}