@adminide-stack/marketplace-module-server 12.0.4-alpha.4 → 12.0.4-alpha.402
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +321 -0
- package/lib/containers/module.d.ts +8 -0
- package/lib/containers/module.d.ts.map +1 -1
- package/lib/containers/module.js +15 -5
- package/lib/containers/module.js.map +1 -1
- package/lib/dataloaders/index.d.ts +1 -0
- package/lib/dataloaders/index.d.ts.map +1 -0
- package/lib/demo/test-graphql-examples.d.ts +73 -0
- package/lib/demo/test-graphql-examples.d.ts.map +1 -0
- package/lib/graphql/resolvers/form-templates-resolver.d.ts +220 -0
- package/lib/graphql/resolvers/form-templates-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/form-templates-resolver.js +170 -0
- package/lib/graphql/resolvers/form-templates-resolver.js.map +1 -0
- package/lib/graphql/resolvers/gallery-resolver.d.ts +15 -0
- package/lib/graphql/resolvers/gallery-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/gallery-resolver.js +35 -0
- package/lib/graphql/resolvers/gallery-resolver.js.map +1 -0
- package/lib/graphql/resolvers/index.d.ts +247 -1
- package/lib/graphql/resolvers/index.d.ts.map +1 -1
- package/lib/graphql/resolvers/index.js +1 -0
- package/lib/graphql/resolvers/index.js.map +1 -0
- package/lib/graphql/resolvers/installed-extension-resolver.d.ts +5 -0
- package/lib/graphql/resolvers/installed-extension-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/installed-extension-resolver.js +289 -0
- package/lib/graphql/resolvers/installed-extension-resolver.js.map +1 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.d.ts +13 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.js +90 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.js.map +1 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts +14 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.js +221 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.js.map +1 -0
- package/lib/graphql/resolvers/publisher-resolver.d.ts +5 -0
- package/lib/graphql/resolvers/publisher-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/publisher-resolver.js +176 -0
- package/lib/graphql/resolvers/publisher-resolver.js.map +1 -0
- package/lib/graphql/resolvers/registry-extension-resolver.d.ts +5 -0
- package/lib/graphql/resolvers/registry-extension-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/registry-extension-resolver.js +46 -0
- package/lib/graphql/resolvers/registry-extension-resolver.js.map +1 -0
- package/lib/graphql/schemas/extension-pricing.graphql +546 -0
- package/lib/graphql/schemas/extension-pricing.graphql.js +1 -0
- package/lib/graphql/schemas/extension-pricing.graphql.js.map +1 -0
- package/lib/graphql/schemas/extension-registry.graphql +107 -0
- package/lib/graphql/schemas/extension-registry.graphql.js +1 -0
- package/lib/graphql/schemas/extension-registry.graphql.js.map +1 -0
- package/lib/graphql/schemas/form-templates.graphql +269 -0
- package/lib/graphql/schemas/form-templates.graphql.js +1 -0
- package/lib/graphql/schemas/form-templates.graphql.js.map +1 -0
- package/lib/graphql/schemas/gallery-schema.graphql +247 -0
- package/lib/graphql/schemas/gallery-schema.graphql.js +1 -0
- package/lib/graphql/schemas/gallery-schema.graphql.js.map +1 -0
- package/lib/graphql/schemas/index.d.ts.map +1 -1
- package/lib/graphql/schemas/index.js +3 -4
- package/lib/graphql/schemas/index.js.map +1 -1
- package/lib/graphql/schemas/installed-extension.graphql +309 -0
- package/lib/graphql/schemas/installed-extension.graphql.js +1 -0
- package/lib/graphql/schemas/installed-extension.graphql.js.map +1 -0
- package/lib/graphql/schemas/publisher-analytics.graphql +305 -0
- package/lib/graphql/schemas/publisher-analytics.graphql.js +1 -0
- package/lib/graphql/schemas/publisher-analytics.graphql.js.map +1 -0
- package/lib/graphql/schemas/publisher.graphql +376 -0
- package/lib/graphql/schemas/publisher.graphql.js +1 -0
- package/lib/graphql/schemas/publisher.graphql.js.map +1 -0
- package/lib/graphql/schemas/service.graphql +196 -0
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/module.d.ts +1 -1
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +10 -23
- package/lib/module.js.map +1 -1
- package/lib/plugins/extension-moleculer-service.d.ts +86 -0
- package/lib/plugins/extension-moleculer-service.d.ts.map +1 -0
- package/lib/plugins/index.d.ts +2 -0
- package/lib/plugins/index.d.ts.map +1 -0
- package/lib/services/extension-gallery-repository.d.ts +17 -0
- package/lib/services/extension-gallery-repository.d.ts.map +1 -0
- package/lib/services/extension-gallery-repository.js +192 -0
- package/lib/services/extension-gallery-repository.js.map +1 -0
- package/lib/services/extension-gallery-service-new.d.ts +39 -0
- package/lib/services/extension-gallery-service-new.d.ts.map +1 -0
- package/lib/services/extension-gallery-service.d.ts +30 -0
- package/lib/services/extension-gallery-service.d.ts.map +1 -0
- package/lib/services/extension-gallery-service.js +311 -0
- package/lib/services/extension-gallery-service.js.map +1 -0
- package/lib/services/index.d.ts +6 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/installed-extension-service-ext.d.ts +16 -0
- package/lib/services/installed-extension-service-ext.d.ts.map +1 -0
- package/lib/services/installed-extension-service-ext.js +485 -0
- package/lib/services/installed-extension-service-ext.js.map +1 -0
- package/lib/services/installed-extension-service.d.ts +96 -0
- package/lib/services/installed-extension-service.d.ts.map +1 -0
- package/lib/services/installed-extension-service.js +521 -0
- package/lib/services/installed-extension-service.js.map +1 -0
- package/lib/services/installed-extension-service.test.d.ts +1 -0
- package/lib/services/installed-extension-service.test.d.ts.map +1 -0
- package/lib/services/publisher-analytics-service.d.ts +128 -0
- package/lib/services/publisher-analytics-service.d.ts.map +1 -0
- package/lib/services/publisher-event-service.d.ts +48 -0
- package/lib/services/publisher-event-service.d.ts.map +1 -0
- package/lib/services/publisher-event-service.js +296 -0
- package/lib/services/publisher-event-service.js.map +1 -0
- package/lib/services/publisher-service-context.d.ts +1 -0
- package/lib/services/publisher-service-context.d.ts.map +1 -0
- package/lib/services/publisher-service.d.ts +60 -0
- package/lib/services/publisher-service.d.ts.map +1 -0
- package/lib/services/publisher-service.js +134 -0
- package/lib/services/publisher-service.js.map +1 -0
- package/lib/store/index.d.ts +1 -1
- package/lib/store/index.d.ts.map +1 -1
- package/lib/store/models/index.d.ts +2 -1
- package/lib/store/models/index.d.ts.map +1 -1
- package/lib/store/models/installed-extension-model.d.ts +4 -0
- package/lib/store/models/installed-extension-model.d.ts.map +1 -0
- package/lib/store/models/installed-extension-model.js +269 -0
- package/lib/store/models/installed-extension-model.js.map +1 -0
- package/lib/store/models/publisher-event-model.d.ts +11 -0
- package/lib/store/models/publisher-event-model.d.ts.map +1 -0
- package/lib/store/models/publisher-model.d.ts +5 -0
- package/lib/store/models/publisher-model.d.ts.map +1 -0
- package/lib/store/models/publisher-model.js +103 -0
- package/lib/store/models/publisher-model.js.map +1 -0
- package/lib/store/models/publisher-stats-model.d.ts +1 -0
- package/lib/store/models/publisher-stats-model.d.ts.map +1 -0
- package/lib/store/repositories/index.d.ts +3 -0
- package/lib/store/repositories/index.d.ts.map +1 -0
- package/lib/store/repositories/installed-extension-repository.d.ts +73 -0
- package/lib/store/repositories/installed-extension-repository.d.ts.map +1 -0
- package/lib/store/repositories/installed-extension-repository.js +442 -0
- package/lib/store/repositories/installed-extension-repository.js.map +1 -0
- package/lib/store/repositories/publisher-analytics-repository.d.ts +1 -0
- package/lib/store/repositories/publisher-analytics-repository.d.ts.map +1 -0
- package/lib/store/repositories/publisher-repository.d.ts +19 -0
- package/lib/store/repositories/publisher-repository.d.ts.map +1 -0
- package/lib/store/repositories/publisher-repository.js +87 -0
- package/lib/store/repositories/publisher-repository.js.map +1 -0
- package/lib/templates/constants/DB_COLL_NAMES.ts.template +5 -0
- package/lib/templates/constants/SERVER_TYPES.ts.template +10 -4
- package/lib/templates/repositories/ExtensionGalleryRepository.ts.template +44 -0
- package/lib/templates/repositories/InstalledExtensionRepository.ts.template +94 -0
- package/lib/templates/repositories/MarketplacePublisherRepository.ts.template +24 -0
- package/lib/templates/repositories/RegistryExtensionRepository.ts.template +10 -15
- package/lib/templates/services/ExtensionGalleryDataLoader.ts.template +2 -0
- package/lib/templates/services/ExtensionGalleryService.ts.template +79 -0
- package/lib/templates/services/InstalledExtensionDataLoader.ts.template +2 -0
- package/lib/templates/services/InstalledExtensionService.ts.template +181 -0
- package/lib/templates/services/MarketplacePublisherService.ts.template +49 -0
- package/lib/templates/services/PublisherEventService.ts.template +56 -0
- package/lib/templates/services/RegistryExtensionService.ts.template +62 -18
- package/lib/tests/extension-integration.test.d.ts +1 -0
- package/lib/tests/extension-integration.test.d.ts.map +1 -0
- package/lib/tests/install-extension-graphql.test.d.ts +2 -0
- package/lib/tests/install-extension-graphql.test.d.ts.map +1 -0
- package/lib/tests/test-extension-services.d.ts +1 -0
- package/lib/tests/test-extension-services.d.ts.map +1 -0
- package/lib/utils/publisherValidation.d.ts +23 -0
- package/lib/utils/publisherValidation.d.ts.map +1 -0
- package/lib/utils/publisherValidation.js +144 -0
- package/lib/utils/publisherValidation.js.map +1 -0
- package/package.json +15 -7
- package/lib/graphql/resolvers/resolvers.d.ts +0 -2
- package/lib/graphql/resolvers/resolvers.d.ts.map +0 -1
- package/lib/graphql/resolvers/resolvers.js +0 -167
- package/lib/graphql/resolvers/resolvers.js.map +0 -1
- package/lib/graphql/schemas/extension.graphql +0 -57
- package/lib/graphql/schemas/extension.graphql.js +0 -1
- package/lib/graphql/schemas/extension.graphql.js.map +0 -1
- package/lib/services/extension-service.d.ts +0 -54
- package/lib/services/extension-service.d.ts.map +0 -1
- package/lib/services/extension-service.js +0 -42
- package/lib/services/extension-service.js.map +0 -1
- package/lib/store/models/registry-extension-model.d.ts +0 -10
- package/lib/store/models/registry-extension-model.d.ts.map +0 -1
- package/lib/store/models/registry-extension-model.js +0 -62
- package/lib/store/models/registry-extension-model.js.map +0 -1
- package/lib/store/repository/index.d.ts +0 -2
- package/lib/store/repository/index.d.ts.map +0 -1
- package/lib/store/repository/registry-extension-repository.d.ts +0 -31
- package/lib/store/repository/registry-extension-repository.d.ts.map +0 -1
- package/lib/store/repository/registry-extension-repository.js +0 -135
- package/lib/store/repository/registry-extension-repository.js.map +0 -1
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Installed extension status enumeration
|
|
3
|
+
"""
|
|
4
|
+
enum InstalledExtensionStatus {
|
|
5
|
+
installed
|
|
6
|
+
deprecated_installed
|
|
7
|
+
suspended
|
|
8
|
+
orphaned
|
|
9
|
+
force_disabled
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
"""
|
|
13
|
+
Registry status cached from extensionRegistry
|
|
14
|
+
"""
|
|
15
|
+
enum ExtensionRegistryStatus {
|
|
16
|
+
active
|
|
17
|
+
deprecated
|
|
18
|
+
suspended
|
|
19
|
+
removed
|
|
20
|
+
emergency_removed
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
Runtime activation state
|
|
25
|
+
"""
|
|
26
|
+
enum ExtensionActivationState {
|
|
27
|
+
enabled
|
|
28
|
+
disabled
|
|
29
|
+
disabled_by_user
|
|
30
|
+
disabled_by_admin
|
|
31
|
+
disabled_by_policy
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
"""
|
|
35
|
+
Extension lifecycle management information
|
|
36
|
+
"""
|
|
37
|
+
type ExtensionLifecycle @entity(embedded: true) {
|
|
38
|
+
registryStatus: ExtensionRegistryStatus! @column
|
|
39
|
+
isOrphaned: Boolean! @column
|
|
40
|
+
deprecationWarningShown: Boolean! @column
|
|
41
|
+
autoUpdateBlocked: Boolean! @column
|
|
42
|
+
lastRegistryCheck: String! @column
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
"""
|
|
46
|
+
Admin policies for extension behavior
|
|
47
|
+
"""
|
|
48
|
+
type ExtensionPolicies @entity(embedded: true) {
|
|
49
|
+
allowOrphanedExecution: Boolean! @column
|
|
50
|
+
requireSecurityUpdates: Boolean! @column
|
|
51
|
+
autoRemoveDeprecated: Boolean! @column
|
|
52
|
+
deprecationGracePeriod: Int! @column
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
"""
|
|
56
|
+
Extension settings for user preferences and system state
|
|
57
|
+
"""
|
|
58
|
+
type ExtensionSettings @entity(embedded: true) {
|
|
59
|
+
userEnabled: Boolean! @column
|
|
60
|
+
systemEnabled: Boolean! @column
|
|
61
|
+
effectiveEnabled: Boolean! @column
|
|
62
|
+
userConfig: JSON @column
|
|
63
|
+
systemConfig: JSON @column
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
"""
|
|
67
|
+
Runtime activation error information
|
|
68
|
+
"""
|
|
69
|
+
type ExtensionActivationError @entity(embedded: true) {
|
|
70
|
+
message: String! @column
|
|
71
|
+
code: String! @column
|
|
72
|
+
timestamp: String! @column
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
"""
|
|
76
|
+
Performance metrics
|
|
77
|
+
"""
|
|
78
|
+
type ExtensionMetrics @entity(embedded: true) {
|
|
79
|
+
activationTime: Float! @column
|
|
80
|
+
memoryUsage: Float! @column
|
|
81
|
+
lastMeasured: String! @column
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
"""
|
|
85
|
+
Runtime information about extension execution
|
|
86
|
+
"""
|
|
87
|
+
type ExtensionRuntime @entity(embedded: true) {
|
|
88
|
+
activationState: ExtensionActivationState! @column
|
|
89
|
+
lastActivated: DateTime @column(overrideType: "Date")
|
|
90
|
+
lastDeactivated: DateTime @column(overrideType: "Date")
|
|
91
|
+
activationError: ExtensionActivationError @embedded
|
|
92
|
+
metrics: ExtensionMetrics @embedded
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
"""
|
|
96
|
+
Audit log entry for extension actions
|
|
97
|
+
"""
|
|
98
|
+
type ExtensionAuditEntry @entity(embedded: true) {
|
|
99
|
+
action: String! @column
|
|
100
|
+
timestamp: DateTime! @column(overrideType: "Date")
|
|
101
|
+
user: UserAccount! @column(overrideType: "ObjectId")
|
|
102
|
+
details: JSON @column
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
"""
|
|
106
|
+
Main installed extension type
|
|
107
|
+
"""
|
|
108
|
+
type InstalledExtension implements Node @entity {
|
|
109
|
+
id: ID! @id
|
|
110
|
+
organization: Organization @column(overrideType: "ObjectId")
|
|
111
|
+
extension: RegistryExtension! @column(overrideType: "ObjectId")
|
|
112
|
+
installedVersion: String! @column
|
|
113
|
+
status: InstalledExtensionStatus! @column
|
|
114
|
+
lifecycle: ExtensionLifecycle! @embedded
|
|
115
|
+
policies: ExtensionPolicies! @embedded
|
|
116
|
+
settings: ExtensionSettings! @embedded
|
|
117
|
+
runtime: ExtensionRuntime! @embedded
|
|
118
|
+
installedAt: DateTime! @column(overrideType: "Date")
|
|
119
|
+
installedBy: UserAccount! @column(overrideType: "ObjectId")
|
|
120
|
+
lastUpdated: DateTime @column(overrideType: "Date")
|
|
121
|
+
lastUpdatedBy: UserAccount @column(overrideType: "ObjectId")
|
|
122
|
+
availableVersion: String @column
|
|
123
|
+
dependencies: [String!] @column
|
|
124
|
+
dependents: [String!] @column
|
|
125
|
+
auditLog: [ExtensionAuditEntry!] @embedded
|
|
126
|
+
"""The source database collection this installed extension references"""
|
|
127
|
+
sourceCollection: String @column
|
|
128
|
+
"""The ObjectId of the specific document in the source collection"""
|
|
129
|
+
sourceDocumentId: String @column
|
|
130
|
+
"""Additional metadata for the installed extension"""
|
|
131
|
+
metadata: JSON @column
|
|
132
|
+
"""The actual document from the source collection (resolved via DataLoader, returns null if not found or no reference)"""
|
|
133
|
+
sourceDocument: JSON
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
"""
|
|
137
|
+
Registry information for display
|
|
138
|
+
"""
|
|
139
|
+
type ExtensionRegistryInfo {
|
|
140
|
+
displayName: String!
|
|
141
|
+
description: String!
|
|
142
|
+
publisher: String!
|
|
143
|
+
latestVersion: String!
|
|
144
|
+
tags: [String!]!
|
|
145
|
+
categories: [String!]!
|
|
146
|
+
deprecation: JSON
|
|
147
|
+
suspension: JSON
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
"""
|
|
151
|
+
Notification action
|
|
152
|
+
"""
|
|
153
|
+
type NotificationAction {
|
|
154
|
+
label: String!
|
|
155
|
+
action: String!
|
|
156
|
+
url: String
|
|
157
|
+
extensionSlug: String
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
"""
|
|
161
|
+
Extension notification
|
|
162
|
+
"""
|
|
163
|
+
type ExtensionNotification {
|
|
164
|
+
type: String!
|
|
165
|
+
severity: String!
|
|
166
|
+
message: String!
|
|
167
|
+
actions: [NotificationAction!]
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
"""
|
|
171
|
+
Extension update information
|
|
172
|
+
"""
|
|
173
|
+
type ExtensionUpdate {
|
|
174
|
+
extensionSlug: String!
|
|
175
|
+
currentVersion: String!
|
|
176
|
+
availableVersion: String!
|
|
177
|
+
isSecurityUpdate: Boolean!
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
"""
|
|
181
|
+
Extension cleanup result
|
|
182
|
+
"""
|
|
183
|
+
type ExtensionCleanupResult {
|
|
184
|
+
removed: [String!]!
|
|
185
|
+
deprecated: [String!]!
|
|
186
|
+
warnings: [String!]!
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
"""
|
|
190
|
+
Input for installing an extension
|
|
191
|
+
"""
|
|
192
|
+
input InstallExtensionInput {
|
|
193
|
+
extensionSlug: String!
|
|
194
|
+
version: String!
|
|
195
|
+
orgName: String
|
|
196
|
+
policies: ExtensionPoliciesInput
|
|
197
|
+
settings: ExtensionSettingsInput
|
|
198
|
+
"""The source database collection this extension references"""
|
|
199
|
+
sourceCollection: String
|
|
200
|
+
"""The ObjectId of the specific document in the source collection"""
|
|
201
|
+
sourceDocumentId: String
|
|
202
|
+
"""Additional metadata for the installation"""
|
|
203
|
+
metadata: JSON
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
"""
|
|
207
|
+
Input for extension policies
|
|
208
|
+
"""
|
|
209
|
+
input ExtensionPoliciesInput {
|
|
210
|
+
allowOrphanedExecution: Boolean
|
|
211
|
+
requireSecurityUpdates: Boolean
|
|
212
|
+
autoRemoveDeprecated: Boolean
|
|
213
|
+
deprecationGracePeriod: Int
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
"""
|
|
217
|
+
Input for extension settings
|
|
218
|
+
"""
|
|
219
|
+
input ExtensionSettingsInput {
|
|
220
|
+
userEnabled: Boolean
|
|
221
|
+
systemEnabled: Boolean
|
|
222
|
+
userConfig: JSON
|
|
223
|
+
systemConfig: JSON
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
"""
|
|
227
|
+
Response type for extension mutations
|
|
228
|
+
"""
|
|
229
|
+
type ExtensionMutationResponse {
|
|
230
|
+
success: Boolean!
|
|
231
|
+
extension: InstalledExtension
|
|
232
|
+
message: String!
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
"""
|
|
236
|
+
Response type for cleanup operations
|
|
237
|
+
"""
|
|
238
|
+
type ExtensionCleanupResponse {
|
|
239
|
+
success: Boolean!
|
|
240
|
+
result: ExtensionCleanupResult
|
|
241
|
+
message: String!
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
"""
|
|
245
|
+
Response type for sync operations
|
|
246
|
+
"""
|
|
247
|
+
type ExtensionSyncResponse {
|
|
248
|
+
success: Boolean!
|
|
249
|
+
message: String!
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
extend type Query {
|
|
253
|
+
"""
|
|
254
|
+
Get all installed extensions for the current tenant
|
|
255
|
+
"""
|
|
256
|
+
installedExtensions(enabled: Boolean, orgName: String): [InstalledExtension!]!
|
|
257
|
+
|
|
258
|
+
"""
|
|
259
|
+
Get a specific installed extension
|
|
260
|
+
"""
|
|
261
|
+
installedExtension(extensionSlug: String!): InstalledExtension
|
|
262
|
+
|
|
263
|
+
"""
|
|
264
|
+
Get installed extensions that need attention
|
|
265
|
+
"""
|
|
266
|
+
extensionsNeedingAttention: [InstalledExtension!]!
|
|
267
|
+
|
|
268
|
+
"""
|
|
269
|
+
Check for available updates
|
|
270
|
+
"""
|
|
271
|
+
extensionUpdates(extensionSlug: String): [ExtensionUpdate!]!
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
extend type Mutation {
|
|
275
|
+
"""
|
|
276
|
+
Install an extension from the registry
|
|
277
|
+
"""
|
|
278
|
+
installExtension(input: InstallExtensionInput!): ExtensionMutationResponse!
|
|
279
|
+
|
|
280
|
+
"""
|
|
281
|
+
Uninstall an extension
|
|
282
|
+
"""
|
|
283
|
+
uninstallExtension(extensionSlug: String!, orgName: String): ExtensionMutationResponse!
|
|
284
|
+
|
|
285
|
+
"""
|
|
286
|
+
Enable or disable an extension
|
|
287
|
+
"""
|
|
288
|
+
toggleExtension(extensionSlug: String!, enabled: Boolean!, orgName: String): ExtensionMutationResponse!
|
|
289
|
+
|
|
290
|
+
"""
|
|
291
|
+
Update extension settings
|
|
292
|
+
"""
|
|
293
|
+
updateExtensionSettings(extensionSlug: String!, settings: JSON!, orgName: String): ExtensionMutationResponse!
|
|
294
|
+
|
|
295
|
+
"""
|
|
296
|
+
Update an extension to a newer version
|
|
297
|
+
"""
|
|
298
|
+
updateExtensionVersion(extensionSlug: String!, version: String!, orgName: String): ExtensionMutationResponse!
|
|
299
|
+
|
|
300
|
+
"""
|
|
301
|
+
Sync installed extensions with registry
|
|
302
|
+
"""
|
|
303
|
+
syncExtensionsWithRegistry: ExtensionSyncResponse!
|
|
304
|
+
|
|
305
|
+
"""
|
|
306
|
+
Clean up deprecated or removed extensions
|
|
307
|
+
"""
|
|
308
|
+
cleanupExtensions(dryRun: Boolean): ExtensionCleanupResponse!
|
|
309
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var installedExtensionSchema = "\"\"\"\nInstalled extension status enumeration\n\"\"\"\nenum InstalledExtensionStatus {\n installed\n deprecated_installed\n suspended\n orphaned\n force_disabled\n}\n\n\"\"\"\nRegistry status cached from extensionRegistry\n\"\"\"\nenum ExtensionRegistryStatus {\n active\n deprecated\n suspended\n removed\n emergency_removed\n}\n\n\"\"\"\nRuntime activation state\n\"\"\"\nenum ExtensionActivationState {\n enabled\n disabled\n disabled_by_user\n disabled_by_admin\n disabled_by_policy\n}\n\n\"\"\"\nExtension lifecycle management information\n\"\"\"\ntype ExtensionLifecycle @entity(embedded: true) {\n registryStatus: ExtensionRegistryStatus! @column\n isOrphaned: Boolean! @column\n deprecationWarningShown: Boolean! @column\n autoUpdateBlocked: Boolean! @column\n lastRegistryCheck: String! @column\n}\n\n\"\"\"\nAdmin policies for extension behavior\n\"\"\"\ntype ExtensionPolicies @entity(embedded: true) {\n allowOrphanedExecution: Boolean! @column\n requireSecurityUpdates: Boolean! @column\n autoRemoveDeprecated: Boolean! @column\n deprecationGracePeriod: Int! @column\n}\n\n\"\"\"\nExtension settings for user preferences and system state\n\"\"\"\ntype ExtensionSettings @entity(embedded: true) {\n userEnabled: Boolean! @column\n systemEnabled: Boolean! @column\n effectiveEnabled: Boolean! @column\n userConfig: JSON @column\n systemConfig: JSON @column\n}\n\n\"\"\"\nRuntime activation error information\n\"\"\"\ntype ExtensionActivationError @entity(embedded: true) {\n message: String! @column\n code: String! @column\n timestamp: String! @column\n}\n\n\"\"\"\nPerformance metrics\n\"\"\"\ntype ExtensionMetrics @entity(embedded: true) {\n activationTime: Float! @column\n memoryUsage: Float! @column\n lastMeasured: String! @column\n}\n\n\"\"\"\nRuntime information about extension execution\n\"\"\"\ntype ExtensionRuntime @entity(embedded: true) {\n activationState: ExtensionActivationState! @column\n lastActivated: DateTime @column(overrideType: \"Date\")\n lastDeactivated: DateTime @column(overrideType: \"Date\")\n activationError: ExtensionActivationError @embedded\n metrics: ExtensionMetrics @embedded\n}\n\n\"\"\"\nAudit log entry for extension actions\n\"\"\"\ntype ExtensionAuditEntry @entity(embedded: true) {\n action: String! @column\n timestamp: DateTime! @column(overrideType: \"Date\")\n user: UserAccount! @column(overrideType: \"ObjectId\")\n details: JSON @column\n}\n\n\"\"\"\nMain installed extension type\n\"\"\"\ntype InstalledExtension implements Node @entity {\n id: ID! @id\n organization: Organization @column(overrideType: \"ObjectId\")\n extension: RegistryExtension! @column(overrideType: \"ObjectId\")\n installedVersion: String! @column\n status: InstalledExtensionStatus! @column\n lifecycle: ExtensionLifecycle! @embedded\n policies: ExtensionPolicies! @embedded\n settings: ExtensionSettings! @embedded\n runtime: ExtensionRuntime! @embedded\n installedAt: DateTime! @column(overrideType: \"Date\")\n installedBy: UserAccount! @column(overrideType: \"ObjectId\")\n lastUpdated: DateTime @column(overrideType: \"Date\")\n lastUpdatedBy: UserAccount @column(overrideType: \"ObjectId\")\n availableVersion: String @column\n dependencies: [String!] @column\n dependents: [String!] @column\n auditLog: [ExtensionAuditEntry!] @embedded\n \"\"\"The source database collection this installed extension references\"\"\"\n sourceCollection: String @column\n \"\"\"The ObjectId of the specific document in the source collection\"\"\"\n sourceDocumentId: String @column\n \"\"\"Additional metadata for the installed extension\"\"\"\n metadata: JSON @column\n \"\"\"The actual document from the source collection (resolved via DataLoader, returns null if not found or no reference)\"\"\"\n sourceDocument: JSON\n}\n\n\"\"\"\nRegistry information for display\n\"\"\"\ntype ExtensionRegistryInfo {\n displayName: String!\n description: String!\n publisher: String!\n latestVersion: String!\n tags: [String!]!\n categories: [String!]!\n deprecation: JSON\n suspension: JSON\n}\n\n\"\"\"\nNotification action\n\"\"\"\ntype NotificationAction {\n label: String!\n action: String!\n url: String\n extensionSlug: String\n}\n\n\"\"\"\nExtension notification\n\"\"\"\ntype ExtensionNotification {\n type: String!\n severity: String!\n message: String!\n actions: [NotificationAction!]\n}\n\n\"\"\"\nExtension update information\n\"\"\"\ntype ExtensionUpdate {\n extensionSlug: String!\n currentVersion: String!\n availableVersion: String!\n isSecurityUpdate: Boolean!\n}\n\n\"\"\"\nExtension cleanup result\n\"\"\"\ntype ExtensionCleanupResult {\n removed: [String!]!\n deprecated: [String!]!\n warnings: [String!]!\n}\n\n\"\"\"\nInput for installing an extension\n\"\"\"\ninput InstallExtensionInput {\n extensionSlug: String!\n version: String!\n orgName: String\n policies: ExtensionPoliciesInput\n settings: ExtensionSettingsInput\n \"\"\"The source database collection this extension references\"\"\"\n sourceCollection: String\n \"\"\"The ObjectId of the specific document in the source collection\"\"\"\n sourceDocumentId: String\n \"\"\"Additional metadata for the installation\"\"\"\n metadata: JSON\n}\n\n\"\"\"\nInput for extension policies\n\"\"\"\ninput ExtensionPoliciesInput {\n allowOrphanedExecution: Boolean\n requireSecurityUpdates: Boolean\n autoRemoveDeprecated: Boolean\n deprecationGracePeriod: Int\n}\n\n\"\"\"\nInput for extension settings\n\"\"\"\ninput ExtensionSettingsInput {\n userEnabled: Boolean\n systemEnabled: Boolean\n userConfig: JSON\n systemConfig: JSON\n}\n\n\"\"\"\nResponse type for extension mutations\n\"\"\"\ntype ExtensionMutationResponse {\n success: Boolean!\n extension: InstalledExtension\n message: String!\n}\n\n\"\"\"\nResponse type for cleanup operations\n\"\"\"\ntype ExtensionCleanupResponse {\n success: Boolean!\n result: ExtensionCleanupResult\n message: String!\n}\n\n\"\"\"\nResponse type for sync operations\n\"\"\"\ntype ExtensionSyncResponse {\n success: Boolean!\n message: String!\n}\n\nextend type Query {\n \"\"\"\n Get all installed extensions for the current tenant\n \"\"\"\n installedExtensions(enabled: Boolean, orgName: String): [InstalledExtension!]!\n\n \"\"\"\n Get a specific installed extension\n \"\"\"\n installedExtension(extensionSlug: String!): InstalledExtension\n\n \"\"\"\n Get installed extensions that need attention\n \"\"\"\n extensionsNeedingAttention: [InstalledExtension!]!\n\n \"\"\"\n Check for available updates\n \"\"\"\n extensionUpdates(extensionSlug: String): [ExtensionUpdate!]!\n}\n\nextend type Mutation {\n \"\"\"\n Install an extension from the registry\n \"\"\"\n installExtension(input: InstallExtensionInput!): ExtensionMutationResponse!\n\n \"\"\"\n Uninstall an extension\n \"\"\"\n uninstallExtension(extensionSlug: String!, orgName: String): ExtensionMutationResponse!\n\n \"\"\"\n Enable or disable an extension\n \"\"\"\n toggleExtension(extensionSlug: String!, enabled: Boolean!, orgName: String): ExtensionMutationResponse!\n\n \"\"\"\n Update extension settings\n \"\"\"\n updateExtensionSettings(extensionSlug: String!, settings: JSON!, orgName: String): ExtensionMutationResponse!\n\n \"\"\"\n Update an extension to a newer version\n \"\"\"\n updateExtensionVersion(extensionSlug: String!, version: String!, orgName: String): ExtensionMutationResponse!\n\n \"\"\"\n Sync installed extensions with registry\n \"\"\"\n syncExtensionsWithRegistry: ExtensionSyncResponse!\n\n \"\"\"\n Clean up deprecated or removed extensions\n \"\"\"\n cleanupExtensions(dryRun: Boolean): ExtensionCleanupResponse!\n}\n";export{installedExtensionSchema as default};//# sourceMappingURL=installed-extension.graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installed-extension.graphql.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# Publisher Analytics Schema
|
|
2
|
+
# Provides comprehensive analytics and insights for extension publishers
|
|
3
|
+
|
|
4
|
+
type PublisherAnalytics {
|
|
5
|
+
"""Publisher identifier"""
|
|
6
|
+
publisherId: String!
|
|
7
|
+
|
|
8
|
+
"""Total number of extensions published"""
|
|
9
|
+
totalExtensions: Int!
|
|
10
|
+
|
|
11
|
+
"""Total downloads across all extensions"""
|
|
12
|
+
totalDownloads: Int!
|
|
13
|
+
|
|
14
|
+
"""Total active installations"""
|
|
15
|
+
totalInstallations: Int!
|
|
16
|
+
|
|
17
|
+
"""Average rating across all extensions"""
|
|
18
|
+
averageRating: Float
|
|
19
|
+
|
|
20
|
+
"""Analytics time period"""
|
|
21
|
+
period: AnalyticsPeriod!
|
|
22
|
+
|
|
23
|
+
"""Detailed extension metrics"""
|
|
24
|
+
extensions: [ExtensionMetrics!]!
|
|
25
|
+
|
|
26
|
+
"""Download trend over time"""
|
|
27
|
+
downloadTrend: [AnalyticsDataPoint!]!
|
|
28
|
+
|
|
29
|
+
"""Installation trend over time"""
|
|
30
|
+
installationTrend: [AnalyticsDataPoint!]!
|
|
31
|
+
|
|
32
|
+
"""Popular countries/regions"""
|
|
33
|
+
popularRegions: [RegionMetrics!]!
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
type ExtensionMetrics {
|
|
37
|
+
"""Extension identifier"""
|
|
38
|
+
extensionSlug: String!
|
|
39
|
+
|
|
40
|
+
"""Extension name"""
|
|
41
|
+
name: String!
|
|
42
|
+
|
|
43
|
+
"""Current version"""
|
|
44
|
+
version: String
|
|
45
|
+
|
|
46
|
+
"""Download count for the period"""
|
|
47
|
+
downloads: Int!
|
|
48
|
+
|
|
49
|
+
"""Active installation count"""
|
|
50
|
+
installations: Int!
|
|
51
|
+
|
|
52
|
+
"""Average rating"""
|
|
53
|
+
rating: Float
|
|
54
|
+
|
|
55
|
+
"""Number of reviews"""
|
|
56
|
+
reviewCount: Int!
|
|
57
|
+
|
|
58
|
+
"""Revenue generated (if applicable)"""
|
|
59
|
+
revenue: Float
|
|
60
|
+
|
|
61
|
+
"""Last updated timestamp"""
|
|
62
|
+
lastUpdated: DateTime
|
|
63
|
+
|
|
64
|
+
"""Version history metrics"""
|
|
65
|
+
versionMetrics: [VersionMetrics!]!
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
type VersionMetrics {
|
|
69
|
+
"""Version string"""
|
|
70
|
+
version: String!
|
|
71
|
+
|
|
72
|
+
"""Downloads for this version"""
|
|
73
|
+
downloads: Int!
|
|
74
|
+
|
|
75
|
+
"""Installations for this version"""
|
|
76
|
+
installations: Int!
|
|
77
|
+
|
|
78
|
+
"""Release date"""
|
|
79
|
+
releasedAt: DateTime!
|
|
80
|
+
|
|
81
|
+
"""Adoption rate as percentage"""
|
|
82
|
+
adoptionRate: Float!
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
type AnalyticsDataPoint {
|
|
86
|
+
"""Date/timestamp for the data point"""
|
|
87
|
+
timestamp: DateTime!
|
|
88
|
+
|
|
89
|
+
"""Metric value"""
|
|
90
|
+
value: Int!
|
|
91
|
+
|
|
92
|
+
"""Optional secondary value for comparison"""
|
|
93
|
+
secondaryValue: Int
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
type RegionMetrics {
|
|
97
|
+
"""Country/region code"""
|
|
98
|
+
region: String!
|
|
99
|
+
|
|
100
|
+
"""Country/region name"""
|
|
101
|
+
regionName: String!
|
|
102
|
+
|
|
103
|
+
"""Download count from this region"""
|
|
104
|
+
downloads: Int!
|
|
105
|
+
|
|
106
|
+
"""Installation count from this region"""
|
|
107
|
+
installations: Int!
|
|
108
|
+
|
|
109
|
+
"""Percentage of total traffic"""
|
|
110
|
+
percentage: Float!
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
type PublisherRevenueAnalytics {
|
|
114
|
+
"""Publisher identifier"""
|
|
115
|
+
publisherId: String!
|
|
116
|
+
|
|
117
|
+
"""Total revenue for the period"""
|
|
118
|
+
totalRevenue: Float!
|
|
119
|
+
|
|
120
|
+
"""Revenue currency"""
|
|
121
|
+
currency: String!
|
|
122
|
+
|
|
123
|
+
"""Revenue by extension"""
|
|
124
|
+
extensionRevenue: [ExtensionRevenue!]!
|
|
125
|
+
|
|
126
|
+
"""Revenue trend over time"""
|
|
127
|
+
revenueTrend: [RevenueDataPoint!]!
|
|
128
|
+
|
|
129
|
+
"""Top earning extensions"""
|
|
130
|
+
topEarningExtensions: [ExtensionRevenue!]!
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
type ExtensionRevenue {
|
|
134
|
+
"""Extension identifier"""
|
|
135
|
+
extensionSlug: String!
|
|
136
|
+
|
|
137
|
+
"""Extension name"""
|
|
138
|
+
name: String!
|
|
139
|
+
|
|
140
|
+
"""Revenue generated"""
|
|
141
|
+
revenue: Float!
|
|
142
|
+
|
|
143
|
+
"""Number of paid installations"""
|
|
144
|
+
paidInstallations: Int!
|
|
145
|
+
|
|
146
|
+
"""Average revenue per user"""
|
|
147
|
+
arpu: Float!
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
type RevenueDataPoint {
|
|
151
|
+
"""Date/timestamp"""
|
|
152
|
+
timestamp: DateTime!
|
|
153
|
+
|
|
154
|
+
"""Revenue amount"""
|
|
155
|
+
revenue: Float!
|
|
156
|
+
|
|
157
|
+
"""Number of transactions"""
|
|
158
|
+
transactions: Int!
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
enum AnalyticsPeriod {
|
|
162
|
+
"""Last 24 hours"""
|
|
163
|
+
DAILY
|
|
164
|
+
|
|
165
|
+
"""Last 7 days"""
|
|
166
|
+
WEEKLY
|
|
167
|
+
|
|
168
|
+
"""Last 30 days"""
|
|
169
|
+
MONTHLY
|
|
170
|
+
|
|
171
|
+
"""Last 90 days"""
|
|
172
|
+
QUARTERLY
|
|
173
|
+
|
|
174
|
+
"""Last 365 days"""
|
|
175
|
+
YEARLY
|
|
176
|
+
|
|
177
|
+
"""All time"""
|
|
178
|
+
ALL_TIME
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
enum AnalyticsMetric {
|
|
182
|
+
"""Download metrics"""
|
|
183
|
+
DOWNLOADS
|
|
184
|
+
|
|
185
|
+
"""Installation metrics"""
|
|
186
|
+
INSTALLATIONS
|
|
187
|
+
|
|
188
|
+
"""Rating metrics"""
|
|
189
|
+
RATINGS
|
|
190
|
+
|
|
191
|
+
"""Revenue metrics"""
|
|
192
|
+
REVENUE
|
|
193
|
+
|
|
194
|
+
"""User engagement metrics"""
|
|
195
|
+
ENGAGEMENT
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
input PublisherAnalyticsInput {
|
|
199
|
+
"""Publisher ID to get analytics for"""
|
|
200
|
+
publisherId: String!
|
|
201
|
+
|
|
202
|
+
"""Time period for analytics"""
|
|
203
|
+
period: AnalyticsPeriod!
|
|
204
|
+
|
|
205
|
+
"""Specific extensions to include (optional)"""
|
|
206
|
+
extensionSlugs: [String!]
|
|
207
|
+
|
|
208
|
+
"""Include revenue data"""
|
|
209
|
+
includeRevenue: Boolean
|
|
210
|
+
|
|
211
|
+
"""Include regional breakdown"""
|
|
212
|
+
includeRegions: Boolean
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
input PublisherRevenueAnalyticsInput {
|
|
216
|
+
"""Publisher ID"""
|
|
217
|
+
publisherId: String!
|
|
218
|
+
|
|
219
|
+
"""Time period"""
|
|
220
|
+
period: AnalyticsPeriod!
|
|
221
|
+
|
|
222
|
+
"""Currency for revenue display"""
|
|
223
|
+
currency: String
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
type AnalyticsEvent {
|
|
227
|
+
"""Event type"""
|
|
228
|
+
eventType: String!
|
|
229
|
+
|
|
230
|
+
"""Extension slug"""
|
|
231
|
+
extensionSlug: String!
|
|
232
|
+
|
|
233
|
+
"""Publisher ID"""
|
|
234
|
+
publisherId: String!
|
|
235
|
+
|
|
236
|
+
"""Event timestamp"""
|
|
237
|
+
timestamp: DateTime!
|
|
238
|
+
|
|
239
|
+
"""Event metadata"""
|
|
240
|
+
metadata: String
|
|
241
|
+
|
|
242
|
+
"""User country/region"""
|
|
243
|
+
region: String
|
|
244
|
+
|
|
245
|
+
"""Version involved"""
|
|
246
|
+
version: String
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
input TrackAnalyticsEventInput {
|
|
250
|
+
"""Event type (download, install, uninstall, etc.)"""
|
|
251
|
+
eventType: String!
|
|
252
|
+
|
|
253
|
+
"""Extension being tracked"""
|
|
254
|
+
extensionSlug: String!
|
|
255
|
+
|
|
256
|
+
"""User ID (optional)"""
|
|
257
|
+
userId: String
|
|
258
|
+
|
|
259
|
+
"""Event metadata as JSON"""
|
|
260
|
+
metadata: String
|
|
261
|
+
|
|
262
|
+
"""User's country/region"""
|
|
263
|
+
region: String
|
|
264
|
+
|
|
265
|
+
"""Extension version"""
|
|
266
|
+
version: String
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
type TrackAnalyticsEventResult {
|
|
270
|
+
"""Whether tracking was successful"""
|
|
271
|
+
success: Boolean!
|
|
272
|
+
|
|
273
|
+
"""Error message if failed"""
|
|
274
|
+
message: String
|
|
275
|
+
|
|
276
|
+
"""Event ID for reference"""
|
|
277
|
+
eventId: String
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
extend type Query {
|
|
281
|
+
"""Get comprehensive analytics for a publisher"""
|
|
282
|
+
publisherAnalytics(input: PublisherAnalyticsInput!): PublisherAnalytics!
|
|
283
|
+
|
|
284
|
+
"""Get revenue analytics for a publisher"""
|
|
285
|
+
publisherRevenueAnalytics(input: PublisherRevenueAnalyticsInput!): PublisherRevenueAnalytics!
|
|
286
|
+
|
|
287
|
+
"""Get recent analytics events"""
|
|
288
|
+
recentAnalyticsEvents(publisherId: String!, limit: Int): [AnalyticsEvent!]!
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
extend type Mutation {
|
|
292
|
+
"""Track an analytics event"""
|
|
293
|
+
trackAnalyticsEvent(input: TrackAnalyticsEventInput!): TrackAnalyticsEventResult!
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
extend type Subscription {
|
|
297
|
+
"""Subscribe to real-time analytics events"""
|
|
298
|
+
analyticsEvents(publisherId: String!): AnalyticsEvent!
|
|
299
|
+
|
|
300
|
+
"""Subscribe to download events"""
|
|
301
|
+
downloadEvents(publisherId: String!): AnalyticsEvent!
|
|
302
|
+
|
|
303
|
+
"""Subscribe to installation events"""
|
|
304
|
+
installationEvents(publisherId: String!): AnalyticsEvent!
|
|
305
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var publisherAnalyticsSchema = "# Publisher Analytics Schema\n# Provides comprehensive analytics and insights for extension publishers\n\ntype PublisherAnalytics {\n \"\"\"Publisher identifier\"\"\"\n publisherId: String!\n \n \"\"\"Total number of extensions published\"\"\"\n totalExtensions: Int!\n \n \"\"\"Total downloads across all extensions\"\"\"\n totalDownloads: Int!\n \n \"\"\"Total active installations\"\"\"\n totalInstallations: Int!\n \n \"\"\"Average rating across all extensions\"\"\"\n averageRating: Float\n \n \"\"\"Analytics time period\"\"\"\n period: AnalyticsPeriod!\n \n \"\"\"Detailed extension metrics\"\"\"\n extensions: [ExtensionMetrics!]!\n \n \"\"\"Download trend over time\"\"\"\n downloadTrend: [AnalyticsDataPoint!]!\n \n \"\"\"Installation trend over time\"\"\"\n installationTrend: [AnalyticsDataPoint!]!\n \n \"\"\"Popular countries/regions\"\"\"\n popularRegions: [RegionMetrics!]!\n}\n\ntype ExtensionMetrics {\n \"\"\"Extension identifier\"\"\"\n extensionSlug: String!\n \n \"\"\"Extension name\"\"\"\n name: String!\n \n \"\"\"Current version\"\"\"\n version: String\n \n \"\"\"Download count for the period\"\"\"\n downloads: Int!\n \n \"\"\"Active installation count\"\"\"\n installations: Int!\n \n \"\"\"Average rating\"\"\"\n rating: Float\n \n \"\"\"Number of reviews\"\"\"\n reviewCount: Int!\n \n \"\"\"Revenue generated (if applicable)\"\"\"\n revenue: Float\n \n \"\"\"Last updated timestamp\"\"\"\n lastUpdated: DateTime\n \n \"\"\"Version history metrics\"\"\"\n versionMetrics: [VersionMetrics!]!\n}\n\ntype VersionMetrics {\n \"\"\"Version string\"\"\"\n version: String!\n \n \"\"\"Downloads for this version\"\"\"\n downloads: Int!\n \n \"\"\"Installations for this version\"\"\"\n installations: Int!\n \n \"\"\"Release date\"\"\"\n releasedAt: DateTime!\n \n \"\"\"Adoption rate as percentage\"\"\"\n adoptionRate: Float!\n}\n\ntype AnalyticsDataPoint {\n \"\"\"Date/timestamp for the data point\"\"\"\n timestamp: DateTime!\n \n \"\"\"Metric value\"\"\"\n value: Int!\n \n \"\"\"Optional secondary value for comparison\"\"\"\n secondaryValue: Int\n}\n\ntype RegionMetrics {\n \"\"\"Country/region code\"\"\"\n region: String!\n \n \"\"\"Country/region name\"\"\"\n regionName: String!\n \n \"\"\"Download count from this region\"\"\"\n downloads: Int!\n \n \"\"\"Installation count from this region\"\"\"\n installations: Int!\n \n \"\"\"Percentage of total traffic\"\"\"\n percentage: Float!\n}\n\ntype PublisherRevenueAnalytics {\n \"\"\"Publisher identifier\"\"\"\n publisherId: String!\n \n \"\"\"Total revenue for the period\"\"\"\n totalRevenue: Float!\n \n \"\"\"Revenue currency\"\"\"\n currency: String!\n \n \"\"\"Revenue by extension\"\"\"\n extensionRevenue: [ExtensionRevenue!]!\n \n \"\"\"Revenue trend over time\"\"\"\n revenueTrend: [RevenueDataPoint!]!\n \n \"\"\"Top earning extensions\"\"\"\n topEarningExtensions: [ExtensionRevenue!]!\n}\n\ntype ExtensionRevenue {\n \"\"\"Extension identifier\"\"\"\n extensionSlug: String!\n \n \"\"\"Extension name\"\"\"\n name: String!\n \n \"\"\"Revenue generated\"\"\"\n revenue: Float!\n \n \"\"\"Number of paid installations\"\"\"\n paidInstallations: Int!\n \n \"\"\"Average revenue per user\"\"\"\n arpu: Float!\n}\n\ntype RevenueDataPoint {\n \"\"\"Date/timestamp\"\"\"\n timestamp: DateTime!\n \n \"\"\"Revenue amount\"\"\"\n revenue: Float!\n \n \"\"\"Number of transactions\"\"\"\n transactions: Int!\n}\n\nenum AnalyticsPeriod {\n \"\"\"Last 24 hours\"\"\"\n DAILY\n \n \"\"\"Last 7 days\"\"\"\n WEEKLY\n \n \"\"\"Last 30 days\"\"\"\n MONTHLY\n \n \"\"\"Last 90 days\"\"\"\n QUARTERLY\n \n \"\"\"Last 365 days\"\"\"\n YEARLY\n \n \"\"\"All time\"\"\"\n ALL_TIME\n}\n\nenum AnalyticsMetric {\n \"\"\"Download metrics\"\"\"\n DOWNLOADS\n \n \"\"\"Installation metrics\"\"\"\n INSTALLATIONS\n \n \"\"\"Rating metrics\"\"\"\n RATINGS\n \n \"\"\"Revenue metrics\"\"\"\n REVENUE\n \n \"\"\"User engagement metrics\"\"\"\n ENGAGEMENT\n}\n\ninput PublisherAnalyticsInput {\n \"\"\"Publisher ID to get analytics for\"\"\"\n publisherId: String!\n \n \"\"\"Time period for analytics\"\"\"\n period: AnalyticsPeriod!\n \n \"\"\"Specific extensions to include (optional)\"\"\"\n extensionSlugs: [String!]\n \n \"\"\"Include revenue data\"\"\"\n includeRevenue: Boolean\n \n \"\"\"Include regional breakdown\"\"\"\n includeRegions: Boolean\n}\n\ninput PublisherRevenueAnalyticsInput {\n \"\"\"Publisher ID\"\"\"\n publisherId: String!\n \n \"\"\"Time period\"\"\"\n period: AnalyticsPeriod!\n \n \"\"\"Currency for revenue display\"\"\"\n currency: String\n}\n\ntype AnalyticsEvent {\n \"\"\"Event type\"\"\"\n eventType: String!\n \n \"\"\"Extension slug\"\"\"\n extensionSlug: String!\n \n \"\"\"Publisher ID\"\"\"\n publisherId: String!\n \n \"\"\"Event timestamp\"\"\"\n timestamp: DateTime!\n \n \"\"\"Event metadata\"\"\"\n metadata: String\n \n \"\"\"User country/region\"\"\"\n region: String\n \n \"\"\"Version involved\"\"\"\n version: String\n}\n\ninput TrackAnalyticsEventInput {\n \"\"\"Event type (download, install, uninstall, etc.)\"\"\"\n eventType: String!\n \n \"\"\"Extension being tracked\"\"\"\n extensionSlug: String!\n \n \"\"\"User ID (optional)\"\"\"\n userId: String\n \n \"\"\"Event metadata as JSON\"\"\"\n metadata: String\n \n \"\"\"User's country/region\"\"\"\n region: String\n \n \"\"\"Extension version\"\"\"\n version: String\n}\n\ntype TrackAnalyticsEventResult {\n \"\"\"Whether tracking was successful\"\"\"\n success: Boolean!\n \n \"\"\"Error message if failed\"\"\"\n message: String\n \n \"\"\"Event ID for reference\"\"\"\n eventId: String\n}\n\nextend type Query {\n \"\"\"Get comprehensive analytics for a publisher\"\"\"\n publisherAnalytics(input: PublisherAnalyticsInput!): PublisherAnalytics!\n \n \"\"\"Get revenue analytics for a publisher\"\"\"\n publisherRevenueAnalytics(input: PublisherRevenueAnalyticsInput!): PublisherRevenueAnalytics!\n \n \"\"\"Get recent analytics events\"\"\"\n recentAnalyticsEvents(publisherId: String!, limit: Int): [AnalyticsEvent!]!\n}\n\nextend type Mutation {\n \"\"\"Track an analytics event\"\"\"\n trackAnalyticsEvent(input: TrackAnalyticsEventInput!): TrackAnalyticsEventResult!\n}\n\nextend type Subscription {\n \"\"\"Subscribe to real-time analytics events\"\"\"\n analyticsEvents(publisherId: String!): AnalyticsEvent!\n \n \"\"\"Subscribe to download events\"\"\"\n downloadEvents(publisherId: String!): AnalyticsEvent!\n \n \"\"\"Subscribe to installation events\"\"\"\n installationEvents(publisherId: String!): AnalyticsEvent!\n}\n";export{publisherAnalyticsSchema as default};//# sourceMappingURL=publisher-analytics.graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-analytics.graphql.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|