vscode-apollo 2.5.5 → 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 (183) hide show
  1. package/.circleci/config.yml +17 -0
  2. package/.github/workflows/E2E.yml +25 -5
  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 +14 -0
  8. package/apollo.connectors.mapping.configuration.json +10 -0
  9. package/package.json +39 -5
  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/rover/apollo.config.yaml +1 -1
  169. package/sampleWorkspace/rover/supergraph.yaml +4 -0
  170. package/sampleWorkspace/sampleWorkspace.code-workspace +29 -8
  171. package/src/__tests__/fixtures/textmate/test.apollo.connectors.mapping +213 -0
  172. package/src/__tests__/fixtures/textmate/test.connect.graphql +104 -0
  173. package/src/language-server/__e2e__/configFileTypes.e2e.ts +2 -2
  174. package/src/language-server/__e2e__/rover.e2e.ts +37 -49
  175. package/src/language-server/__tests__/fixtures/documents/functionCall.ts.snap +3 -3
  176. package/src/language-server/config/config.ts +4 -2
  177. package/syntaxes/build.ts +266 -0
  178. package/syntaxes/connectors.mapping.json +532 -0
  179. package/syntaxes/connectors.mapping.yaml +440 -0
  180. package/syntaxes/graphql.connectors.json +426 -0
  181. package/syntaxes/graphql.connectors.yaml +254 -0
  182. package/syntaxes/graphql.json +22 -1
  183. package/syntaxes/tsconfig.json +6 -0
@@ -0,0 +1,526 @@
1
+ extend schema
2
+ @link(
3
+ url: "https://specs.apollo.dev/federation/v2.10"
4
+ import: ["@key", "@requires", "@shareable", "@external"]
5
+ )
6
+ @link(
7
+ url: "https://specs.apollo.dev/connect/v0.2"
8
+ import: ["@source", "@connect"]
9
+ )
10
+ @source(
11
+ name: "stripe"
12
+ http: {
13
+ baseURL: "https://api.stripe.com/v1"
14
+ headers: [
15
+ { name: "Authorization", value: "Bearer {$config.apiKey}" }
16
+ { name: "Stripe-Version", value: "2024-06-20" }
17
+ { name: "Content-Type", value: "application/x-www-form-urlencoded" }
18
+ ]
19
+ }
20
+ )
21
+
22
+ enum AccountType {
23
+ CHECKING
24
+ SAVINGS
25
+ }
26
+ enum AccountHolderType {
27
+ INDIVIDUAL
28
+ COMPANY
29
+ }
30
+ type Address @shareable {
31
+ city: String
32
+ country: String
33
+ line1: String
34
+ line2: String
35
+ postalCode: String
36
+ state: String
37
+ }
38
+ input AddressInput {
39
+ city: String
40
+ country: String
41
+ line1: String
42
+ line2: String
43
+ postalCode: String
44
+ state: String
45
+ }
46
+ type BillingDetails {
47
+ address: Address
48
+ email: String
49
+ name: String
50
+ phone: String
51
+ }
52
+ input BillingDetailsInput {
53
+ address: AddressInput
54
+ email: String
55
+ name: String
56
+ phone: String
57
+ }
58
+ type Card {
59
+ brand: CardBrand
60
+ checks: CardChecks
61
+ country: String
62
+ expMonth: Int
63
+ expYear: Int
64
+ fingerprint: String
65
+ funding: String
66
+ last4: String
67
+ }
68
+ enum CardBrand {
69
+ AMERICAN_EXPRESS
70
+ DINERS_CLUB
71
+ DISCOVER
72
+ JCB
73
+ MASTERCARD
74
+ UNION_PAY
75
+ VISA
76
+ }
77
+ type CardChecks {
78
+ addressLine1Check: String
79
+ addressPostalCodeCheck: String
80
+ cvcCheck: String
81
+ }
82
+ input CardChecksInput {
83
+ addressLine1Check: String
84
+ addressPostalCodeCheck: String
85
+ cvcCheck: String
86
+ }
87
+ input CardInput {
88
+ brand: CardBrand
89
+ checks: CardChecksInput
90
+ country: String
91
+ expMonth: Int
92
+ expYear: Int
93
+ fingerprint: String
94
+ funding: String
95
+ last4: String
96
+ }
97
+ type Customer @key(fields: "id", resolvable: false) {
98
+ id: ID!
99
+ paymentMethod (id:ID!): PaymentMethod
100
+ @connect(
101
+ source: "stripe"
102
+ http: { GET: "/customers/{$this.id}/payment_methods/{$args.id}" }
103
+ selection: """
104
+ # https://stripe.com/docs/api/payment_methods/retrieve
105
+ id
106
+ billingDetails: $.billing_details {
107
+ address {
108
+ city
109
+ country
110
+ line1
111
+ line2
112
+ postalCode: postal_code
113
+ state
114
+ }
115
+ email
116
+ name
117
+ phone
118
+ }
119
+ card {
120
+ brand: $.brand->match(
121
+ ["amex","AMERICAN_EXPRESS"],
122
+ ["diners","DINERS_CLUB"],
123
+ ["discover","DISCOVER"],
124
+ ["jcb","JCB"],
125
+ ["mastercard","MASTERCARD"],
126
+ ["unionpay","UNION_PAY"],
127
+ ["visa","VISA"]
128
+ )
129
+ checks {
130
+ addressLine1Check: address_line1_check
131
+ addressPostalCodeCheck: address_postal_code_check
132
+ cvcCheck: cvc_check
133
+ }
134
+ country
135
+ expMonth
136
+ expYear
137
+ fingerprint
138
+ funding
139
+ last4
140
+ }
141
+ usBankAccount {
142
+ accountHolderType: account_holder_type
143
+ accountType: account_type
144
+ bankName: bank_name
145
+ fingerprint
146
+ last4
147
+ routingNumber: routing_number
148
+ }
149
+ """
150
+ )
151
+ paymentMethods: [PaymentMethod]
152
+ @connect(
153
+ source: "stripe"
154
+ http: { GET: "/customers/{$this.id}/payment_methods" }
155
+ selection: """
156
+ # https://stripe.com/docs/api/payment_methods/retrieve
157
+ $.data {
158
+ id
159
+ type
160
+ billingDetails: $.billing_details {
161
+ address {
162
+ city
163
+ country
164
+ line1
165
+ line2
166
+ postalCode: postal_code
167
+ state
168
+ }
169
+ email
170
+ name
171
+ phone
172
+ }
173
+ card {
174
+ brand: $.brand->match(
175
+ ["amex","AMERICAN_EXPRESS"],
176
+ ["diners","DINERS_CLUB"],
177
+ ["discover","DISCOVER"],
178
+ ["jcb","JCB"],
179
+ ["mastercard","MASTERCARD"],
180
+ ["unionpay","UNION_PAY"],
181
+ ["visa","VISA"]
182
+ )
183
+ checks {
184
+ addressLine1Check: address_line1_check
185
+ addressPostalCodeCheck: address_postal_code_check
186
+ cvcCheck: cvc_check
187
+ }
188
+ country
189
+ expMonth
190
+ expYear
191
+ fingerprint
192
+ funding
193
+ last4
194
+ }
195
+ usBankAccount {
196
+ accountHolderType: account_holder_type
197
+ accountType: account_type
198
+ bankName: bank_name
199
+ fingerprint
200
+ last4
201
+ routingNumber: routing_number
202
+ }
203
+ }
204
+ """
205
+ )
206
+ }
207
+ type Mutation {
208
+ createCardPaymentMethod(
209
+ customer: ID!
210
+ billingDetails: BillingDetailsInput!
211
+ card: CardInput!
212
+ ): PaymentMethod
213
+ @connect(
214
+ source: "stripe"
215
+ http: {
216
+ POST: "/payment_methods"
217
+ body: """
218
+ type: $("card")
219
+ customer: $args.customer
220
+ billing_details: {
221
+ address: $args.billingDetails.address {
222
+ city
223
+ country
224
+ line1
225
+ line2
226
+ postal_code: postalCode
227
+ state
228
+ }
229
+ email: $args.billingDetails.email
230
+ name: $args.billingDetails.name
231
+ phone: $args.billingDetails.phone
232
+ }
233
+ card: $args.card {
234
+ brand: $.brand->match(
235
+ ["AMERICAN_EXPRESS", "amex"],
236
+ ["DINERS_CLUB", "diners"],
237
+ ["DISCOVER", "discover"],
238
+ ["JCB", "jcb"],
239
+ ["MASTERCARD", "mastercard"],
240
+ ["UNION_PAY", "unionpay"],
241
+ ["VISA", "visa"]
242
+ )
243
+ checks {
244
+ address_line1_check: addressLine1Check
245
+ address_postal_code_check: addressPostalCodeCheck
246
+ cvc_check: cvcCheck
247
+ }
248
+ country
249
+ exp_month: expMonth
250
+ exp_year: expYear
251
+ fingerprint
252
+ funding
253
+ last4
254
+ }
255
+ """
256
+ }
257
+ selection: """
258
+ # https://stripe.com/docs/api/payment_methods/create
259
+ id
260
+ type
261
+ customer {
262
+ id
263
+ }
264
+ billingDetails: $.billing_details {
265
+ address {
266
+ city
267
+ country
268
+ line1
269
+ line2
270
+ postalCode: postal_code
271
+ state
272
+ }
273
+ email
274
+ name
275
+ phone
276
+ }
277
+ card {
278
+ brand: $.brand->match(
279
+ ["amex","AMERICAN_EXPRESS"],
280
+ ["diners","DINERS_CLUB"],
281
+ ["discover","DISCOVER"],
282
+ ["jcb","JCB"],
283
+ ["mastercard","MASTERCARD"],
284
+ ["unionpay","UNION_PAY"],
285
+ ["visa","VISA"]
286
+ )
287
+ checks {
288
+ addressLine1Check: address_line1_check
289
+ addressPostalCodeCheck: address_postal_code_check
290
+ cvcCheck: cvc_check
291
+ }
292
+ country
293
+ expMonth
294
+ expYear
295
+ fingerprint
296
+ funding
297
+ last4
298
+ }
299
+ """
300
+ )
301
+ createUsBankAccountPaymentMethod(
302
+ customer: ID!
303
+ billingDetails: BillingDetailsInput!
304
+ usBankAccount: UsBankAccountInput!
305
+ ): PaymentMethod
306
+ @connect(
307
+ source: "stripe"
308
+ http: {
309
+ POST: "/payment_methods"
310
+ body: """
311
+ type: $("us_bank_account")
312
+ customer: $args.customer
313
+ billing_details: $args.billingDetails {
314
+ address {
315
+ city
316
+ country
317
+ line1
318
+ line2
319
+ postal_code: postalCode
320
+ state
321
+ }
322
+ email
323
+ name
324
+ phone
325
+ }
326
+ us_bank_account: $args.usBankAccount {
327
+ account_holder_type: accountHolderType
328
+ account_type: accountType
329
+ bank_name: bankName
330
+ fingerprint
331
+ last4
332
+ routing_number: routingNumber
333
+ }
334
+ """
335
+ }
336
+ selection: """
337
+ # https://stripe.com/docs/api/payment_methods/create
338
+ id
339
+ type
340
+ customer {
341
+ id
342
+ }
343
+ billingDetails: $.billing_details {
344
+ address {
345
+ city
346
+ country
347
+ line1
348
+ line2
349
+ postalCode: postal_code
350
+ state
351
+ }
352
+ email
353
+ name
354
+ phone
355
+ }
356
+ usBankAccount {
357
+ accountHolderType: account_holder_type
358
+ accountType: account_type
359
+ bankName: bank_name
360
+ fingerprint
361
+ last4
362
+ routingNumber: routing_number
363
+ }
364
+ """
365
+ )
366
+ detachPaymentMethod(id: ID!): PaymentMethod
367
+ @connect(
368
+ source: "stripe"
369
+ http: {
370
+ DELETE: "/payment_methods/{$args.id}"
371
+ body: """
372
+ id: $args.id
373
+ """
374
+ }
375
+ selection: """
376
+ # https://stripe.com/docs/api/payment_methods/detach
377
+ id
378
+ type
379
+ customer {
380
+ id
381
+ }
382
+ billingDetails: $.billing_details {
383
+ address {
384
+ city
385
+ country
386
+ line1
387
+ line2
388
+ postalCode: postal_code
389
+ state
390
+ }
391
+ email
392
+ name
393
+ phone
394
+ }
395
+ """
396
+ )
397
+ updatePaymentMethodBillingDetails(
398
+ id: ID!
399
+ billingDetails: BillingDetailsInput!
400
+ ): PaymentMethod
401
+ @connect(
402
+ source: "stripe"
403
+ http: {
404
+ POST: "/payment_methods/{$args.id}"
405
+ body: """
406
+ billing_details: $args.billingDetails{
407
+ address {
408
+ city
409
+ country
410
+ line1
411
+ line2
412
+ postal_code: postalCode
413
+ state
414
+ }
415
+ email
416
+ name
417
+ phone
418
+ }
419
+ """
420
+ }
421
+ selection: """
422
+ # https://stripe.com/docs/api/payment_methods/update
423
+ id
424
+ type
425
+ customer {
426
+ id
427
+ }
428
+ billingDetails: $.billing_details {
429
+ address {
430
+ city
431
+ country
432
+ line1
433
+ line2
434
+ postalCode: postal_code
435
+ state
436
+ }
437
+ email
438
+ name
439
+ phone
440
+ }
441
+ """
442
+ )
443
+ }
444
+ type PaymentMethod @key(fields:"id"){
445
+ id: ID!
446
+ type: String
447
+ customer: Customer
448
+ billingDetails: BillingDetails
449
+ card: Card
450
+ usBankAccount: UsBankAccount
451
+ }
452
+ type Query {
453
+ paymentMethod(id: ID!): PaymentMethod
454
+ @connect(
455
+ source: "stripe"
456
+ http: { GET: "/payment_methods/{$args.id}" }
457
+ selection: """
458
+ # https://stripe.com/docs/api/payment_methods/retrieve
459
+ id
460
+ type
461
+ customer {
462
+ id
463
+ }
464
+ billingDetails: $.billing_details {
465
+ address {
466
+ city
467
+ country
468
+ line1
469
+ line2
470
+ postalCode: postal_code
471
+ state
472
+ }
473
+ email
474
+ name
475
+ phone
476
+ }
477
+ card {
478
+ brand: $.brand->match(
479
+ ["amex","AMERICAN_EXPRESS"],
480
+ ["diners","DINERS_CLUB"],
481
+ ["discover","DISCOVER"],
482
+ ["jcb","JCB"],
483
+ ["mastercard","MASTERCARD"],
484
+ ["unionpay","UNION_PAY"],
485
+ ["visa","VISA"]
486
+ )
487
+ checks {
488
+ addressLine1Check: address_line1_check
489
+ addressPostalCodeCheck: address_postal_code_check
490
+ cvcCheck: cvc_check
491
+ }
492
+ country
493
+ expMonth
494
+ expYear
495
+ fingerprint
496
+ funding
497
+ last4
498
+ }
499
+ usBankAccount {
500
+ accountHolderType: account_holder_type
501
+ accountType: account_type
502
+ bankName: bank_name
503
+ fingerprint
504
+ last4
505
+ routingNumber: routing_number
506
+ }
507
+ """
508
+ entity: true
509
+ )
510
+ }
511
+ type UsBankAccount {
512
+ accountHolderType: AccountHolderType
513
+ accountType: AccountType
514
+ bankName: String
515
+ fingerprint: String
516
+ last4: String
517
+ routingNumber: String
518
+ }
519
+ input UsBankAccountInput {
520
+ accountHolderType: AccountHolderType
521
+ accountType: AccountType
522
+ bankName: String
523
+ fingerprint: String
524
+ last4: String
525
+ routingNumber: String
526
+ }
@@ -0,0 +1,162 @@
1
+ extend schema
2
+ @link(url: "https://specs.apollo.dev/federation/v2.10", import: ["@key", "@requires", "@shareable"])
3
+ @link(
4
+ url: "https://specs.apollo.dev/connect/v0.2"
5
+ import: ["@source", "@connect"]
6
+ )
7
+ @source(
8
+ name: "stripe"
9
+ http: {
10
+ baseURL: "https://api.stripe.com/v1"
11
+ headers: [
12
+ { name: "Authorization", value: "Bearer {$config.apiKey}" }
13
+ { name: "Stripe-Version", value: "2024-06-20" }
14
+ { name: "Content-Type", value: "application/x-www-form-urlencoded" }
15
+ ]
16
+ }
17
+ )
18
+
19
+ type Product @key(fields:"id")
20
+ @connect(
21
+ source: "stripe"
22
+ http: {
23
+ GET: "/products" # /product/:id would be one product at a time and this without an array retrieves all products
24
+ queryParams: """
25
+ "ids[]": $batch.id
26
+ """
27
+ }
28
+ selection: """
29
+ id
30
+ active
31
+ name
32
+ description
33
+ price: {
34
+ id: default_price
35
+ }
36
+ """
37
+ ) {
38
+ id: ID!
39
+ active: Boolean
40
+ name: String
41
+ description: String
42
+ price: Price
43
+ }
44
+ type Price @key(fields: "id", resolvable: false) @shareable {
45
+ id: ID!
46
+ active: Boolean
47
+ currency: String
48
+ unitAmount: Float
49
+ }
50
+ type PageInfo @shareable{
51
+ hasMore: Boolean
52
+ startCursor: String
53
+ endCursor: String
54
+ }
55
+ type ProductConnection {
56
+ pageInfo: PageInfo
57
+ items: [Product]
58
+ }
59
+ type Query {
60
+ price (id: ID!): Price
61
+ @connect(
62
+ source: "stripe"
63
+ http: { GET: "/prices/{$args.id}"}
64
+ selection: """
65
+ # https://docs.stripe.com/api/prices/retrieve
66
+ id
67
+ active
68
+ currency
69
+ unitAmount: unit_amount
70
+ """
71
+ entity: true
72
+ )
73
+ product(ids: [ID!]!): [Product]
74
+ @connect(
75
+ source: "stripe"
76
+ http: {
77
+ GET: "/products"
78
+ queryParams: """
79
+ "ids[]": $args.ids
80
+ """
81
+ }
82
+ selection: """
83
+ # https://docs.stripe.com/api/products/retrieve
84
+ $.data {
85
+ id
86
+ active
87
+ name
88
+ price: {
89
+ id: default_price
90
+ }
91
+ }
92
+ """
93
+ )
94
+ products(limit: Int = 10, cursor: String): ProductConnection
95
+ @connect(
96
+ source: "stripe"
97
+ http: { GET: "/products"
98
+ queryParams: """
99
+ limit: $args.limit
100
+ starting_after: $args.cursor
101
+ """
102
+ }
103
+ selection: """
104
+ # https://docs.stripe.com/api/products/list
105
+ pageInfo: {
106
+ hasMore: has_more
107
+ startCursor: has_more->match(
108
+ ["true", data.first->id],
109
+ ["false", null]
110
+ )
111
+ endCursor: has_more->match(
112
+ ["true", data.last->id],
113
+ ["false", null]
114
+ )
115
+ }
116
+ items: $.data {
117
+ id
118
+ active
119
+ name
120
+ price: {
121
+ id: default_price
122
+ }
123
+ }
124
+ """
125
+ )
126
+ }
127
+
128
+
129
+ type Mutation {
130
+ createProductInStripe(input: CreateProductInput!): Product
131
+ @connect(
132
+ source: "stripe"
133
+ http: {
134
+ POST: "/products"
135
+ body: """
136
+ # https://docs.stripe.com/api/products/create
137
+ $args.input {
138
+ id
139
+ name
140
+ metadata: { is_featured: isFeatured }
141
+ default_price_data: defaultPrice {
142
+ unit_amount: unitAmount
143
+ currency
144
+ }
145
+ }
146
+ """
147
+ }
148
+ selection: "id"
149
+ )
150
+ }
151
+
152
+ input CreateProductInput {
153
+ id: ID!
154
+ name: String!
155
+ isFeatured: Boolean
156
+ defaultPrice: PriceInput
157
+ }
158
+
159
+ input PriceInput {
160
+ unitAmount: Int!
161
+ currency: String!
162
+ }
@@ -0,0 +1,26 @@
1
+ supergraph:
2
+ listen: 0.0.0.0:${env.PORT:-4000}
3
+
4
+ headers:
5
+ all:
6
+ request:
7
+ - propagate:
8
+ matching: .*
9
+ connectors:
10
+ subgraphs:
11
+ stripe-checkout:
12
+ $config:
13
+ apiKey: ${env.STRIPE_API_KEY}
14
+ stripe-core-resources:
15
+ $config:
16
+ apiKey: ${env.STRIPE_API_KEY}
17
+ stripe-payment-methods:
18
+ $config:
19
+ apiKey: ${env.STRIPE_API_KEY}
20
+ stripe-product:
21
+ $config:
22
+ apiKey: ${env.STRIPE_API_KEY}
23
+ telemetry:
24
+ instrumentation:
25
+ spans:
26
+ mode: spec_compliant