vscode-apollo 2.5.6 → 2.6.0

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.
Files changed (178) hide show
  1. package/.circleci/config.yml +17 -0
  2. package/.github/workflows/E2E.yml +3 -2
  3. package/.github/workflows/build-prs.yml +2 -1
  4. package/.prettierignore +3 -0
  5. package/.semgrepignore +2 -0
  6. package/.vscode/settings.json +7 -2
  7. package/CHANGELOG.md +6 -0
  8. package/apollo.connectors.mapping.configuration.json +10 -0
  9. package/package.json +37 -3
  10. package/sampleWorkspace/connectors-community/.github/ISSUE_TEMPLATE/connector-bug-report.md +36 -0
  11. package/sampleWorkspace/connectors-community/.github/ISSUE_TEMPLATE/new-connector.md +10 -0
  12. package/sampleWorkspace/connectors-community/.github/renovate.json5 +3 -0
  13. package/sampleWorkspace/connectors-community/.vscode/extensions.json +3 -0
  14. package/sampleWorkspace/connectors-community/.vscode/settings.json +13 -0
  15. package/sampleWorkspace/connectors-community/.vscode/tasks.json +10 -0
  16. package/sampleWorkspace/connectors-community/README.md +108 -0
  17. package/sampleWorkspace/connectors-community/apollo.config.json +5 -0
  18. package/sampleWorkspace/connectors-community/connectors/.template/Dockerfile +5 -0
  19. package/sampleWorkspace/connectors-community/connectors/.template/README +46 -0
  20. package/sampleWorkspace/connectors-community/connectors/.template/connector.graphql +31 -0
  21. package/sampleWorkspace/connectors-community/connectors/.template/router.yaml +18 -0
  22. package/sampleWorkspace/connectors-community/connectors/.template/supergraph.yaml +6 -0
  23. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/README +12 -0
  24. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/albums.graphql +48 -0
  25. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/comments.graphql +54 -0
  26. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/photos.graphql +54 -0
  27. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/posts.graphql +51 -0
  28. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/supergraph.yaml +26 -0
  29. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/todos.graphql +51 -0
  30. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/users.graphql +80 -0
  31. package/sampleWorkspace/connectors-community/connectors/TM-Forum/README.md +9 -0
  32. package/sampleWorkspace/connectors-community/connectors/TM-Forum/router.yaml +18 -0
  33. package/sampleWorkspace/connectors-community/connectors/TM-Forum/supergraph.yaml +6 -0
  34. package/sampleWorkspace/connectors-community/connectors/TM-Forum/tmf622-ProductOrdering.graphql +296 -0
  35. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/README.md +7 -0
  36. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/addresses.graphql +30 -0
  37. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/customer.graphql +77 -0
  38. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/products.graphql +70 -0
  39. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/router.yaml +24 -0
  40. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/supergraph.yaml +14 -0
  41. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/swagger.json +69226 -0
  42. package/sampleWorkspace/connectors-community/connectors/anthropic/Dockerfile +5 -0
  43. package/sampleWorkspace/connectors-community/connectors/anthropic/README +61 -0
  44. package/sampleWorkspace/connectors-community/connectors/anthropic/messages.graphql +258 -0
  45. package/sampleWorkspace/connectors-community/connectors/anthropic/router.yaml +18 -0
  46. package/sampleWorkspace/connectors-community/connectors/anthropic/supergraph.yaml +6 -0
  47. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/README +3 -0
  48. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/connector.graphql +38 -0
  49. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/router.yaml +18 -0
  50. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/supergraph.yaml +6 -0
  51. package/sampleWorkspace/connectors-community/connectors/apple/README +36 -0
  52. package/sampleWorkspace/connectors-community/connectors/apple/app-store-connect.graphql +100 -0
  53. package/sampleWorkspace/connectors-community/connectors/apple/router.yaml +18 -0
  54. package/sampleWorkspace/connectors-community/connectors/apple/supergraph.yaml +6 -0
  55. package/sampleWorkspace/connectors-community/connectors/aws/README +125 -0
  56. package/sampleWorkspace/connectors-community/connectors/aws/dynamodb.graphql +130 -0
  57. package/sampleWorkspace/connectors-community/connectors/aws/json-responses/product-price.json +10 -0
  58. package/sampleWorkspace/connectors-community/connectors/aws/json-responses/products.json +53 -0
  59. package/sampleWorkspace/connectors-community/connectors/aws/lambda.graphql +179 -0
  60. package/sampleWorkspace/connectors-community/connectors/aws/router.yaml +54 -0
  61. package/sampleWorkspace/connectors-community/connectors/aws/supergraph.yaml +10 -0
  62. package/sampleWorkspace/connectors-community/connectors/bored/README.md +35 -0
  63. package/sampleWorkspace/connectors-community/connectors/bored/bored.graphql +87 -0
  64. package/sampleWorkspace/connectors-community/connectors/bored/supergraph.yaml +6 -0
  65. package/sampleWorkspace/connectors-community/connectors/common-room/README.md +23 -0
  66. package/sampleWorkspace/connectors-community/connectors/common-room/contacts.graphql +141 -0
  67. package/sampleWorkspace/connectors-community/connectors/common-room/json-responses/members_email_.json +61 -0
  68. package/sampleWorkspace/connectors-community/connectors/common-room/router.yaml +18 -0
  69. package/sampleWorkspace/connectors-community/connectors/common-room/supergraph.yaml +6 -0
  70. package/sampleWorkspace/connectors-community/connectors/googlemaps/README.md +58 -0
  71. package/sampleWorkspace/connectors-community/connectors/googlemaps/distancematrix.graphql +155 -0
  72. package/sampleWorkspace/connectors-community/connectors/googlemaps/places-legacy.graphql +117 -0
  73. package/sampleWorkspace/connectors-community/connectors/googlemaps/places.graphql +399 -0
  74. package/sampleWorkspace/connectors-community/connectors/googlemaps/router.yaml +18 -0
  75. package/sampleWorkspace/connectors-community/connectors/googlemaps/supergraph.yaml +18 -0
  76. package/sampleWorkspace/connectors-community/connectors/googlemaps/timezone.graphql +64 -0
  77. package/sampleWorkspace/connectors-community/connectors/heygen/README +105 -0
  78. package/sampleWorkspace/connectors-community/connectors/heygen/avatars.graphql +79 -0
  79. package/sampleWorkspace/connectors-community/connectors/heygen/photo-avatars.graphql +454 -0
  80. package/sampleWorkspace/connectors-community/connectors/heygen/router.yaml +21 -0
  81. package/sampleWorkspace/connectors-community/connectors/heygen/supergraph.yaml +10 -0
  82. package/sampleWorkspace/connectors-community/connectors/jira/README +36 -0
  83. package/sampleWorkspace/connectors-community/connectors/jira/connector.graphql +197 -0
  84. package/sampleWorkspace/connectors-community/connectors/jira/router.yaml +18 -0
  85. package/sampleWorkspace/connectors-community/connectors/jira/supergraph.yaml +6 -0
  86. package/sampleWorkspace/connectors-community/connectors/museums/README.md +40 -0
  87. package/sampleWorkspace/connectors-community/connectors/museums/chicagoArt.graphql +150 -0
  88. package/sampleWorkspace/connectors-community/connectors/museums/met.graphql +119 -0
  89. package/sampleWorkspace/connectors-community/connectors/museums/supergraph.yaml +10 -0
  90. package/sampleWorkspace/connectors-community/connectors/nws/README.md +45 -0
  91. package/sampleWorkspace/connectors-community/connectors/nws/alerts.graphql +598 -0
  92. package/sampleWorkspace/connectors-community/connectors/nws/supergraph.yaml +6 -0
  93. package/sampleWorkspace/connectors-community/connectors/odata/README +18 -0
  94. package/sampleWorkspace/connectors-community/connectors/odata/connector.graphql +171 -0
  95. package/sampleWorkspace/connectors-community/connectors/odata/router.yaml +18 -0
  96. package/sampleWorkspace/connectors-community/connectors/odata/supergraph.yaml +6 -0
  97. package/sampleWorkspace/connectors-community/connectors/openai/README.md +61 -0
  98. package/sampleWorkspace/connectors-community/connectors/openai/assistants.graphql +285 -0
  99. package/sampleWorkspace/connectors-community/connectors/openai/chat-completions.graphql +169 -0
  100. package/sampleWorkspace/connectors-community/connectors/openai/models.graphql +47 -0
  101. package/sampleWorkspace/connectors-community/connectors/openai/router.yaml +24 -0
  102. package/sampleWorkspace/connectors-community/connectors/openai/supergraph.yaml +14 -0
  103. package/sampleWorkspace/connectors-community/connectors/pokeapi/README +45 -0
  104. package/sampleWorkspace/connectors-community/connectors/pokeapi/games.graphql +70 -0
  105. package/sampleWorkspace/connectors-community/connectors/pokeapi/locations.graphql +127 -0
  106. package/sampleWorkspace/connectors-community/connectors/pokeapi/moves.graphql +107 -0
  107. package/sampleWorkspace/connectors-community/connectors/pokeapi/pokemon.graphql +539 -0
  108. package/sampleWorkspace/connectors-community/connectors/pokeapi/router.yaml +18 -0
  109. package/sampleWorkspace/connectors-community/connectors/pokeapi/supergraph.yaml +18 -0
  110. package/sampleWorkspace/connectors-community/connectors/strapi/README.md +75 -0
  111. package/sampleWorkspace/connectors-community/connectors/strapi/router.yaml +19 -0
  112. package/sampleWorkspace/connectors-community/connectors/strapi/supergraph.yaml +6 -0
  113. package/sampleWorkspace/connectors-community/connectors/strapi/users.graphql +227 -0
  114. package/sampleWorkspace/connectors-community/connectors/stripe/README.md +83 -0
  115. package/sampleWorkspace/connectors-community/connectors/stripe/checkout.graphql +112 -0
  116. package/sampleWorkspace/connectors-community/connectors/stripe/core-resources.graphql +868 -0
  117. package/sampleWorkspace/connectors-community/connectors/stripe/payment-methods.graphql +526 -0
  118. package/sampleWorkspace/connectors-community/connectors/stripe/products.graphql +162 -0
  119. package/sampleWorkspace/connectors-community/connectors/stripe/router.yaml +26 -0
  120. package/sampleWorkspace/connectors-community/connectors/stripe/supergraph.yaml +18 -0
  121. package/sampleWorkspace/connectors-community/connectors/supabase/README.md +80 -0
  122. package/sampleWorkspace/connectors-community/connectors/supabase/router.yaml +5 -0
  123. package/sampleWorkspace/connectors-community/connectors/supabase/supabase.graphql +143 -0
  124. package/sampleWorkspace/connectors-community/connectors/supabase/supergraph.yaml +6 -0
  125. package/sampleWorkspace/connectors-community/connectors/thespacedevs/README +46 -0
  126. package/sampleWorkspace/connectors-community/connectors/thespacedevs/agencies.graphql +193 -0
  127. package/sampleWorkspace/connectors-community/connectors/thespacedevs/api-throttle.graphql +33 -0
  128. package/sampleWorkspace/connectors-community/connectors/thespacedevs/astronauts.graphql +237 -0
  129. package/sampleWorkspace/connectors-community/connectors/thespacedevs/celestial-bodies.graphql +131 -0
  130. package/sampleWorkspace/connectors-community/connectors/thespacedevs/docking-events.graphql +3460 -0
  131. package/sampleWorkspace/connectors-community/connectors/thespacedevs/launches.graphql +1156 -0
  132. package/sampleWorkspace/connectors-community/connectors/thespacedevs/supergraph.yaml +77 -0
  133. package/sampleWorkspace/connectors-community/connectors/tint/README +35 -0
  134. package/sampleWorkspace/connectors-community/connectors/tint/accounts.graphql +69 -0
  135. package/sampleWorkspace/connectors-community/connectors/tint/router.yaml +21 -0
  136. package/sampleWorkspace/connectors-community/connectors/tint/social-feeds.graphql +62 -0
  137. package/sampleWorkspace/connectors-community/connectors/tint/supergraph.yaml +10 -0
  138. package/sampleWorkspace/connectors-community/connectors/todoist/README.md +48 -0
  139. package/sampleWorkspace/connectors-community/connectors/todoist/supergraph.yaml +6 -0
  140. package/sampleWorkspace/connectors-community/connectors/todoist/todoist.graphql +381 -0
  141. package/sampleWorkspace/connectors-community/connectors/trimblemaps/README +99 -0
  142. package/sampleWorkspace/connectors-community/connectors/trimblemaps/connector.graphql +66 -0
  143. package/sampleWorkspace/connectors-community/connectors/trimblemaps/router.yaml +18 -0
  144. package/sampleWorkspace/connectors-community/connectors/trimblemaps/supergraph.yaml +6 -0
  145. package/sampleWorkspace/connectors-community/connectors/twilio/README.md +44 -0
  146. package/sampleWorkspace/connectors-community/connectors/twilio/messages.graphql +107 -0
  147. package/sampleWorkspace/connectors-community/connectors/twilio/router.yaml +6 -0
  148. package/sampleWorkspace/connectors-community/connectors/twilio/supergraph.yaml +6 -0
  149. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/README.md +44 -0
  150. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/earthquakes.graphql +235 -0
  151. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/supergraph.yaml +6 -0
  152. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/README.md +44 -0
  153. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/earthquake-simple.graphql +87 -0
  154. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/router.yaml +3 -0
  155. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/supergraph.yaml +6 -0
  156. package/sampleWorkspace/connectors-community/connectors/usps/README +36 -0
  157. package/sampleWorkspace/connectors-community/connectors/usps/router.yaml +18 -0
  158. package/sampleWorkspace/connectors-community/connectors/usps/supergraph.yaml +6 -0
  159. package/sampleWorkspace/connectors-community/connectors/usps/tracking.graphql +118 -0
  160. package/sampleWorkspace/connectors-community/connectors/zendesk/README +36 -0
  161. package/sampleWorkspace/connectors-community/connectors/zendesk/connector.graphql +98 -0
  162. package/sampleWorkspace/connectors-community/connectors/zendesk/router.yaml +18 -0
  163. package/sampleWorkspace/connectors-community/connectors/zendesk/supergraph.yaml +6 -0
  164. package/sampleWorkspace/connectors-community/file-new/index.js +520 -0
  165. package/sampleWorkspace/connectors-community/package-lock.json +119 -0
  166. package/sampleWorkspace/connectors-community/package.json +20 -0
  167. package/sampleWorkspace/connectors-community/supergraph.yaml +6 -0
  168. package/sampleWorkspace/sampleWorkspace.code-workspace +29 -8
  169. package/src/__tests__/fixtures/textmate/test.apollo.connectors.mapping +213 -0
  170. package/src/__tests__/fixtures/textmate/test.connect.graphql +104 -0
  171. package/src/language-server/__tests__/fixtures/documents/functionCall.ts.snap +3 -3
  172. package/syntaxes/build.ts +266 -0
  173. package/syntaxes/connectors.mapping.json +532 -0
  174. package/syntaxes/connectors.mapping.yaml +440 -0
  175. package/syntaxes/graphql.connectors.json +426 -0
  176. package/syntaxes/graphql.connectors.yaml +254 -0
  177. package/syntaxes/graphql.json +8 -1
  178. package/syntaxes/tsconfig.json +6 -0
@@ -0,0 +1,399 @@
1
+ extend schema
2
+ @link(
3
+ url: "https://specs.apollo.dev/federation/v2.11"
4
+ import: ["@key", "@shareable", "@external"]
5
+ ) # Enable this schema to use Apollo Federation features
6
+ @link( # Enable this schema to use Apollo Connectors
7
+ url: "https://specs.apollo.dev/connect/v0.2"
8
+ import: ["@connect", "@source"]
9
+ )
10
+
11
+ #this connector uses the legacy places API. To enable this in Google, you must create an API key and give permissions to this API
12
+ @source(
13
+ name: "places"
14
+ http: {
15
+ baseURL: "https://places.googleapis.com/v1/places"
16
+ headers: [
17
+ {
18
+ name: "X-Goog-Api-Key"
19
+ value: "{$config.GOOGLE_MAPS_API_KEY}"
20
+ }
21
+ ]
22
+ }
23
+ )
24
+
25
+ type Query {
26
+ """
27
+ search for a place using natural language such as 'Baltimore' or 'museum Chicago'
28
+ """
29
+ searchForPlace(query: String): [Place]
30
+ @connect(
31
+ source: "places"
32
+ http: {
33
+ POST: "/:searchText"
34
+ body: """
35
+ textQuery: $args.query
36
+ """
37
+ headers: [
38
+ {
39
+ name: "X-Goog-FieldMask"
40
+ value: "nextPageToken,places.attributions,places.id,places.name,places.accessibilityOptions,places.addressComponents,places.addressDescriptor,places.adrFormatAddress,places.businessStatus,places.containingPlaces,places.displayName,places.formattedAddress,places.googleMapsLinks,places.googleMapsUri,places.iconBackgroundColor,places.iconMaskBaseUri,places.location,places.photos,places.plusCode,places.postalAddress,places.primaryType,places.primaryTypeDisplayName,places.pureServiceAreaBusiness,places.shortFormattedAddress,places.subDestinations,places.types,places.utcOffsetMinutes,places.viewport,places.currentOpeningHours,places.currentSecondaryOpeningHours,places.internationalPhoneNumber,places.nationalPhoneNumber,places.priceLevel,places.priceRange,places.rating,places.regularOpeningHours,places.regularSecondaryOpeningHours,places.userRatingCount,places.websiteUri"
41
+ }
42
+ ]
43
+ }
44
+ selection: """
45
+ $.places {
46
+ name
47
+ id
48
+ types
49
+ nationalPhoneNumber
50
+ internationalPhoneNumber
51
+ formattedAddress
52
+ addressComponents {
53
+ longText
54
+ shortText
55
+ types
56
+ languageCode
57
+ }
58
+ plusCode {
59
+ globalCode
60
+ compoundCode
61
+ }
62
+ location {
63
+ latitude
64
+ longitude
65
+ }
66
+ viewport {
67
+ low {
68
+ latitude
69
+ longitude
70
+ }
71
+ high {
72
+ latitude
73
+ longitude
74
+ }
75
+ }
76
+ priceLevel
77
+ rating
78
+ googleMapsUri
79
+ websiteUri
80
+ regularOpeningHours {
81
+ openNow
82
+ periods {
83
+ open {
84
+ day
85
+ hour
86
+ minute
87
+ }
88
+ close {
89
+ day
90
+ hour
91
+ minute
92
+ }
93
+ }
94
+ weekdayDescriptions
95
+ nextCloseTime
96
+ }
97
+ utcOffsetMinutes
98
+ adrFormatAddress
99
+ businessStatus
100
+ userRatingCount
101
+ iconMaskBaseUri
102
+ iconBackgroundColor
103
+ displayName {
104
+ text
105
+ languageCode
106
+ }
107
+ primaryTypeDisplayName {
108
+ text
109
+ languageCode
110
+ }
111
+ currentOpeningHours {
112
+ openNow
113
+ periods {
114
+ open {
115
+ day
116
+ hour
117
+ minute
118
+ date {
119
+ year
120
+ month
121
+ day
122
+ }
123
+ }
124
+ close {
125
+ day
126
+ hour
127
+ minute
128
+ date {
129
+ year
130
+ month
131
+ day
132
+ }
133
+ }
134
+ }
135
+ weekdayDescriptions
136
+ nextCloseTime
137
+ }
138
+ primaryType
139
+ shortFormattedAddress
140
+ reviews {
141
+ name
142
+ relativePublishTimeDescription
143
+ rating
144
+ text {
145
+ text
146
+ languageCode
147
+ }
148
+ originalText {
149
+ text
150
+ languageCode
151
+ }
152
+ authorAttribution {
153
+ displayName
154
+ uri
155
+ photoUri
156
+ }
157
+ publishTime
158
+ flagContentUri
159
+ googleMapsUri
160
+ }
161
+ photos {
162
+ name
163
+ widthPx
164
+ heightPx
165
+ authorAttributions {
166
+ displayName
167
+ uri
168
+ photoUri
169
+ }
170
+ flagContentUri
171
+ googleMapsUri
172
+ url: authorAttributions->first.photoUri
173
+ }
174
+ paymentOptions {
175
+ acceptsDebitCards
176
+ acceptsCashOnly
177
+ }
178
+ accessibilityOptions {
179
+ wheelchairAccessibleParking
180
+ wheelchairAccessibleEntrance
181
+ wheelchairAccessibleRestroom
182
+ }
183
+ generativeSummary {
184
+ overview {
185
+ text
186
+ languageCode
187
+ }
188
+ overviewFlagContentUri
189
+ disclosureText {
190
+ text
191
+ languageCode
192
+ }
193
+ }
194
+ addressDescriptor {
195
+ landmarks {
196
+ name
197
+ placeId
198
+ displayName {
199
+ text
200
+ languageCode
201
+ }
202
+ types
203
+ straightLineDistanceMeters
204
+ travelDistanceMeters
205
+ }
206
+ areas {
207
+ name
208
+ placeId
209
+ displayName {
210
+ text
211
+ languageCode
212
+ }
213
+ containment
214
+ }
215
+ }
216
+ googleMapsLinks {
217
+ directionsUri
218
+ placeUri
219
+ writeAReviewUri
220
+ reviewsUri
221
+ photosUri
222
+ }
223
+ }
224
+ """
225
+ )
226
+ }
227
+ type Place @key(fields: "id"){
228
+ name: String
229
+ id: String
230
+ types: [String]
231
+ priceLevel: String
232
+ nationalPhoneNumber: String
233
+ internationalPhoneNumber: String
234
+ formattedAddress: String
235
+ addressComponents: [AddressComponent]
236
+ plusCode: PlusCode
237
+ location: Location
238
+ viewport: Viewport
239
+ rating: Float
240
+ googleMapsUri: String
241
+ websiteUri: String
242
+ regularOpeningHours: OpeningHours
243
+ utcOffsetMinutes: Int
244
+ adrFormatAddress: String
245
+ businessStatus: String
246
+ userRatingCount: Int
247
+ iconMaskBaseUri: String
248
+ iconBackgroundColor: String
249
+ displayName: LocalizedText
250
+ primaryTypeDisplayName: LocalizedText
251
+ currentOpeningHours: OpeningHoursWithPeriods
252
+ primaryType: String
253
+ shortFormattedAddress: String
254
+ reviews: [Review]
255
+ photos: [Photo]
256
+ paymentOptions: PaymentOptions
257
+ accessibilityOptions: AccessibilityOptions
258
+ generativeSummary: GenerativeSummary
259
+ addressDescriptor: AddressDescriptor
260
+ googleMapsLinks: GoogleMapsLinks
261
+ details: String
262
+ @connect(
263
+ source: "places"
264
+ http: {
265
+ GET: "/{$this.id}/"
266
+ headers: [
267
+ {
268
+ name: "X-Goog-FieldMask"
269
+ value: "photos"
270
+ }
271
+ ]
272
+ }
273
+ selection: """
274
+ $.result
275
+ """
276
+ )
277
+ }
278
+ type AddressComponent {
279
+ longText: String
280
+ shortText: String
281
+ types: [String]
282
+ languageCode: String
283
+ }
284
+ type PlusCode {
285
+ globalCode: String
286
+ compoundCode: String
287
+ }
288
+ type Location {
289
+ latitude: Float
290
+ longitude: Float
291
+ }
292
+ type Viewport {
293
+ low: Location
294
+ high: Location
295
+ }
296
+ type OpeningHours {
297
+ openNow: Boolean
298
+ periods: [OpeningPeriod]
299
+ weekdayDescriptions: [String]
300
+ nextCloseTime: String
301
+ }
302
+ type OpeningPeriod {
303
+ open: OpeningTime
304
+ close: OpeningTime
305
+ }
306
+ type OpeningTime {
307
+ day: Int
308
+ hour: Int
309
+ minute: Int
310
+ }
311
+ type Date {
312
+ year: Int
313
+ month: Int
314
+ day: Int
315
+ }
316
+ type LocalizedText {
317
+ text: String
318
+ languageCode: String
319
+ }
320
+ type OpeningHoursWithPeriods {
321
+ openNow: Boolean
322
+ periods: [OpeningPeriodWithDate]
323
+ weekdayDescriptions: [String]
324
+ nextCloseTime: String
325
+ }
326
+ type OpeningPeriodWithDate {
327
+ open: OpeningTimeWithDate
328
+ close: OpeningTimeWithDate
329
+ }
330
+ type OpeningTimeWithDate {
331
+ day: Int
332
+ hour: Int
333
+ minute: Int
334
+ date: Date
335
+ }
336
+ type Review {
337
+ name: String
338
+ relativePublishTimeDescription: String
339
+ rating: Float
340
+ text: LocalizedText
341
+ originalText: LocalizedText
342
+ authorAttribution: AuthorAttribution
343
+ publishTime: String
344
+ flagContentUri: String
345
+ googleMapsUri: String
346
+ }
347
+ type AuthorAttribution {
348
+ displayName: String
349
+ uri: String
350
+ photoUri: String
351
+ }
352
+ type Photo {
353
+ name: String
354
+ widthPx: Int
355
+ heightPx: Int
356
+ authorAttributions: [AuthorAttribution]
357
+ flagContentUri: String
358
+ googleMapsUri: String
359
+ url: String
360
+ }
361
+ type PaymentOptions {
362
+ acceptsDebitCards: Boolean
363
+ acceptsCashOnly: Boolean
364
+ }
365
+ type AccessibilityOptions {
366
+ wheelchairAccessibleParking: Boolean
367
+ wheelchairAccessibleEntrance: Boolean
368
+ wheelchairAccessibleRestroom: Boolean
369
+ }
370
+ type GenerativeSummary {
371
+ overview: LocalizedText
372
+ overviewFlagContentUri: String
373
+ disclosureText: LocalizedText
374
+ }
375
+ type AddressDescriptor {
376
+ landmarks: [Landmark]
377
+ areas: [Area]
378
+ }
379
+ type Landmark {
380
+ name: String
381
+ placeId: String
382
+ displayName: LocalizedText
383
+ types: [String]
384
+ straightLineDistanceMeters: Float
385
+ travelDistanceMeters: Float
386
+ }
387
+ type Area {
388
+ name: String
389
+ placeId: String
390
+ displayName: LocalizedText
391
+ containment: String
392
+ }
393
+ type GoogleMapsLinks {
394
+ directionsUri: String
395
+ placeUri: String
396
+ writeAReviewUri: String
397
+ reviewsUri: String
398
+ photosUri: String
399
+ }
@@ -0,0 +1,18 @@
1
+ supergraph:
2
+ listen: 0.0.0.0:${env.PORT:-4000}
3
+
4
+ headers:
5
+ all:
6
+ request:
7
+ - propagate:
8
+ matching: .*
9
+ telemetry:
10
+ instrumentation:
11
+ spans:
12
+ mode: spec_compliant
13
+
14
+ connectors:
15
+ sources:
16
+ places.places:
17
+ $config:
18
+ GOOGLE_MAPS_API_KEY: ${env.GOOGLE_MAPS_API_KEY}
@@ -0,0 +1,18 @@
1
+ subgraphs:
2
+ # places-legacy:
3
+ # routing_url: http://places
4
+ # schema:
5
+ # file: places-legacy.graphql
6
+ places:
7
+ routing_url: http://places
8
+ schema:
9
+ file: places.graphql
10
+ distance:
11
+ routing_url: http://distancematrix
12
+ schema:
13
+ file: distancematrix.graphql
14
+ timezone:
15
+ routing_url: http://timezone
16
+ schema:
17
+ file: timezone.graphql
18
+ federation_version: =2.11.0
@@ -0,0 +1,64 @@
1
+ extend schema
2
+ @link(
3
+ url: "https://specs.apollo.dev/federation/v2.11"
4
+ import: ["@key", "@shareable", "@external", "@requires"]
5
+ ) # Enable this schema to use Apollo Federation features
6
+ @link( # Enable this schema to use Apollo Connectors
7
+ url: "https://specs.apollo.dev/connect/v0.2"
8
+ import: ["@connect", "@source"]
9
+ )
10
+
11
+ #this connector uses the legacy timezone API. To enable this in Google, you must create an API key and give permissions to this API
12
+
13
+ @source(
14
+ name: "timezone"
15
+ http: { baseURL: "https://maps.googleapis.com/maps/api/timezone/" }
16
+ )
17
+
18
+ type Query {
19
+ # Optional fallback query
20
+ timezoneByCoords(lat: Float!, lng: Float!, timestamp: Int!): TimezoneInfo
21
+ @connect(
22
+ source: "timezone"
23
+ http: {
24
+ GET: "json?location={$args.lat},{$args.lng}&timestamp={$args.timestamp}&key=YOUR_API_KEY"
25
+ }
26
+ selection: """
27
+ timeZoneId
28
+ timeZoneName
29
+ rawOffset
30
+ dstOffset
31
+ """
32
+ )
33
+ }
34
+
35
+ type TimezoneInfo {
36
+ timeZoneId: String
37
+ timeZoneName: String
38
+ rawOffset: Int
39
+ dstOffset: Int
40
+ }
41
+
42
+ type Place @key(fields: "id", resolvable: false) {
43
+ id: String @external
44
+ location: Location @external
45
+ timezone(timestamp: Int!): TimezoneInfo
46
+ @requires(fields: "location { latitude longitude }")
47
+ @connect(
48
+ source: "timezone"
49
+ http: {
50
+ GET: "json?location={$this.location.latitude},{$this.location.longitude}&timestamp={$args.timestamp}&key=YOUR_API_KEY"
51
+ }
52
+ selection: """
53
+ timeZoneId
54
+ timeZoneName
55
+ rawOffset
56
+ dstOffset
57
+ """
58
+ )
59
+ }
60
+
61
+ type Location {
62
+ latitude: Float @external
63
+ longitude: Float @external
64
+ }
@@ -0,0 +1,105 @@
1
+ # HeyGen REST Connector
2
+
3
+ This connector provides a GraphQL interface to HeyGen's REST API for AI video generation and avatar services. Currently implemented features include:
4
+
5
+ - Photo Avatar Management
6
+ - Avatar Management
7
+ - More modules coming soon...
8
+
9
+ ## Features
10
+
11
+ - 🎯 **Type Safety** - Full GraphQL schema with proper types and scalars
12
+ - 🔄 **API Versioning** - Support for HeyGen API v2
13
+ - 📦 **Modular** - Separate schema files for different API domains
14
+ - 🚀 **Production Ready** - Optimized for production use
15
+
16
+ ## Setup
17
+
18
+ ### Environment Variables
19
+
20
+ You'll need to set up the following environment variables:
21
+
22
+ ```bash
23
+ HEYGEN_API_KEY=your_api_key_here
24
+ ```
25
+
26
+ ### VS Code Integration
27
+
28
+ Edit your `.vscode/settings.json` to include the HeyGen specific configuration:
29
+
30
+ ```json
31
+ {
32
+ "terminal.integrated.profiles.osx": {
33
+ "graphos": {
34
+ "path": "zsh",
35
+ "args": ["-l"],
36
+ "env": {
37
+ "APOLLO_KEY": "Your Key",
38
+ "APOLLO_GRAPH_REF": "your graph ref",
39
+ "APOLLO_ROVER_DEV_ROUTER_VERSION": "2.0.0-preview.3",
40
+ "HEYGEN_API_KEY": "Your HeyGen API Key"
41
+ }
42
+ }
43
+ },
44
+ "terminal.integrated.defaultProfile.osx": "graphos"
45
+ }
46
+ ```
47
+
48
+ ## Usage
49
+
50
+ You can start the development server using either:
51
+
52
+ 1. VS Code Task Runner:
53
+
54
+ - Execute the "Tasks: Run Task" command
55
+ - Select the `rover dev` task
56
+
57
+ 2. Terminal:
58
+ ```bash
59
+ rover dev --supergraph-config supergraph.yaml --router-config router.yaml
60
+ ```
61
+
62
+ ## Implemented Modules
63
+
64
+ ### Photo Avatars (`photo-avatars.graphql`)
65
+
66
+ - Generate photo-based avatars
67
+ - Create and manage avatar groups
68
+ - Add motion and sound effects
69
+ - Train avatar models
70
+ - Generate different looks
71
+
72
+ ### Avatars (`avatars.graphql`)
73
+
74
+ - List available avatars
75
+ - Manage avatar groups
76
+ - Query avatar details
77
+
78
+ ## Planned Modules
79
+
80
+ The following API domains are planned for future implementation:
81
+
82
+ - Video Generation
83
+ - Video Translation
84
+ - Voice Management
85
+ - Template Management
86
+ - User Management
87
+ - Asset Management
88
+ - Interactive Avatars
89
+
90
+ ## Contributing
91
+
92
+ To add a new API module:
93
+
94
+ 1. Create a new `.graphql` file for the module
95
+ 2. Add necessary configurations to `router.yaml` and `supergraph.yaml`
96
+ 3. Follow the existing patterns for:
97
+ - Type safety using proper scalars
98
+ - Input type usage for mutations
99
+ - Consistent error handling
100
+ - Documentation and descriptions
101
+
102
+ ## Resources
103
+
104
+ - [HeyGen API Documentation](https://docs.heygen.com/docs)
105
+ - [HeyGen TypeScript SDK](https://heygen.teamduality.dev/)
@@ -0,0 +1,79 @@
1
+ # These are the necessary federation and connector directives you will be using
2
+ extend schema
3
+ @link(url: "https://specs.apollo.dev/federation/v2.10")
4
+ @link(
5
+ url: "https://specs.apollo.dev/connect/v0.2"
6
+ import: ["@connect", "@source"]
7
+ )
8
+ # A @source directive defines a shared data source for multiple connectors.
9
+
10
+ @source(
11
+ name: "heygen-v2"
12
+ http: {
13
+ baseURL: "https://api.heygen.com/v2"
14
+ headers: [{ name: "X-API-KEY", value: "{$config.apiKey}" }]
15
+ }
16
+ )
17
+
18
+ scalar Timestamp
19
+
20
+ enum GroupType {
21
+ PUBLIC_PHOTO
22
+ PRIVATE
23
+ }
24
+
25
+ enum TrainStatus {
26
+ empty
27
+ }
28
+
29
+ type Avatar {
30
+ id: ID!
31
+ name: String
32
+ gender: String
33
+ previewImageUrl: String
34
+ previewVideoUrl: String
35
+ }
36
+
37
+ type AvatarGroup {
38
+ id: ID!
39
+ name: String!
40
+ createdAt: Timestamp
41
+ numLooks: Int
42
+ previewImageUrl: String
43
+ groupType: GroupType
44
+ trainStatus: TrainStatus
45
+ }
46
+
47
+ type Query {
48
+ listAvatars: [Avatar!]!
49
+ @connect(
50
+ source: "heygen-v2"
51
+ http: { GET: "/avatars" }
52
+ selection: """
53
+ $.data.avatars {
54
+ id: avatar_id
55
+ name: avatar_name
56
+ gender
57
+ previewImageUrl: preview_image_url
58
+ previewVideoUrl: preview_video_url
59
+ }
60
+ """
61
+ )
62
+
63
+ listAvatarGroups(includePublic: Boolean = false): [AvatarGroup!]!
64
+ @connect(
65
+ source: "heygen-v2"
66
+ http: { GET: "/avatar_group.list?include_public={$args.includePublic}" }
67
+ selection: """
68
+ $.data.avatar_group_list {
69
+ id
70
+ name
71
+ createdAt: created_at
72
+ numLooks: num_looks
73
+ previewImageUrl: preview_image_url
74
+ groupType: group_type
75
+ trainStatus: train_status
76
+ }
77
+ """
78
+ )
79
+ }