vscode-apollo 2.5.6 → 2.6.1

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 (180) 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/.github/workflows/release.yml +2 -2
  5. package/.prettierignore +3 -0
  6. package/.semgrepignore +2 -0
  7. package/.vscode/settings.json +7 -2
  8. package/CHANGELOG.md +12 -0
  9. package/apollo.connectors.mapping.configuration.json +10 -0
  10. package/package.json +38 -4
  11. package/sampleWorkspace/connectors-community/.github/ISSUE_TEMPLATE/connector-bug-report.md +36 -0
  12. package/sampleWorkspace/connectors-community/.github/ISSUE_TEMPLATE/new-connector.md +10 -0
  13. package/sampleWorkspace/connectors-community/.github/renovate.json5 +3 -0
  14. package/sampleWorkspace/connectors-community/.vscode/extensions.json +3 -0
  15. package/sampleWorkspace/connectors-community/.vscode/settings.json +13 -0
  16. package/sampleWorkspace/connectors-community/.vscode/tasks.json +10 -0
  17. package/sampleWorkspace/connectors-community/README.md +108 -0
  18. package/sampleWorkspace/connectors-community/apollo.config.json +5 -0
  19. package/sampleWorkspace/connectors-community/connectors/.template/Dockerfile +5 -0
  20. package/sampleWorkspace/connectors-community/connectors/.template/README +46 -0
  21. package/sampleWorkspace/connectors-community/connectors/.template/connector.graphql +31 -0
  22. package/sampleWorkspace/connectors-community/connectors/.template/router.yaml +18 -0
  23. package/sampleWorkspace/connectors-community/connectors/.template/supergraph.yaml +6 -0
  24. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/README +12 -0
  25. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/albums.graphql +48 -0
  26. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/comments.graphql +54 -0
  27. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/photos.graphql +54 -0
  28. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/posts.graphql +51 -0
  29. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/supergraph.yaml +26 -0
  30. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/todos.graphql +51 -0
  31. package/sampleWorkspace/connectors-community/connectors/JSONPlaceholder/users.graphql +80 -0
  32. package/sampleWorkspace/connectors-community/connectors/TM-Forum/README.md +9 -0
  33. package/sampleWorkspace/connectors-community/connectors/TM-Forum/router.yaml +18 -0
  34. package/sampleWorkspace/connectors-community/connectors/TM-Forum/supergraph.yaml +6 -0
  35. package/sampleWorkspace/connectors-community/connectors/TM-Forum/tmf622-ProductOrdering.graphql +296 -0
  36. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/README.md +7 -0
  37. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/addresses.graphql +30 -0
  38. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/customer.graphql +77 -0
  39. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/products.graphql +70 -0
  40. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/router.yaml +24 -0
  41. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/supergraph.yaml +14 -0
  42. package/sampleWorkspace/connectors-community/connectors/adobe-commerce-cloud/swagger.json +69226 -0
  43. package/sampleWorkspace/connectors-community/connectors/anthropic/Dockerfile +5 -0
  44. package/sampleWorkspace/connectors-community/connectors/anthropic/README +61 -0
  45. package/sampleWorkspace/connectors-community/connectors/anthropic/messages.graphql +258 -0
  46. package/sampleWorkspace/connectors-community/connectors/anthropic/router.yaml +18 -0
  47. package/sampleWorkspace/connectors-community/connectors/anthropic/supergraph.yaml +6 -0
  48. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/README +3 -0
  49. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/connector.graphql +38 -0
  50. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/router.yaml +18 -0
  51. package/sampleWorkspace/connectors-community/connectors/apollo-ecomm-simple/supergraph.yaml +6 -0
  52. package/sampleWorkspace/connectors-community/connectors/apple/README +36 -0
  53. package/sampleWorkspace/connectors-community/connectors/apple/app-store-connect.graphql +100 -0
  54. package/sampleWorkspace/connectors-community/connectors/apple/router.yaml +18 -0
  55. package/sampleWorkspace/connectors-community/connectors/apple/supergraph.yaml +6 -0
  56. package/sampleWorkspace/connectors-community/connectors/aws/README +125 -0
  57. package/sampleWorkspace/connectors-community/connectors/aws/dynamodb.graphql +130 -0
  58. package/sampleWorkspace/connectors-community/connectors/aws/json-responses/product-price.json +10 -0
  59. package/sampleWorkspace/connectors-community/connectors/aws/json-responses/products.json +53 -0
  60. package/sampleWorkspace/connectors-community/connectors/aws/lambda.graphql +179 -0
  61. package/sampleWorkspace/connectors-community/connectors/aws/router.yaml +54 -0
  62. package/sampleWorkspace/connectors-community/connectors/aws/supergraph.yaml +10 -0
  63. package/sampleWorkspace/connectors-community/connectors/bored/README.md +35 -0
  64. package/sampleWorkspace/connectors-community/connectors/bored/bored.graphql +87 -0
  65. package/sampleWorkspace/connectors-community/connectors/bored/supergraph.yaml +6 -0
  66. package/sampleWorkspace/connectors-community/connectors/common-room/README.md +23 -0
  67. package/sampleWorkspace/connectors-community/connectors/common-room/contacts.graphql +141 -0
  68. package/sampleWorkspace/connectors-community/connectors/common-room/json-responses/members_email_.json +61 -0
  69. package/sampleWorkspace/connectors-community/connectors/common-room/router.yaml +18 -0
  70. package/sampleWorkspace/connectors-community/connectors/common-room/supergraph.yaml +6 -0
  71. package/sampleWorkspace/connectors-community/connectors/googlemaps/README.md +58 -0
  72. package/sampleWorkspace/connectors-community/connectors/googlemaps/distancematrix.graphql +155 -0
  73. package/sampleWorkspace/connectors-community/connectors/googlemaps/places-legacy.graphql +117 -0
  74. package/sampleWorkspace/connectors-community/connectors/googlemaps/places.graphql +399 -0
  75. package/sampleWorkspace/connectors-community/connectors/googlemaps/router.yaml +18 -0
  76. package/sampleWorkspace/connectors-community/connectors/googlemaps/supergraph.yaml +18 -0
  77. package/sampleWorkspace/connectors-community/connectors/googlemaps/timezone.graphql +64 -0
  78. package/sampleWorkspace/connectors-community/connectors/heygen/README +105 -0
  79. package/sampleWorkspace/connectors-community/connectors/heygen/avatars.graphql +79 -0
  80. package/sampleWorkspace/connectors-community/connectors/heygen/photo-avatars.graphql +454 -0
  81. package/sampleWorkspace/connectors-community/connectors/heygen/router.yaml +21 -0
  82. package/sampleWorkspace/connectors-community/connectors/heygen/supergraph.yaml +10 -0
  83. package/sampleWorkspace/connectors-community/connectors/jira/README +36 -0
  84. package/sampleWorkspace/connectors-community/connectors/jira/connector.graphql +197 -0
  85. package/sampleWorkspace/connectors-community/connectors/jira/router.yaml +18 -0
  86. package/sampleWorkspace/connectors-community/connectors/jira/supergraph.yaml +6 -0
  87. package/sampleWorkspace/connectors-community/connectors/museums/README.md +40 -0
  88. package/sampleWorkspace/connectors-community/connectors/museums/chicagoArt.graphql +150 -0
  89. package/sampleWorkspace/connectors-community/connectors/museums/met.graphql +119 -0
  90. package/sampleWorkspace/connectors-community/connectors/museums/supergraph.yaml +10 -0
  91. package/sampleWorkspace/connectors-community/connectors/nws/README.md +45 -0
  92. package/sampleWorkspace/connectors-community/connectors/nws/alerts.graphql +598 -0
  93. package/sampleWorkspace/connectors-community/connectors/nws/supergraph.yaml +6 -0
  94. package/sampleWorkspace/connectors-community/connectors/odata/README +18 -0
  95. package/sampleWorkspace/connectors-community/connectors/odata/connector.graphql +171 -0
  96. package/sampleWorkspace/connectors-community/connectors/odata/router.yaml +18 -0
  97. package/sampleWorkspace/connectors-community/connectors/odata/supergraph.yaml +6 -0
  98. package/sampleWorkspace/connectors-community/connectors/openai/README.md +61 -0
  99. package/sampleWorkspace/connectors-community/connectors/openai/assistants.graphql +285 -0
  100. package/sampleWorkspace/connectors-community/connectors/openai/chat-completions.graphql +169 -0
  101. package/sampleWorkspace/connectors-community/connectors/openai/models.graphql +47 -0
  102. package/sampleWorkspace/connectors-community/connectors/openai/router.yaml +24 -0
  103. package/sampleWorkspace/connectors-community/connectors/openai/supergraph.yaml +14 -0
  104. package/sampleWorkspace/connectors-community/connectors/pokeapi/README +45 -0
  105. package/sampleWorkspace/connectors-community/connectors/pokeapi/games.graphql +70 -0
  106. package/sampleWorkspace/connectors-community/connectors/pokeapi/locations.graphql +127 -0
  107. package/sampleWorkspace/connectors-community/connectors/pokeapi/moves.graphql +107 -0
  108. package/sampleWorkspace/connectors-community/connectors/pokeapi/pokemon.graphql +539 -0
  109. package/sampleWorkspace/connectors-community/connectors/pokeapi/router.yaml +18 -0
  110. package/sampleWorkspace/connectors-community/connectors/pokeapi/supergraph.yaml +18 -0
  111. package/sampleWorkspace/connectors-community/connectors/strapi/README.md +75 -0
  112. package/sampleWorkspace/connectors-community/connectors/strapi/router.yaml +19 -0
  113. package/sampleWorkspace/connectors-community/connectors/strapi/supergraph.yaml +6 -0
  114. package/sampleWorkspace/connectors-community/connectors/strapi/users.graphql +227 -0
  115. package/sampleWorkspace/connectors-community/connectors/stripe/README.md +83 -0
  116. package/sampleWorkspace/connectors-community/connectors/stripe/checkout.graphql +112 -0
  117. package/sampleWorkspace/connectors-community/connectors/stripe/core-resources.graphql +868 -0
  118. package/sampleWorkspace/connectors-community/connectors/stripe/payment-methods.graphql +526 -0
  119. package/sampleWorkspace/connectors-community/connectors/stripe/products.graphql +162 -0
  120. package/sampleWorkspace/connectors-community/connectors/stripe/router.yaml +26 -0
  121. package/sampleWorkspace/connectors-community/connectors/stripe/supergraph.yaml +18 -0
  122. package/sampleWorkspace/connectors-community/connectors/supabase/README.md +80 -0
  123. package/sampleWorkspace/connectors-community/connectors/supabase/router.yaml +5 -0
  124. package/sampleWorkspace/connectors-community/connectors/supabase/supabase.graphql +143 -0
  125. package/sampleWorkspace/connectors-community/connectors/supabase/supergraph.yaml +6 -0
  126. package/sampleWorkspace/connectors-community/connectors/thespacedevs/README +46 -0
  127. package/sampleWorkspace/connectors-community/connectors/thespacedevs/agencies.graphql +193 -0
  128. package/sampleWorkspace/connectors-community/connectors/thespacedevs/api-throttle.graphql +33 -0
  129. package/sampleWorkspace/connectors-community/connectors/thespacedevs/astronauts.graphql +237 -0
  130. package/sampleWorkspace/connectors-community/connectors/thespacedevs/celestial-bodies.graphql +131 -0
  131. package/sampleWorkspace/connectors-community/connectors/thespacedevs/docking-events.graphql +3460 -0
  132. package/sampleWorkspace/connectors-community/connectors/thespacedevs/launches.graphql +1156 -0
  133. package/sampleWorkspace/connectors-community/connectors/thespacedevs/supergraph.yaml +77 -0
  134. package/sampleWorkspace/connectors-community/connectors/tint/README +35 -0
  135. package/sampleWorkspace/connectors-community/connectors/tint/accounts.graphql +69 -0
  136. package/sampleWorkspace/connectors-community/connectors/tint/router.yaml +21 -0
  137. package/sampleWorkspace/connectors-community/connectors/tint/social-feeds.graphql +62 -0
  138. package/sampleWorkspace/connectors-community/connectors/tint/supergraph.yaml +10 -0
  139. package/sampleWorkspace/connectors-community/connectors/todoist/README.md +48 -0
  140. package/sampleWorkspace/connectors-community/connectors/todoist/supergraph.yaml +6 -0
  141. package/sampleWorkspace/connectors-community/connectors/todoist/todoist.graphql +381 -0
  142. package/sampleWorkspace/connectors-community/connectors/trimblemaps/README +99 -0
  143. package/sampleWorkspace/connectors-community/connectors/trimblemaps/connector.graphql +66 -0
  144. package/sampleWorkspace/connectors-community/connectors/trimblemaps/router.yaml +18 -0
  145. package/sampleWorkspace/connectors-community/connectors/trimblemaps/supergraph.yaml +6 -0
  146. package/sampleWorkspace/connectors-community/connectors/twilio/README.md +44 -0
  147. package/sampleWorkspace/connectors-community/connectors/twilio/messages.graphql +107 -0
  148. package/sampleWorkspace/connectors-community/connectors/twilio/router.yaml +6 -0
  149. package/sampleWorkspace/connectors-community/connectors/twilio/supergraph.yaml +6 -0
  150. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/README.md +44 -0
  151. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/earthquakes.graphql +235 -0
  152. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes/supergraph.yaml +6 -0
  153. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/README.md +44 -0
  154. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/earthquake-simple.graphql +87 -0
  155. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/router.yaml +3 -0
  156. package/sampleWorkspace/connectors-community/connectors/usgs/earthquakes-nominatum/supergraph.yaml +6 -0
  157. package/sampleWorkspace/connectors-community/connectors/usps/README +36 -0
  158. package/sampleWorkspace/connectors-community/connectors/usps/router.yaml +18 -0
  159. package/sampleWorkspace/connectors-community/connectors/usps/supergraph.yaml +6 -0
  160. package/sampleWorkspace/connectors-community/connectors/usps/tracking.graphql +118 -0
  161. package/sampleWorkspace/connectors-community/connectors/zendesk/README +36 -0
  162. package/sampleWorkspace/connectors-community/connectors/zendesk/connector.graphql +98 -0
  163. package/sampleWorkspace/connectors-community/connectors/zendesk/router.yaml +18 -0
  164. package/sampleWorkspace/connectors-community/connectors/zendesk/supergraph.yaml +6 -0
  165. package/sampleWorkspace/connectors-community/file-new/index.js +520 -0
  166. package/sampleWorkspace/connectors-community/package-lock.json +119 -0
  167. package/sampleWorkspace/connectors-community/package.json +20 -0
  168. package/sampleWorkspace/connectors-community/supergraph.yaml +6 -0
  169. package/sampleWorkspace/sampleWorkspace.code-workspace +29 -8
  170. package/src/__tests__/fixtures/textmate/test.apollo.connectors.mapping +213 -0
  171. package/src/__tests__/fixtures/textmate/test.connect.graphql +104 -0
  172. package/src/language-server/__tests__/fixtures/documents/functionCall.ts.snap +3 -3
  173. package/syntaxes/build.ts +266 -0
  174. package/syntaxes/connectors.mapping.json +532 -0
  175. package/syntaxes/connectors.mapping.yaml +440 -0
  176. package/syntaxes/graphql.connectors.json +426 -0
  177. package/syntaxes/graphql.connectors.yaml +254 -0
  178. package/syntaxes/graphql.json +8 -1
  179. package/syntaxes/publish.sh +43 -0
  180. package/syntaxes/tsconfig.json +6 -0
@@ -0,0 +1,227 @@
1
+ extend schema
2
+ @link(url: "https://specs.apollo.dev/federation/v2.10", import: ["@key", "@requires"])
3
+ @link(
4
+ url: "https://specs.apollo.dev/connect/v0.2"
5
+ import: ["@source", "@connect"]
6
+ )
7
+ @source(
8
+ name: "strapi"
9
+ http: {
10
+ # https://docs.strapi.io/dev-docs/api/rest#endpoints
11
+ baseURL: "http://localhost:1337/api" #See router.yaml for environment variable config option
12
+ headers: [{ name: "Authorization", value: "Bearer {$config.apiKey}" }]
13
+ }
14
+ )
15
+
16
+ type User @key(fields: "id") {
17
+ id: ID!
18
+ username: String
19
+ email: String
20
+ provider: String
21
+ confirmed: Boolean
22
+ blocked: Boolean
23
+ role: Role
24
+ }
25
+
26
+ type Query {
27
+ user(id: ID!): User
28
+ @connect(
29
+ source: "strapi"
30
+ http: { GET: "/users/{$args.id}?populate=role" }
31
+ entity: true
32
+ selection: """
33
+ # https://docs.strapi.io/dev-docs/api/rest#get
34
+ id
35
+ username
36
+ email
37
+ provider
38
+ confirmed
39
+ blocked
40
+ role {
41
+ id
42
+ }
43
+ """
44
+ )
45
+ users(start: Int = 0, limit: Int = 25): [User]
46
+ @connect(
47
+ source: "strapi"
48
+ http: {
49
+ GET: "/users"
50
+ queryParams: """
51
+ pagination[start]: $args.start
52
+ pagination[limit]: $args.limit
53
+ """
54
+ }
55
+ selection: """
56
+ # https://docs.strapi.io/dev-docs/api/rest#get-all
57
+ id
58
+ username
59
+ email
60
+ provider
61
+ confirmed
62
+ blocked
63
+ """
64
+ )
65
+ searchUsers(username: String!): User @connect(
66
+ source: "strapi"
67
+ http: {
68
+ GET: "/users?filters[username][$containsi]={$args.username}"
69
+ }
70
+ selection: """
71
+ # https://docs.strapi.io/dev-docs/api/rest/filters-locale-publication#filtering
72
+ $ ->first {
73
+ id
74
+ username
75
+ email
76
+ provider
77
+ confirmed
78
+ blocked
79
+ }
80
+ """
81
+ )
82
+ }
83
+
84
+ type DeleteUserResponse {
85
+ success: Boolean
86
+ message: String
87
+ }
88
+
89
+ type Mutation {
90
+ deleteUser(id: ID!): DeleteUserResponse
91
+ @connect(
92
+ source: "strapi"
93
+ http: { DELETE: "/users/{$args.id}" }
94
+ selection: """
95
+ # https://docs.strapi.io/dev-docs/api/rest#delete
96
+ success: $(true)
97
+ message: $("User deleted")
98
+ """
99
+ )
100
+ createUser(
101
+ username: String!
102
+ email: String!
103
+ password: String!
104
+ role: Roles = PUBLIC
105
+ ): User
106
+ @connect(
107
+ source: "strapi"
108
+ http: {
109
+ POST: "/users"
110
+ body: """
111
+ $args {
112
+ username
113
+ email
114
+ password
115
+ }
116
+ role: {
117
+ connect: $([{
118
+ id: $args.role->match(
119
+ ["AUTHENTICATED", 1],
120
+ ["PUBLIC", 2],
121
+ )
122
+ }])
123
+ }
124
+ """
125
+ }
126
+ selection: """
127
+ # https://docs.strapi.io/dev-docs/api/rest#create
128
+ id
129
+ username
130
+ email
131
+ provider
132
+ confirmed
133
+ blocked
134
+ """
135
+ )
136
+ updateUserPassword(id: ID!, password: String!): User
137
+ @connect(
138
+ source: "strapi"
139
+ http: {
140
+ PUT: "/users/{$args.id}"
141
+ body: """
142
+ $args {
143
+ id
144
+ password: $args.password
145
+ }
146
+ """
147
+ }
148
+ selection: """
149
+ # https://docs.strapi.io/dev-docs/api/rest#update
150
+ id
151
+ """
152
+ )
153
+ updateUserUsername(id: ID!, username: String!): User
154
+ @connect(
155
+ source: "strapi"
156
+ http: {
157
+ PUT: "/users/{$args.id}"
158
+ body: """
159
+ $args {
160
+ id
161
+ username: $args.username
162
+ }
163
+ """
164
+ }
165
+ selection: """
166
+ # https://docs.strapi.io/dev-docs/api/rest#update
167
+ id
168
+ """
169
+ )
170
+ updateUserEmail(id: ID!, email: String!): User
171
+ @connect(
172
+ source: "strapi"
173
+ http: {
174
+ PUT: "/users/{$args.id}"
175
+ body: """
176
+ $args {
177
+ id
178
+ email: $args.email
179
+ }
180
+ """
181
+ }
182
+ selection: """
183
+ # https://docs.strapi.io/dev-docs/api/rest#update
184
+ id
185
+ """
186
+ )
187
+ updateUserRole(id: ID!, role: Roles): User
188
+ @connect(
189
+ source: "strapi"
190
+ http: {
191
+ POST: "/users"
192
+ body: """
193
+ $args {
194
+ id
195
+ }
196
+ role: {
197
+ connect: $([{
198
+ id: $args.role->match(
199
+ ["AUTHENTICATED", 1],
200
+ ["PUBLIC", 2],
201
+ )
202
+ }])
203
+ disconnect: $([])
204
+ }
205
+ """
206
+ }
207
+ selection: """
208
+ # https://docs.strapi.io/dev-docs/api/rest#update
209
+ id
210
+ username
211
+ email
212
+ provider
213
+ confirmed
214
+ blocked
215
+ role { id }
216
+ """
217
+ )
218
+ }
219
+
220
+ type Role {
221
+ id: ID!
222
+ }
223
+
224
+ enum Roles {
225
+ AUTHENTICATED
226
+ PUBLIC
227
+ }
@@ -0,0 +1,83 @@
1
+ # Stripe REST Connector
2
+
3
+ This connector currently covers a portion of the [Stripe REST API](https://docs.stripe.com/api).
4
+
5
+ ## Prerequisites
6
+
7
+ To use the connector, you need a [Stripe API key](https://docs.stripe.com/keys).
8
+
9
+ ## Getting started
10
+
11
+ 1. If you haven't already, [create a new graph in GraphOS](https://www.apollographql.com/docs/graphos/get-started/guides/rest#step-1-set-up-your-graphql-api). Once you get to the **Set up your local development environment** modal in the [Create a graph](https://www.apollographql.com/docs/graphos/get-started/guides/rest#create-a-graph) section:
12
+ - Copy the `supergraph.yaml` and `router.yaml` files from this folder instead of the `supergraph.yaml` provided by the modal.
13
+ - Instead of downloading the example schema provided by the modal, copy the schema files you want to use for this connector—`checkouts.graphql` and/or `products.graphql`
14
+ - *Note: If you only want to one of the schema files, you need to modify the `supergraph.yaml` file to only contain the respective schema file .*
15
+ 1. Grab your Stripe API key and set it as an environment variable for your terminal:
16
+
17
+ ```
18
+ export STRIPE_API_KEY=....
19
+ ```
20
+
21
+ 1. Run `rover dev` to start the local development session:
22
+
23
+ ```
24
+ APOLLO_KEY=service:My-Graph-s1ff1u:•••••••••••••••••••••• \
25
+ APOLLO_GRAPH_REF=My-Graph-s1ff1u@main \
26
+ rover dev --supergraph-config supergraph.yaml --router-config router.yaml
27
+ ```
28
+
29
+ You’re all set! Open up http://localhost:4000 to query your graph using Apollo Sandbox.
30
+
31
+ ### Adding to an existing graph in GraphOS
32
+
33
+ To add these connectors to an existing graph, publish the schema files to your graph ref using `rover subgraph publish`:
34
+
35
+ ```
36
+ APOLLO_KEY=service:My-Graph-s1ff1u:•••••••••••••••••••••• \
37
+ rover subgraph publish My-Graph-s1ff1u@main --name products --schema products.graphql --routing-url http://products
38
+
39
+ APOLLO_KEY=service:My-Graph-s1ff1u:•••••••••••••••••••••• \
40
+ rover subgraph publish My-Graph-s1ff1u@main --name checkout --schema checkout.graphql --routing-url http://checkout
41
+ ```
42
+
43
+ ## Additional setup for VS Code task runner
44
+
45
+ Edit your `.vscode/settings.json` to include the following Stripe-specific key:
46
+
47
+ ```
48
+ {
49
+ "terminal.integrated.profiles.osx": {
50
+ "graphos": {
51
+ "path": "zsh",
52
+ "args": ["-l"],
53
+ "env": {
54
+ "STRIPE_API_KEY": "",
55
+ ...
56
+ }
57
+ }
58
+ },
59
+ "terminal.integrated.defaultProfile.osx": "graphos"
60
+ }
61
+
62
+ ```
63
+
64
+ Once you've set this up, you can execute the `Tasks: Run Task` command in VS Code to run the `rover dev` task.
65
+ Alternatively, you can open a new terminal window in VS Code with the `graphos` profile, then run `rover dev --supergraph-config supergraph.yaml --router-config router.yaml`.
66
+
67
+ ## Contributing
68
+
69
+ The following schema modules can be added to this connector:
70
+
71
+ - [Core](https://docs.stripe.com/api/)
72
+ - [Payment Methods](https://docs.stripe.com/api/balance)
73
+ - [Checkout](https://docs.stripe.com/api/checkout/)
74
+ - [Payment Link](https://docs.stripe.com/api/payment-link)
75
+ - [Billing](https://docs.stripe.com/api/payment-link)
76
+ ...*see left column of https://docs.stripe.com/api*...
77
+
78
+ To contribute them, make sure to:
79
+
80
+ 1. Add a schema designed for the module as a new `.graphql` file.
81
+ 2. Update the `router.yaml` and `supergraph.yaml` files accordingly.
82
+
83
+ See [REST API reference](https://docs.stripe.com/api) for other modules that can be implemented. You can use the current modules in this folder as examples to work with.
@@ -0,0 +1,112 @@
1
+ extend schema
2
+ @link(url: "https://specs.apollo.dev/federation/v2.10", import: ["@key", "@requires", "@shareable", "@external"])
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 Price @key(fields: "id", resolvable: false) @shareable {
20
+ id: ID!
21
+ active: Boolean
22
+ currency: String
23
+ unitAmount: Float
24
+ }
25
+
26
+ type Session @key(fields: "id") {
27
+ id: ID!
28
+ subtotal: Float
29
+ shipping: Float
30
+ total: Float
31
+ paymentUrl: String
32
+ items: [LineItem] @connect(
33
+ source: "stripe"
34
+ http: { GET: "/checkout/sessions/{$this.id}/line_items" }
35
+ selection: """
36
+ # https://docs.stripe.com/api/checkout/sessions/line_items
37
+ $.data {
38
+ id
39
+ price {
40
+ id
41
+ active
42
+ currency
43
+ unitAmount: unit_amount
44
+ }
45
+ quantity
46
+ }
47
+ """
48
+ )
49
+ }
50
+
51
+ type Query {
52
+ session (id: ID!): Session
53
+ @connect(
54
+ source: "stripe"
55
+ http: { GET: "/checkout/sessions/{$args.id}"}
56
+ selection: """
57
+ # https://docs.stripe.com/api/checkout/sessions/retrieve
58
+ id
59
+ subtotal: amount_subtotal
60
+ shipping: shipping_cost
61
+ total: amount_total
62
+ paymentUrl: url
63
+ """
64
+ entity: true
65
+ )
66
+ sessions(limit: Int = 3): [Session]
67
+ @connect(
68
+ source: "stripe"
69
+ http: { GET: "/checkout/sessions?limit={$args.limit}" }
70
+ selection: """
71
+ # https://docs.stripe.com/api/checkout/sessions/list
72
+ $.data {
73
+ id
74
+ subtotal: amount_subtotal
75
+ shipping: shipping_cost
76
+ total: amount_total
77
+ paymentUrl: url
78
+ }
79
+ """
80
+ )
81
+ }
82
+
83
+ type Mutation {
84
+ createSession(items: [LineItemInput!]!): Session
85
+ @connect(
86
+ source: "stripe"
87
+ http: {
88
+ POST: "/checkout/sessions"
89
+ body: """
90
+ mode: $("payment")
91
+ line_items: $args.items
92
+ success_url: $("https://my-website.com")
93
+ """
94
+ }
95
+ selection: """
96
+ # https://docs.stripe.com/api/checkout/sessions/create
97
+ id
98
+ paymentUrl: url
99
+ """
100
+ )
101
+ }
102
+
103
+ input LineItemInput {
104
+ price: ID!
105
+ quantity: Int
106
+ }
107
+
108
+ type LineItem {
109
+ id: ID
110
+ price: Price!
111
+ quantity: Int
112
+ }