GithubHelp home page GithubHelp logo

apollographql / apollo-studio-community Goto Github PK

View Code? Open in Web Editor NEW
246.0 57.0 30.0 387 KB

🎑 Β GraphQL developer portal featuring an IDE (Apollo Explorer), auto-documentation, metrics reporting, and more. This repo is for issues, feature requests, and preview docs. πŸ“¬

Home Page: https://studio.apollographql.com

graphql federation documentation-generator query-builder graphiql

apollo-studio-community's Introduction

Apollo Studio

For organizations that use or maintain a GraphQL API, Apollo Studio is an end-to-end data graph management platform to explore, deliver, and collaborate on their unified data graph.

This is our community repository where we track bugs, discuss feature requests, and share preview docs. We read everything that comes in here and are grateful to you for any time you spend sharing your thoughts with us.

If you ever need urgent, SLA-backed support for Studio, please email [email protected] – we can't make any guarantees about the speed of our responses on this repo. Also if you'd like to join our community forum to discuss Apollo in general, please visit community.apollographql.com.

What is Studio

Studio is your interface to browse the state of your graph, query your data, and manage the evolution of your graph over time. It is a pillar of the Apollo Platform, alongside Apollo Client, Apollo Server, and Apollo Federation.

Single source of truth for your GraphQL schema

  • Registering your graph with Apollo Studio creates a cloud-hosted source of truth for your schema, giving you access to best-in-class tools for managing your data graph.
  • Studio automatically tracks and logs changes to your schema, so you can easily review and share how your graph has evolved.
  • Keep graph collaborators and consumers up to date with notifications and an automatic changelog whenever your schema changes.

Explore your schema and build queries more easily and intelligently than ever before

  • Studio’s Explorer offers the most advanced GraphQL IDE in the world.
  • Search your schema intelligently and build queries with one click.
  • Use Explorer in Studio’s public sandbox to explore any graph with introspection enabled
  • Use Explorer with your registered graphs to create queries, browse your run history, and save variables in a context-aware environment without requiring introspection.

Deliver changes to your graph with speed and confidence

  • Realize the full potential of an agile data graph with version control, change validation, and release observability purpose-built for GraphQL schemas.
  • Prevent breaking changes to your schema by integrating Schema Checks into your existing CI/CD pipelines.
  • Make changes to your schema on variants to work on new features, test performance, and run checks without changing your graph in production.
  • Track federated schema launches in progress with real-time information on request traffic, gateways reporting, and error rate.

Secure your schema while maintaining flexibility and agility

  • Apollo Studio offers granular controls to keep sensitive information in your graph secure.
  • With a registered graph, you can turn introspection off for security purposes while still giving users in your organization get all of the benefits of Explorer.
  • Set user roles at the organization and graph level to manage how different users can interact with your schemas.
  • Mark variant schemas as protected to limit mutations to only certain users or keys with admin-level access.

Pricing

You can use most of the Studio tools, including Apollo Explorer, schema reference, and CI checks for free. You can also invite unlimited "read-only" users of your registry info to use these tools for free as well.

For more information about our commercial offerings and the total set of free features please see the Apollo pricing page

apollo-studio-community's People

Contributors

alexandermann avatar bonnici avatar bpuckhaber avatar caydie-tran avatar cheapsteak avatar d3rp3tt3 avatar daniman avatar david-castaneda avatar esilverm avatar ezzygemini avatar glasser avatar jainsakshi2395 avatar jchesterman avatar jephuff avatar jglovier avatar jgzuke avatar jsegaran avatar jstjoe avatar matthew-gordon avatar mayakoneval avatar meschreiber avatar papollosc avatar sachindshinde avatar silvermaiden avatar svc-secops avatar swcollard avatar tayrrible avatar timbotnik avatar wendyperalta avatar zionts avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apollo-studio-community's Issues

Feature request: OpenTelemetry integration

To commit to using Apollo Studio long term we need the ability to continuously and automatically export and integrate data into other systems.

A good format the support would be OpenTelemetry as this can be synced into many different tools.

With this feature, we can integrate the data AS collects with our other datasets and understand traces end-to-end through queries to our databases, caches etc. AS gives us a clear and easy interface to help understand and optimise our Graphs and how they are used but cannot serve as a complete solution as the API layer is only the starting point for query resolution.

Without this, Apollo Studio is more of a toy product for us that we will need to replace with a custom solution in the near future.

Query builder doesn't support more than one operation and fragments

How to reproduce?

  1. Paste the following into the code panel:
query Query1 {
  me {
    id
  }
}

query Query2 {
  me {
    ...UserFields
  }
}

fragment UserFields on User {
  name
  username
}
  1. Try to modify the Query2 query or UserFields fragment using query builder panel (not code panel).

My vision is query builder is just another (visual) one-to-one representation of code. And everything that could be possible via code should be possible via query builder, and vice versa. I think the main goal of query builder is that it allows users to build full GraphQL queries without typing a single line of code.

There are some pain points for new GraphQL users. Specifically union types and inline fragments. If the user is not aware of this syntax to query this type of fields it can be a fairly frustrating experience! Query builder helps solve these problems.

Multi-operation and fragments are supported in GraphiQL Explorer. See:

Feature: Webhook notifications for Apollo Studio changelog announcement

It would be great to be able to setup notifications (slack and/or webhook) for new Apollo Studio feature announcements as published in CHANGELOG.md. This would allow for engineers to be notified of new feature drops

This would compliment the existing suite of notifications, which includes:

  • status page alerts
  • schema registry changes
  • operation performance alerts (experimental)
  • daily summary reports
  • build status (preview and webhook-only - see #113 )

Save query/mutations into curated library

Just been giving the Studio a go for the first time. Having spent most of my time in GraphQL Playground, I am loving Apollo Studio already. I would love to switch to it completely, at least to start with for the dev graphs feature before getting our production schema into Studio too.

The one thing that I find though I don't think I could live without is the ability to save queries and mutations into a sort of library. In GraphQL Playground, the closest way of doing this is to just keep the tabs open, and they stay saved.

The Run History tab is pretty awesome, however, it contains a full history, whereas I'd like to curate and keep a set of preprepared queries. Another tab alongside the history for saved queries would be ace.

LMK. Many thanks for an awesome GraphQL ecosystem

Error pushing schema to studio

I got an error from studio using the old apollo cli when pushing the schema to the studio.
I believe this is something that bubbled up from postgres...

Fetching info from federated service 
[GraphQL error]: remaining connection slots are reserved for non-replication superuser connections
Uploading service to Apollo [failed] β†’ remaining connection slots are reserved for non-replication superuser connections     Error: remaining connection slots are reserved for non-replication      superuser connections

User Roles in Apollo Studio - Lock down API keys

As an admin of Apollo Studio, I want to be able to lock down my api keys so that I can have only 1 api key with write permissions to that specific graph variant. Use case is around locking down specific api keys for each environment (dev/test/prod) and those api keys should only have write access to the associated graph variant.

Allow to set threshold (minimum number of requests) for performance alters.

Hello Apollo Studio team,

We use the experimental performance alters integration that Studio provides today. Thank you for this. Those alerts are super helpful.

The "Error percentage" is a great metric that is currently being provided out of the box. However, we would like to be able to customize these metrics so that we receive an alert only when X number of requests fail/error out.

Field usage displaying in "Clients" and "Operations" tabs, but not "Fields" tab

Our GraphQL API gateway runs Apollo Server and reports operation metadata to Apollo Studio via the Usage Reporting plugin.

Recently, this usage information has stopped displaying in the "Fields" tab of Apollo Studio, e.g. "Requests in the last day" are all 0):

image

The data does appear to be present in the Studio db, as our "Operations" and "Clients" tabs are populated, e.g. executed operations sliced by client in "Clients":

image

To reiterate, when looking at the exact same operation across both tabs, "Fields" displays 0 usage, and "Clients" displays the expected request volume.


As far as I am aware, we have not changed any Apollo Studio or gateway configuration recently. Is usage display per tab in Studio configured separately somehow?

Feature Suggestions for Explorer

Hi. I tried out Apollo Explorer today. Really appreciate the work that Apollo has been doing to empower its users. Kudos.

Had some suggestions (which you can prioritize according to your convenience).

Saving queries and mutations and organising them as folders for easy access

While I did try the run history, its not the best way to browse the queries/mutations in an organized fashion. It would be better to have them saved like what insomnia or postman supports and organize them into appropriate folders and maybe even add tags/labels to them.

Support for templating

While this is not a graphql spec, but when you want to change value at one place and have it reflect in all variables used, this would be great. Again, taking the inspiration from insomnia and postman

Export and import queries and mutations

While I would very much like to use explorer. I don't want to get locked in to use it. I would also like to export/import to/from other tools like insomnia, postman, postwoman or playground

Ability to use it as VSCode extension

This would be really helpful so that I need not switch contexts to browser and VSCode back and forth. Since you have a VSCode extension already from Apollo, you can very much try adding the explorer there.

Allowing the explorer to be embedded in pages/websites

When you want the text/markdown/html documentation and GraphQL explorer to live together, something like embedding a jsfiddle along with the docs, you can see if you can provide a embed code or share option so that the persisted query/mutation can be embedded and run along with the docs.

Hope this helps. If all of this happens, then it will be a revolutionary thing and compete with almost any GraphQL client/tool out there.

PS: Is it meant to be hosted offerring or is there any plan to release it as opensource tool like insomnia out?

Thanks.

Integrate Apollo Studio into VSCode

The rationale is very simple: why is another separate IDE for GraphQL, if user already has an IDE (for code)?

See the experiment of integrating GraphiQL Explorer into VSCode: https://twitter.com/___zth___/status/1255423586325626881

See the experiment of integrating GraphQL Voyager into VSCode: https://twitter.com/alexey_rodionov/status/1246469032775163906

See the experiment of integrating GraphQL Editor into VSCode: https://twitter.com/alexey_rodionov/status/1246509268834140162

Schema checks not displaying in Studio, despite appearing in GH status checks

In the process of moving to managed federation, we've implemented schema checks in CI flows for multiple services according to these studio docs.

The CLI is receiving expected response for valid/invalid schema update checks, and the pass/fail of checks is getting reported in our service repos' Github status checks via the Apollo Studio GH app (implemented per these studio docs). Despite this, the schema checks are not actually appearing in the Apollo Studio "Checks" tab for each graph variant (link provided in Github status check just links to the Services tab instead of the passing/failing check).

Not sure if this could be related to configuration, or if we're encountering a bug.

Cannot connect to my endpoint

Hi,

I am having issues connecting from https://studio.apollographql.com/sandbox/explorer to my endpoint which is not accessible to the whole internet, but it is accessible to me.

The error I get is Unable to reach server.

The endpoint is available. I can reach it with curl.

When I run the diagnosis command:
npx [email protected] --endpoint=https://xxx.xxx.xxx (edited for privacy)

I get this:
Diagnosing https://xxx.xxx.xxx/ (changed url for privacy)
Could not find any problems with the endpoint. Would you please to let us know about this at [email protected] πŸ™
npm notice
npm notice New minor version of npm available! 7.19.1 -> 7.22.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v7.22.0
npm notice Run npm install -g [email protected] to update!
npm notice

I sent an email to [email protected] but I get this response:

We're writing to let you know that the group you tried to contact (explorer-feedback) may not exist, or you may not have permission to post messages to the group. A few more details on why you weren't able to post:

  • You might have spelled or formatted the group name incorrectly.
  • The owner of the group may have removed this group.
  • You may need to join the group before receiving permission to post.
  • This group may not be open to posting.

I have checked in the chrome console and I do not see any CORS issue. I only get this warning:
thin-client-min.js?v=2.80.0-75-2-gf82d2adda7:8 has an invalid href value

When I check in the network tab and I change the url that apollo studio has to access I see the same request/response as when I try a graphql api that works like the SpaceX one.

Do you have any other ideas of what I can try?

Thanks.

Allow to set Schema change notification preference per operation.

Hello Apollo Studio team,

We are on a Team plan and use the Schema Change Notifications integration that the Studio provides today.

We use graphql federation with multiple federated systems (multiple squads and each managing their own federated system), we would like to be able to set the Schema Change Notifications per operation so that the appropriate squad is notified about the changes to the graph.

User Roles - Allow teams to setup and manage their own notification integrations

I'd really love the ability for my Lead Engineers to setup and manage their teams slack notifications such as add/change which operations they're interested in and thresholds for rpm, response times etc.

As best as I can tell this requires granting them the Graph Admin role, which also provides them access to things such as API Keys, delete/rename graph, member management and more.

Ideally it'd be great to have something in between, or allow the Contributor role to do certain things around slack integrations

Suggestions in Variables stopped working

I am using ApolloServer with express and the schema is being created via Nexus' makeSchema()
From the start of the project the suggestions was working, but then at some point they just stopped working.

Attached the image:

image

Ability to target schema change slack notifications by sub-graph, client, operation or type. Oh my!

To set some context, the federated GraphQL roll-out at my organization is going very well. Every sprint we are adding 1-2 new sub-graph and we are making schema changes all the time πŸŽ‰

We have a number of product-specific Slack channels which are currently registered for Schema Change Notifications so that our front-end teams can see updates to the GraphQL Schema. This was working really well for the first few product teams needed.

More recently though, the frequency of notifications is increasing and the relevance of the slack notifications to a particular product channel is decreasing.

It would be great to be able to filter the schema change notification to be either at a variant level (current), sub-graph(s), client(s) or operation(s) level so that we could target the notifications for a given slack channels audience

Notifications: Include graph variant name in performance alerts

Current behavior

Whenever a Performance Alert notification is delivered to Slack, the footer of this notification contains a row with the following information/convention

Service: {graphName} | {month} {date}

This makes it tricky to triage which variant the performance alert was for triggered for when using a shared slack channel (ie: a squad channel)

Enhancement proposal

Update the above convention to include the variant name / GRAPH_REF) for which the performance alert exceeded the configured thresholds - ie: {graphName}@{variantName}

Allow Notifications for a group of operations or a named sub graph

We have enabled Slack notifications, it will be a bit difficult to manage notifications of operations for federated graphs

Each federated sub graph will be owned by a different team, it will be a great if the notifications cna be enabled on group of operations or named sub graph

Content Header Missing From Generated Curl Code

When copying the curl code from the Apollo Studio, I'm getting the following:

curl --request POST \
    --url http://localhost:4000/graphiql \
    --data '{"query":"query ExampleQuery($personId: ID!) {\n  person(id: $personId) {\n    email\n  }\n}","variables":"{\n  \"personId\": \"1\"\n}"}'

but it needs to be the following in my local development environment:

curl -i --request POST \
 --url http://localhost:4000/graphiql \
 -H "Content-Type: application/json" \
 --data '{"query":"query ExampleQuery($personId: ID!) {\n person(id: $personId) {\n email\n }\n}","variables":"{\n \"personId\": \"1\"\n}"}' 

This may or may not be an issue but the content header -H "Content-Type: application/json" is missing in the curl code.

πŸ› Bug in update schema instruction of federation graph at https://studio.apollographql.com/

(Sorry if this is not proper place to report this kind of bug, between github and community forum, I chose github issue.)

Problem

The following screenshots are "Register your schema" and "Update schema" instruction of federation graph.

In the option 2, which user publishes subgraph by introspect subgraph server, the instruction command is started with:
rover graph introspect... (in the pink box)

At the first time Graph is created (Register your schema) When updating current graph (Update schema)
θ²Όγ‚Šδ»˜γ‘γŸη”»εƒ_2021_09_14_18_57 θ²Όγ‚Šδ»˜γ‘γŸη”»εƒ_2021_09_14_18_54

Expected Behavior

  • rover will introspect each subgraph server and publish successfully to Studio, and we get Federated Graph.

Actual Behavior

  • we used rover graph introspect... command but it didn't work and produced error like: "Field "Abc.id" can only be defined once.".

Solved

  • We found out that there is command: rover subgraph introspect which is used to introspect subgraph schema of federation (and different than rover graph in the instruction that seem does not support Federation)
  • The document also specify that:

Unlike a standard introspection query, the result of rover subgraph introspect does include certain directives (specifically, directives related to federation like @key). This is possible because the command uses a separate introspection mechanism provided by the Apollo Federation specification.

  • We use rover subgraph introspect and everything works ok. So if this is a bug, please fix the instruction.

Thank you for your great work!

Feature Suggestion: Allow Discord Webhooks

Discord is capable of handling/executing slack webhooks (see this)

However, currently the Slack integration limits you to webhook URLs that match the regex embedded in the JS of Apollo Studio. This limitation is only a client side limitation as if you modify the request before it is sent to use the discord webhook url instead the test message comes through successfully. I have yet to verify the other messages that come through, but at least the test message works. The details on the discord developer page should shed more light on what is possible through executing slack webhooks on discord. Even if there are limitations, discord provides native webhooks as well which could also be added as an option separate from the slack integration.

Endpoint URL Explorer

Am new to Apollo Studio and GraphQL, am stuck on explorer and i have already registered my schema on Apollo Studio. To cut the long story short, what is the ENDPOINT URL on Explorer? What does it do and which url am i supposed to provide as the value for the ENDPOINT URL input field?

README Links: Infer logo when adding repository urls

Firstly, really love the README functionality. This ticket is to propose an enhancement to the Repository Link feature.

Current behavior

All repository links are displayed with a GitHub logo

Enhancement proposal

Support a larger set of logos for popular hosted git platforms (inferred from URL domain) such as:

  • Bitbucket
  • GitLab
  • Azure DevOps
  • AWS CodeCommit
  • etc

Stuck setting up development graph

As per this blog post I'm attempting to set up a development graph in Apollo Studio.

When plugging in my local URL, all I get is this:

image

At first I think I got stuck with CORS issues. I believe I've solved them, but it's still not working, and I assume it's because the API is behind authentication, but I haven't found any way to set authentication headers before setting up the graph. Authentication is required to determine who the client is and what data they have access to, so it's not something that can simply be turned off in development.

Feature: Export the deprecations/history

We have a lot of API consumers (many external).
It would be very helpful if we could export a changelog (ideally in markdown format) from the history page that we can send to API consumers.

"We've run into an unexpected error."

Hi,

Very very frequently I have this issue:
image

With those logs (It seems to be related to datadog? I don't have a datadog integration at all):
image

Byebye

Extra scrollbar

Hello,

First of all, amazing product! Very nice to use πŸ‘Œ

Just a tiny bug to make it even better (easier to spot on windows since mac hide the scrollbar by default), you have an extra scrollbar in the main layout

image
image

Ability to forward Studio performance metrics to Prometheus

Hello Apollo Studio team,

We are on a Team plan and would like to forward the performance metrics Studio provides to the Prometheus setup we have in our organization. It would be great if you can allow this integration (just the Datadog integration you have today) from Apollo Studio directly.

Question about the schema registry

In my project, we have several Graphql APIs that have their schema stitched into one larger schema on startup. We were hoping to use the schema registry feature as a single source of truth for these services during and after db migrations. It was quite easy to integrate with our CLI regarding the upload of the schema.

Is it also possible to download the schema from the registry? We could not find that feature.

Notifications: Ability to edit channel name

Current behavior

The current Edit channel functionality only supports updating the slack/webhook URL.

This makes it hard to keep the notification channel name meaningful as organization changes occur (squad changes) and/or slack channels get renamed/split/merged.

As a workaround, you currently have to create a new notification channel and then depending on the type of notification (perf vs daily report vs ....) either migrate and/or re-setup

Enhancement proposal

Support the ability to rename the notification channel name. This would avoid the above workaround and improve the Graph Admin DX 😎

feat: `connectionParams` for subscription

Hi!

Thanks for maintaining this cool explorer.

However, I couldn't find how to set connectionParams for subscription.

To my test, Headers in "Headers" tab are only applied to http (Query, Mutattion), not ws(Subscription).

Let me show you an example of configuring connectionParams in Altair.

Screenshot from 2021-10-04 16-51-51

Deprecations not appearing in the "Deprecations" tab

Hi, I deprecated a field in my schema using the @deprecated directive and then I pushed it to Apollo Studio.

Now I see it in the SDL:

input SetInSeenlistInput {
	userInfo: UserInfo @deprecated(reason: "...")
}

It's even being displayed as deprecated in the changelog:

Screenshot 2021-05-20 at 19 35 53

But then when I'm going to the Deprecations tab of the Fields, I'm getting:

Screenshot 2021-05-20 at 19 39 49

Am I missing something? Thanks in advance πŸ™

History page incorrectly flags breaking changes

Starting with this schema:

type Dog {
  name: String!
}

type Query {
  dogs: [Dog!]!
}

And reporting this new schema:

type Dog {
  name: String!
}

type Query {
  dogs: [Dog!]!
}

input CreateDogInput {
  name: String!
}

type Mutation {
  createDog(input: CreateDogInput!): Dog!
}

Apollo Studio's History page lists the following as a breaking change:

CreateDogInput
Input_object
Addition
name: String!
input type CreateDogInput: non-null field name added.
See NON_NULLABLE_FIELD_ADDED_TO_INPUT_OBJECT documentation for more details.

This is incorrect. NON_NULLABLE_FIELD_ADDED_TO_INPUT_OBJECT is supposed to represent the addition of a field to an existing input object, but CreateDogInput didn't previously exist. There is no possible breaking change here.

I also noticed that Apollo Studio doesn't list a TYPE_ADDED change for CreateDogInput, so it seems not to be picking up the fact that this is a new type, which may be the root cause of the false positive.

πŸ› Bug when getting japanese comments in graph from Apollo Uplink

Problem

We are using managed federation of Apollo Studio, and our graph is commented in Japanese.
When we come to the gateway to see the graph at /graphql, all Japanese comments become question mark (?) (the comments in English are ok) so we are in trouble because our developers can not read the Japanese comments from Gateway graph any more.

I have found out that:

  • Japanese comments are correctly showed at:
  • But they all become (?) when we read from gateway's schema because the gateway uses uplink.
    • θ²Όγ‚Šδ»˜γ‘γŸη”»εƒ_2021_10_15_16_08

I have created an example graph so you can check the bug with following curl commands (I know it is not good to public my apiKey with curl like this, but this is just an example graph, and after your comment on this issue, I will remove it --> removed):

  • Getting graph by Apollo Uplink https://uplink.api.apollographql.com/ endpoint lead to unreadable comment
# query
curl --location --request POST 'https://uplink.api.apollographql.com/' \
--header 'Content-Type: application/json' \
--data-raw '{"query":"query SupergraphSdl($apiKey: String!, $ref: String!) {\n    routerConfig(ref: $ref, apiKey: $apiKey) {\n      __typename\n      ... on RouterConfigResult {\n        id\n        supergraphSdl: supergraphSDL\n      }\n      ... on FetchError {\n        code\n        message\n      }\n    }\n  }","variables":{"ref":"japanese-comments-graph@test","apiKey":"service:japanese-comments-graph:pBF4hTSBMPK1e5_M7EtUmg"}}'
# --->  result
....Apollo Studio is ???????....
Full result {"data":{"routerConfig":{"__typename":"RouterConfigResult","id":"_kVofO8IimeE7d5EUMuCpIPD3LN8Cy52zv8-1X1lKjo","supergraphSdl":"schema @core(feature: \"https://specs.apollo.dev/core/v0.1\") @core(feature: \"https://specs.apollo.dev/join/v0.1\") @apollo_studio_metadata(launchId: \"c82cb784-0122-459a-818c-795a0bc1bdc7\", buildId: \"c82cb784-0122-459a-818c-795a0bc1bdc7\", checkId: null) {\n query: Query\n mutation: Mutation\n}\n\ndirective @core(feature: String!) repeatable on SCHEMA\n\ndirective @join__field(graph: join__Graph, requires: join__FieldSet, provides: join__FieldSet) on FIELD_DEFINITION\n\ndirective @join__type(graph: join__Graph!, key: join__FieldSet) repeatable on OBJECT | INTERFACE\n\ndirective @join__owner(graph: join__Graph!) on OBJECT | INTERFACE\n\ndirective @join__graph(name: String!, url: String!) on ENUM_VALUE\n\nscalar join__FieldSet\n\nenum join__Graph {\n PRODUCTS @join__graph(name: \"products\", url: \"http://products.prod.svc.cluster.local:4001/graphql\")\n}\n\ntype Mutation {\n pleaseMakeJapaneseCommentsReadable(\n \"\"\"Parameters for PleaseMakeJapaneseCommentsReadable\"\"\"\n input: PleaseMakeJapaneseCommentsReadableInput!\n ): PleaseMakeJapaneseCommentsReadablePayload @join__field(graph: PRODUCTS)\n}\n\n\"\"\"Autogenerated input type of PleaseMakeJapaneseCommentsReadable\"\"\"\ninput PleaseMakeJapaneseCommentsReadableInput {\n \"\"\"A unique identifier for the client performing the mutation.\"\"\"\n clientMutationId: String\n}\n\n\"\"\"Autogenerated return type of PleaseMakeJapaneseCommentsReadable\"\"\"\ntype PleaseMakeJapaneseCommentsReadablePayload {\n \"\"\"A unique identifier for the client performing the mutation.\"\"\"\n clientMutationId: String\n result: String!\n}\n\ntype Query {\n \"\"\"Apollo Studio is ???????\"\"\"\n apolloStudioIsAwesome: String @join__field(graph: PRODUCTS)\n}\n\ndirective @apollo_studio_metadata(launchId: String, buildId: String, checkId: String) on SCHEMA\n"}}}%

Expected Behavior

  • the Japanese comment ("素晴らしいです") should be correctly showed as below πŸ‘‡ when getting from graphql.api.apollographql.com. Please fix the introspection from Uplink link so we can read the Japanese comment.

    • Getting graph by rover (or Apollo Studio web) at https://graphql.api.apollographql.com/api/graphql endpoint
# query
curl --location --request POST 'https://graphql.api.apollographql.com/api/graphql' \
--header 'x-api-key: service:japanese-comments-graph:pBF4hTSBMPK1e5_M7EtUmg' \
--header 'Content-Type: application/json' \
--data-raw '{"query":"query SupergraphFetchQuery($graph_id: ID!, $variant: String!) {\n  service(id: $graph_id) {\n    schemaTag(tag: $variant) {\n      compositionResult {\n        __typename\n        supergraphSdl\n      }\n    }\n  }\n}\n","variables":{"graph_id":"japanese-comments-graph","variant":"test"}}'
# ---> result
.... Apollo Studio is 素晴らしいです ....
Full result {"data":{"service":{"schemaTag":{"compositionResult":{"__typename":"CompositionPublishResult","supergraphSdl":"schema @core(feature: \"https://specs.apollo.dev/core/v0.1\") @core(feature: \"https://specs.apollo.dev/join/v0.1\") @apollo_studio_metadata(launchId: \"c82cb784-0122-459a-818c-795a0bc1bdc7\", buildId: \"c82cb784-0122-459a-818c-795a0bc1bdc7\", checkId: null) {\n query: Query\n mutation: Mutation\n}\n\ndirective @core(feature: String!) repeatable on SCHEMA\n\ndirective @join__field(graph: join__Graph, requires: join__FieldSet, provides: join__FieldSet) on FIELD_DEFINITION\n\ndirective @join__type(graph: join__Graph!, key: join__FieldSet) repeatable on OBJECT | INTERFACE\n\ndirective @join__owner(graph: join__Graph!) on OBJECT | INTERFACE\n\ndirective @join__graph(name: String!, url: String!) on ENUM_VALUE\n\nscalar join__FieldSet\n\nenum join__Graph {\n PRODUCTS @join__graph(name: \"products\", url: \"http://products.prod.svc.cluster.local:4001/graphql\")\n}\n\ntype Mutation {\n pleaseMakeJapaneseCommentsReadable(\n \"\"\"Parameters for PleaseMakeJapaneseCommentsReadable\"\"\"\n input: PleaseMakeJapaneseCommentsReadableInput!\n ): PleaseMakeJapaneseCommentsReadablePayload @join__field(graph: PRODUCTS)\n}\n\n\"\"\"Autogenerated input type of PleaseMakeJapaneseCommentsReadable\"\"\"\ninput PleaseMakeJapaneseCommentsReadableInput {\n \"\"\"A unique identifier for the client performing the mutation.\"\"\"\n clientMutationId: String\n}\n\n\"\"\"Autogenerated return type of PleaseMakeJapaneseCommentsReadable\"\"\"\ntype PleaseMakeJapaneseCommentsReadablePayload {\n \"\"\"A unique identifier for the client performing the mutation.\"\"\"\n clientMutationId: String\n result: String!\n}\n\ntype Query {\n \"\"\"Apollo Studio is 素晴らしいです\"\"\"\n apolloStudioIsAwesome: String @join__field(graph: PRODUCTS)\n}\n\ndirective @apollo_studio_metadata(launchId: String, buildId: String, checkId: String) on SCHEMA\n"}}}}}

Looking forward to your support πŸ™‡

User Roles - Assign Specific Variant to an API Key

As originally being discussed in issue #10, it would be great as an administrator of Apollo Studio to have the ability to assign a specific graph variant to each API Key.

This would allow us to have an API Key dedicated for each environment/variant, which is common policy in most corporate organizations around secrets management, and would ensure that graph operations (ie: schema push) is limited to the specific varianet

Valid schema with interface implements interface fails to upload

Schema

interface ParentDescendant {
    id: ID!
    parentId: ID!
}
interface ChildDescendant implements ParentDescendant {
    id: ID!
    parentId: ID!
    childId: ID!
}

type One implements ChildDescendant, ParentDescendant {
    id: ID!
    parentId: ID!
    childId: ID!
}

type Two implements ChildDescendant, ParentDescendant {
    id: ID!
    parentId: ID!
    childId: ID!
}

The above schema seems to be valid as per apollographql/federation#30

However, when I push using apollo service:push, the 3rd step throws the following error:

Schema must contain uniquely named types but contains multiple types named "ParentDescendant"

Screen Shot 2020-11-21 at 9 38 33 PM

Notifications: Ability to configure time interval for Performance Alerts

Current behavior

When defining any Performance Alert configurations, they will all be evaluated on a sliding 5-minute window

Enhancement proposal

It would be nice to be able to define the time interval on a per Performance Alert basis. In some of our use-cases, there are business scenarios where a longer time interval would be more suitable. The time interval could come from a larger set of pre-defined windows, or could be 100% Graph Admin driven.

Feature Req: Improve UX when navigating between clients and client operations

One of the features I love and use most in Apollo Studio is the Clients + Operations sections.

Typically I am

  • Looking through the list of clients (products)
  • Selecting a specific client and looking at their operations
  • Selecting a particular operation for that client to see performance/trace etc goodness. This redirects into the Operations screen

Once here though, it gets a bit clunky if I wanted to look at another operation for the same previously selected client.

  • Choosing a different operation name in the filter dropdown clears the client filter
  • Going back in the browser goes back to the Client screen but looses its context on the previously selected client

I think there is a great opportunity to tighten up this end user experience

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.