Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: organization access tokens #6591

Merged
merged 41 commits into from
Mar 13, 2025
Merged

docs: organization access tokens #6591

merged 41 commits into from
Mar 13, 2025

Conversation

n1ru4l
Copy link
Contributor

@n1ru4l n1ru4l commented Mar 7, 2025

Copy link
Contributor

coderabbitai bot commented Mar 7, 2025

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Introduced organization-level access tokens for enhanced security and granular permissions.
    • Added new CLI options for configuring usage reporting targets.
  • Documentation

    • Expanded and reorganized guides and migration information.
    • Updated content for federated specifications, token management, and error handling guidance.
  • UI & UX Improvements

    • Refreshed pricing pages with a new plans table and updated icons.
    • Enhanced component styling and layout for improved responsiveness and clarity.
  • Quality Enhancements

    • Improved error handling and integrated tests for a more reliable user experience.

Walkthrough

This pull request spans multiple areas including documentation, library configuration, and API error handling. In the docs, new metadata entries and several content reorgs improve the coverage of access tokens and usage reporting. Configuration changes consistently replace boolean flags with structured objects (including target details) for reporting, while various libraries and CLI components receive version bumps and enhanced error handling (e.g. using session‑based error raising). Additional test cases, UI/styling improvements, and dependency updates are also included.

Changes

File(s) Summary
packages/web/docs/src/content/management/_meta.ts, .../content/_meta.ts, packages/web/docs/src/content/migration-guides/_meta.tsx, packages/web/docs/src/app/product-updates/(posts)/2025-03-10-new-access-tokens/page.mdx Docs Metadata & Updates: Added new metadata entries (“access-tokens”, “migration-guides”), revised terminology (from Registry Access Tokens to Access Tokens), and introduced a new product update post on organization‑level access tokens.
packages/web/docs/src/content/management/access-tokens.mdx, .../get-started/apollo-federation.mdx, .../get-started/schema-stitching.mdx, .../get-started/single-project.mdx, .../api-reference/cli.mdx, .../management/projects.mdx, .../management/targets.mdx, packages/web/docs/src/content/other-integrations/*, .../specs/usage-reports.mdx, .../schema-registry/app-deployments.mdx, .../migration-guides/organization-access-tokens.mdx, .../specs/link-specifications.mdx Docs Content & Formatting: Adjusted formatting, relocated content sections, rephrased instructions (e.g. for the --url flag and CLI commands), and expanded configuration details for clarity and consistency.
packages/web/docs/src/app/layout.tsx, .../federation-compatible-benchmarks/*, .../components/company-testimonials/index.tsx, .../components/icons.tsx, .../components/nested-sticky.tsx, .../components/pricing/*, .../components/slider.tsx, .../content/gateway/* (logging, monitoring, compression, AWS SigV4) UI & Styling Updates: Introduced new components (e.g. NestedSticky, CheckmarkIcon, PlansTable), replaced inline styles with Tailwind CSS classes, added new CSS easing definitions, and updated layout/styling across various docs sections.
.changeset/*, .eslintrc.cjs, deployment/CHANGELOG.md, deployment/package.json, deployment/services/graphql.ts, integration-tests/tests/* Changelog, Config & Tests: Added/deleted changeset files, updated ESLint whitelist, bumped deployment version (5.1.3), toggled request logging settings, and introduced new integration tests for schema usage and CLI validations.
packages/libraries/apollo/*, packages/libraries/cli/*, packages/libraries/core/*, packages/libraries/envelop/*, packages/libraries/router/*, packages/libraries/yoga/* Library & CLI Updates: Multiple version bumps; added support for specifying usage reporting targets via structured configuration objects; replaced boolean flags with detailed objects; and enhanced error handling (including new error conditions in CLI and core libraries).
packages/services/api/src/modules/* (app‑deployments, auth, schema, shared, errors) and packages/services/schema/* Services API & Auth Changes: Refactored error handling to use session‑based raising (via session.raise) instead of throwing exceptions; added new error class (MissingTargetError); updated GraphQL schema inputs and merged type extension logic; and introduced identifiers in access token sessions.
packages/web/app/src/lib/hooks/use-date-range-controller.ts, packages/web/app/src/pages/target-insights-operation.tsx Web App Updates: Adjusted date range logic and refined operation view rendering to distinguish between loading states and missing operations.
packages/web/docs/package.json, packages/services/api/package.json, packages/services/schema/package.json Dependency Updates: Upgraded dependency versions including Tailwind config and GraphQL tools merge.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as Developer
  participant Config as Usage Configuration
  participant Core as Hive Core Library
  participant Agent as Usage Agent
  Dev->>Config: Set usage: { target: "<ORG>/<PROJECT>/<TARGET>" }
  Config->>Core: Pass configuration via createUsage()
  Core->>Agent: Construct endpoint (appending target if provided)
  Agent->>Core: Report usage data
Loading
sequenceDiagram
  participant Client as API Client
  participant Service as Service Method
  participant Session as Session Manager
  Client->>Service: Request an operation
  Service->>Session: Validate target & permissions
  Session-->>Service: Detect missing target
  Service->>Session: Call session.raise('action')
  Session->>Client: Return error "ERR_MISSING_TARGET"
Loading

Possibly related PRs


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

github-actions bot commented Mar 7, 2025

🚀 Snapshot Release (alpha)

The latest changes of this PR are available as alpha on npm (based on the declared changesets):

Package Version Info
@graphql-hive/apollo 0.38.1-alpha-20250312012927-9a241766a00f1de716ff20396305602638329958 npm ↗︎ unpkg ↗︎
@graphql-hive/cli 0.49.1-alpha-20250312012927-9a241766a00f1de716ff20396305602638329958 npm ↗︎ unpkg ↗︎
@graphql-hive/core 0.10.1-alpha-20250312012927-9a241766a00f1de716ff20396305602638329958 npm ↗︎ unpkg ↗︎
@graphql-hive/envelop 0.35.1-alpha-20250312012927-9a241766a00f1de716ff20396305602638329958 npm ↗︎ unpkg ↗︎
@graphql-hive/yoga 0.41.1-alpha-20250312012927-9a241766a00f1de716ff20396305602638329958 npm ↗︎ unpkg ↗︎
hive 6.0.0-alpha-20250312012927-9a241766a00f1de716ff20396305602638329958 npm ↗︎ unpkg ↗︎

Copy link
Contributor

github-actions bot commented Mar 7, 2025

💻 Website Preview

The latest changes are available as preview in: https://d19d74f5.hive-landing-page.pages.dev

Copy link
Contributor

github-actions bot commented Mar 7, 2025

🐋 This PR was built and pushed to the following Docker images:

Targets: build

Platforms: linux/arm64

Image Tag: 9a241766a00f1de716ff20396305602638329958

Docker Bake metadata
{
"app": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/api/health",
          "build-arg:IMAGE_DESCRIPTION": "The app of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/app",
          "build-arg:PORT": "3000",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/app",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/hcg929nmkh1j7d5b76zl2g8i9",
  "containerimage.config.digest": "sha256:4c03c3af706f3f9249dbb1d1b52dff20102b0ecb19d3a8ef2445853db11b6c99",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:e3874f529e5e23fa44ee88a6abf512740819381adc280560000fae7ca48b8163",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:e3874f529e5e23fa44ee88a6abf512740819381adc280560000fae7ca48b8163",
  "image.name": "ghcr.io/graphql-hive/app:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/app:docs_organization_access_tokens-arm64"
},
"buildx.build.warnings": [
  {
    "vertex": "sha256:4de2e6440f7d1afbcaa6b802a1e49002d57f56a22f4689e7b0139a3cd7aebebe",
    "level": 1,
    "short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRJTUFHRV9USVRMRScgKGxpbmUgMTIp",
    "detail": [
      "VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
    "sourceInfo": {
      "filename": "services.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 12
        },
        "end": {
          "line": 12
        }
      }
    ]
  },
  {
    "vertex": "sha256:4de2e6440f7d1afbcaa6b802a1e49002d57f56a22f4689e7b0139a3cd7aebebe",
    "level": 1,
    "short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRJTUFHRV9ERVNDUklQVElPTicgKGxpbmUgMTQp",
    "detail": [
      "VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
    "sourceInfo": {
      "filename": "services.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 14
        },
        "end": {
          "line": 14
        }
      }
    ]
  },
  {
    "vertex": "sha256:4de2e6440f7d1afbcaa6b802a1e49002d57f56a22f4689e7b0139a3cd7aebebe",
    "level": 1,
    "short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRQT1JUJyAobGluZSAyMik=",
    "detail": [
      "VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
    "sourceInfo": {
      "filename": "services.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 22
        },
        "end": {
          "line": 22
        }
      }
    ]
  },
  {
    "vertex": "sha256:4de2e6440f7d1afbcaa6b802a1e49002d57f56a22f4689e7b0139a3cd7aebebe",
    "level": 1,
    "short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDIyKQ==",
    "detail": [
      "TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
    "sourceInfo": {
      "filename": "services.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 22
        },
        "end": {
          "line": 22
        }
      }
    ]
  },
  {
    "vertex": "sha256:134a30b6dea2559888d164df119a71ade5be165e1dc869d08a5cadd609c25806",
    "level": 1,
    "short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRSRUxFQVNFJyAobGluZSAxMik=",
    "detail": [
      "VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
    "sourceInfo": {
      "filename": "migrations.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 12
        },
        "end": {
          "line": 12
        }
      }
    ]
  },
  {
    "vertex": "sha256:4de2e6440f7d1afbcaa6b802a1e49002d57f56a22f4689e7b0139a3cd7aebebe",
    "level": 1,
    "short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDIxKQ==",
    "detail": [
      "TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
    "sourceInfo": {
      "filename": "services.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 21
        },
        "end": {
          "line": 21
        }
      }
    ]
  },
  {
    "vertex": "sha256:134a30b6dea2559888d164df119a71ade5be165e1dc869d08a5cadd609c25806",
    "level": 1,
    "short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDEyKQ==",
    "detail": [
      "TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
    "sourceInfo": {
      "filename": "migrations.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 12
        },
        "end": {
          "line": 12
        }
      }
    ]
  },
  {
    "vertex": "sha256:134a30b6dea2559888d164df119a71ade5be165e1dc869d08a5cadd609c25806",
    "level": 1,
    "short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRJTUFHRV9USVRMRScgKGxpbmUgMTUp",
    "detail": [
      "VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
    "sourceInfo": {
      "filename": "migrations.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 15
        },
        "end": {
          "line": 15
        }
      }
    ]
  },
  {
    "vertex": "sha256:134a30b6dea2559888d164df119a71ade5be165e1dc869d08a5cadd609c25806",
    "level": 1,
    "short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRJTUFHRV9ERVNDUklQVElPTicgKGxpbmUgMTcp",
    "detail": [
      "VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
    "sourceInfo": {
      "filename": "migrations.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 17
        },
        "end": {
          "line": 17
        }
      }
    ]
  },
  {
    "vertex": "sha256:4de2e6440f7d1afbcaa6b802a1e49002d57f56a22f4689e7b0139a3cd7aebebe",
    "level": 1,
    "short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRSRUxFQVNFJyAobGluZSAxMyk=",
    "detail": [
      "VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
    "sourceInfo": {
      "filename": "services.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 13
        },
        "end": {
          "line": 13
        }
      }
    ]
  },
  {
    "vertex": "sha256:4de2e6440f7d1afbcaa6b802a1e49002d57f56a22f4689e7b0139a3cd7aebebe",
    "level": 1,
    "short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDIwKQ==",
    "detail": [
      "TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
    "sourceInfo": {
      "filename": "services.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 20
        },
        "end": {
          "line": 20
        }
      }
    ]
  },
  {
    "vertex": "sha256:4de2e6440f7d1afbcaa6b802a1e49002d57f56a22f4689e7b0139a3cd7aebebe",
    "level": 1,
    "short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRSRUxFQVNFJyAobGluZSAyMSk=",
    "detail": [
      "VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
    "sourceInfo": {
      "filename": "services.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 21
        },
        "end": {
          "line": 21
        }
      }
    ]
  },
  {
    "vertex": "sha256:134a30b6dea2559888d164df119a71ade5be165e1dc869d08a5cadd609c25806",
    "level": 1,
    "short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDEwKQ==",
    "detail": [
      "TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
    "sourceInfo": {
      "filename": "migrations.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 10
        },
        "end": {
          "line": 10
        }
      }
    ]
  },
  {
    "vertex": "sha256:134a30b6dea2559888d164df119a71ade5be165e1dc869d08a5cadd609c25806",
    "level": 1,
    "short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDExKQ==",
    "detail": [
      "TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
    ],
    "url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
    "sourceInfo": {
      "filename": "migrations.dockerfile",
      "data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
      "language": "Dockerfile"
    },
    "range": [
      {
        "start": {
          "line": 11
        },
        "end": {
          "line": 11
        }
      }
    ]
  }
],
"commerce": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The commerce service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/commerce",
          "build-arg:PORT": "3010",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/commerce",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/wguyz5gbh2qz8tvpr15u6eafj",
  "containerimage.config.digest": "sha256:6c6f449b9921b8ce5da66330d3b2b877ea9e13cc32357cf1c52ab4eb8c0ad031",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:b975dd6a87fb0ec00b170bb3864fe3b51ca9bede55bddd7d0333b7e436119ccb",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:b975dd6a87fb0ec00b170bb3864fe3b51ca9bede55bddd7d0333b7e436119ccb",
  "image.name": "ghcr.io/graphql-hive/commerce:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/commerce:docs_organization_access_tokens-arm64"
},
"composition-federation-2": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "Federation 2 Composition Service for GraphQL Hive.",
          "build-arg:IMAGE_TITLE": "graphql-hive/composition-federation-2",
          "build-arg:PORT": "3069",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/external-composition",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/0qdoq5hgwsi7hfqnznofc6p2w",
  "containerimage.config.digest": "sha256:d253b48b537aefb96b35c9a894dd82ad8bfc7391c1b5b53c7da9d320aae2eac0",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:56d71ea2e9220cf9bfe4d4453b8fa414d867c65836f3c97ef9d95dc981a8a723",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:56d71ea2e9220cf9bfe4d4453b8fa414d867c65836f3c97ef9d95dc981a8a723",
  "image.name": "ghcr.io/graphql-hive/composition-federation-2:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/composition-federation-2:docs_organization_access_tokens-arm64"
},
"emails": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The emails service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/emails",
          "build-arg:PORT": "3006",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/emails",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/ynot3r7qqslw5r3rkea8vbm0h",
  "containerimage.config.digest": "sha256:231ca0d4152104014ab893803d11c06dcd910960647e13191291d7229bfc6153",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:a00aa7b5bdc6e8b6b8bb33e1db6a91fff8ba15d76550c338531578b355320539",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:a00aa7b5bdc6e8b6b8bb33e1db6a91fff8ba15d76550c338531578b355320539",
  "image.name": "ghcr.io/graphql-hive/emails:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/emails:docs_organization_access_tokens-arm64"
},
"policy": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The policy service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/policy",
          "build-arg:PORT": "3012",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/policy",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/7oi29f0t8xkim05d6i4qbxvgy",
  "containerimage.config.digest": "sha256:d2a7c3e778d5d2a5710637f192278df7430d0be7f239a3b06f7db2cd38dd8a26",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:382d2fe1a5004a5851b1dff97494856c6cded417bcb6023b441acfa1b4fbb79c",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:382d2fe1a5004a5851b1dff97494856c6cded417bcb6023b441acfa1b4fbb79c",
  "image.name": "ghcr.io/graphql-hive/policy:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/policy:docs_organization_access_tokens-arm64"
},
"schema": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The schema service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/schema",
          "build-arg:PORT": "3002",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/schema",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/hx6q9ux9d36de9gr94hw2wae0",
  "containerimage.config.digest": "sha256:55f8ace244ea9060a34e6e3b5a9ccb31216514b04c9ae3ada85010cb8ca08b2f",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:36bfdb7297e615cf75339707e2383085357e1d4aa021be2c4d5df4b3885d60d1",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:36bfdb7297e615cf75339707e2383085357e1d4aa021be2c4d5df4b3885d60d1",
  "image.name": "ghcr.io/graphql-hive/schema:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/schema:docs_organization_access_tokens-arm64"
},
"server": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The server service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/server",
          "build-arg:PORT": "3001",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/server",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/fybkh3korqyi51wlcksulkquz",
  "containerimage.config.digest": "sha256:3676d6150e55bcd13c5f100a206cc5bf816c863d61ef7c714eb40abea6af2919",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:bfb651617f91a05f2b1bcd3bd6227f8d985832a05f01de481ee262aef0e26ceb",
    "size": 2076,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:bfb651617f91a05f2b1bcd3bd6227f8d985832a05f01de481ee262aef0e26ceb",
  "image.name": "ghcr.io/graphql-hive/server:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/server:docs_organization_access_tokens-arm64"
},
"storage": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "migrations.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:IMAGE_DESCRIPTION": "The migrations service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/storage",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/ltckap82whxwm6lyo7ikmbe4c",
  "containerimage.config.digest": "sha256:dbf3b757318944e5949a226e601fbf962333082300406fbda7e1d03c87e76042",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:e2bbf7421c9c98eba0dfffd970ef301de5d05296c0584d0949cf6ed720d62028",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:e2bbf7421c9c98eba0dfffd970ef301de5d05296c0584d0949cf6ed720d62028",
  "image.name": "ghcr.io/graphql-hive/storage:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/storage:docs_organization_access_tokens-arm64"
},
"tokens": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The tokens service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/tokens",
          "build-arg:PORT": "3003",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/tokens",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/6f0o8cgkwye4hpbwt4xaag96m",
  "containerimage.config.digest": "sha256:ee19a46b758dbc7268c11e2404538550c117e1792aeaf6f30449d48ba9ee3dc1",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:729f85ca1e98f4ebced159c34e0140f5716b13feea8c98e401398e26cf631581",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:729f85ca1e98f4ebced159c34e0140f5716b13feea8c98e401398e26cf631581",
  "image.name": "ghcr.io/graphql-hive/tokens:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/tokens:docs_organization_access_tokens-arm64"
},
"usage": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The usage ingestor service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/usage",
          "build-arg:PORT": "3006",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/usage",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/umlljc0s2lkfzatkkf0a6zp64",
  "containerimage.config.digest": "sha256:7b6e9f4ada334ebb8804d93066560c990784ca9662408bf9448a382118df233e",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:66ca676c1a24185e75f4127d56748da59a7242fb960037a86c8dd0d16bc41820",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:66ca676c1a24185e75f4127d56748da59a7242fb960037a86c8dd0d16bc41820",
  "image.name": "ghcr.io/graphql-hive/usage:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/usage:docs_organization_access_tokens-arm64"
},
"usage-ingestor": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The usage ingestor service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/usage-ingestor",
          "build-arg:PORT": "3007",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/usage-ingestor",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/42gjvyir3ubmd4zjztp37nqlp",
  "containerimage.config.digest": "sha256:9b62a193778b210d2706e666d7a9b98654cf4dc6dfd31c052027ab0262671bce",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:68c7250a987bf02fdee0900da1f95882671c3e0bd5c3b4115970baba25865b40",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:68c7250a987bf02fdee0900da1f95882671c3e0bd5c3b4115970baba25865b40",
  "image.name": "ghcr.io/graphql-hive/usage-ingestor:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/usage-ingestor:docs_organization_access_tokens-arm64"
},
"webhooks": {
  "buildx.build.provenance": {
    "buildType": "https://mobyproject.org/buildkit@v1",
    "materials": [
      {
        "uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
        "digest": {
          "sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
        }
      }
    ],
    "invocation": {
      "configSource": {
        "entryPoint": "services.dockerfile"
      },
      "parameters": {
        "frontend": "dockerfile.v0",
        "args": {
          "build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
          "build-arg:IMAGE_DESCRIPTION": "The webhooks ingestor service of the GraphQL Hive project.",
          "build-arg:IMAGE_TITLE": "graphql-hive/webhooks",
          "build-arg:PORT": "3005",
          "build-arg:RELEASE": "9a241766a00f1de716ff20396305602638329958",
          "build-arg:SERVICE_DIR_NAME": "@hive/webhooks",
          "context:dist": "local:dist",
          "context:shared": "local:shared",
          "frontend.caps": "moby.buildkit.frontend.contexts+forward",
          "local-sessionid:context": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:dockerfile": "0zkmcn25lm0sws26mun6jxrsw",
          "local-sessionid:shared": "0zkmcn25lm0sws26mun6jxrsw"
        },
        "locals": [
          {
            "name": "context"
          },
          {
            "name": "dist"
          },
          {
            "name": "dockerfile"
          },
          {
            "name": "shared"
          }
        ]
      },
      "environment": {
        "platform": "linux/arm64"
      }
    }
  },
  "buildx.build.ref": "builder-cb9dc618-b099-4acb-a64e-1f43f5b704de/builder-cb9dc618-b099-4acb-a64e-1f43f5b704de0/40qsu5h76d4aqay04bp9djql1",
  "containerimage.config.digest": "sha256:0ddbd76143bf052575fd34f5527a7c0c1e4759eb824b4d47f06398fd34d7d6fd",
  "containerimage.descriptor": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "digest": "sha256:82abc93fa591dc22f3c9d02f8b2c9c5f0e683e954de15cc3a65743ed7028890d",
    "size": 2075,
    "platform": {
      "architecture": "arm64",
      "os": "linux"
    }
  },
  "containerimage.digest": "sha256:82abc93fa591dc22f3c9d02f8b2c9c5f0e683e954de15cc3a65743ed7028890d",
  "image.name": "ghcr.io/graphql-hive/webhooks:9a241766a00f1de716ff20396305602638329958-arm64,ghcr.io/graphql-hive/webhooks:docs_organization_access_tokens-arm64"
}
}

@n1ru4l n1ru4l force-pushed the docs-organization-access-tokens branch from 1c93b42 to 4587deb Compare March 11, 2025 08:05
@n1ru4l
Copy link
Contributor Author

n1ru4l commented Mar 11, 2025

@coderabbitai review

Copy link
Contributor

coderabbitai bot commented Mar 11, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Base automatically changed from feat-organization-access-token-management-ui to main March 11, 2025 08:43
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🔭 Outside diff range comments (4)
packages/web/docs/src/content/get-started/single-project.mdx (1)

130-145: 🛠️ Refactor suggestion

Remove redundant command block.

There are duplicate command blocks with the same content. This appears to be an oversight since the explanation is repeated.

  Run the following command in your terminal, to publish your `schema.graphql` to the registry.

  - Replace `<YOUR_ORGANIZATION>` with the slug of your organization
  - Replace `<YOUR_PROJECT>` with the slug of your project within the organization
  - Replace `<YOUR_TOKEN_HERE>` with the access token we just created.

  ```bash
  hive schema:publish \
    --registry.accessToken "<YOUR_TOKEN_HERE>" \
    --target "<YOUR_ORGANIZATION>/<YOUR_PROJECT>/development" \
    schema.graphql
    • Replace <YOUR_PROJECT> with the slug of your project within the organization
    • Replace <YOUR_TOKEN_HERE> with the access token we just created.
  • hive schema:publish \
  • --registry.accessToken "<YOUR_TOKEN_HERE>" \
  • --target "<YOUR_ORGANIZATION>/<YOUR_PROJECT>/development" \
  • schema.graphql

</blockquote></details>
<details>
<summary>packages/web/docs/src/content/gateway/other-features/security/aws-sigv4.mdx (1)</summary><blockquote>

`80-97`: _🛠️ Refactor suggestion_

**Duplicate 'region' Key Detected**  
In the “Service and region configuration” snippet, the configuration object has two `region` properties. Only the latter will take effect. It is recommended to consolidate these by using a fallback, for example:  
```diff
-      region: process.env.AWS_REGION,
-      serviceName: 'lambda',
-      region: 'us-east-1'
+      region: process.env.AWS_REGION || 'us-east-1',
+      serviceName: 'lambda'

This avoids confusion and potential configuration errors.

packages/web/docs/src/content/migration-guides/organization-access-tokens.mdx (1)

276-312: 🛠️ Refactor suggestion

Duplicate Custom HTTP Implementation Section

It appears that the “Custom HTTP Implementation” section (including updated endpoints, images, and associated guidance) is repeated. Consider consolidating this content into a single section to avoid redundancy and potential confusion.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~296-~296: Possible missing comma found.
Context: ...unded-lg drop-shadow-md" /> Using this slug the endpoint would be `https://app.grap...

(AI_HYDRA_LEO_MISSING_COMMA)

packages/web/docs/src/content/management/access-tokens.mdx (1)

167-181: 🛠️ Refactor suggestion

Duplicate 'Updating Access Tokens' Section

The “Updating Access Tokens” instructions are repeated. It would be best to consolidate these duplicate sections into one clear set of instructions to avoid redundancy.

🧹 Nitpick comments (35)
.changeset/big-cars-tie.md (1)

5-5: Nitpick: Improve wording for clarity.
Consider updating the message from
Fix insights range if selecting same start and end
to
Fix the insights range if selecting the same start and end
to improve grammatical clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...ch --- Fix insights range if selecting same start and end

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.changeset/rotten-scissors-matter.md (1)

6-7: Typographical Correction

There is a minor typo in the service name restriction description. Consider correcting "alphanumberic" to "alphanumeric" for better clarity.

packages/web/docs/src/app/pricing/page.tsx (1)

30-31: Consider adding className prop for consistency

The PlansTable component is added in a logical position between PlanComparison and CompanyTestimonialsSection. However, unlike other components used in this file, it doesn't receive a className prop for consistent styling control.

-      <PlansTable />
+      <PlansTable className="mx-4 md:mx-6" />
packages/libraries/router/CHANGELOG.md (1)

7-22: Great documentation addition for the new feature.

The changelog entry clearly explains the new support for targets with organization access tokens and includes a helpful configuration example.

One minor grammar correction needed:

-  `the-guild/graphql-hive/staging`) or an UUID (e.g
+  `the-guild/graphql-hive/staging`) or a UUID (e.g

"UUID" is pronounced with a consonant sound at the beginning (/juː.aɪ.diː/), so it should be "a UUID" rather than "an UUID".

🧰 Tools
🪛 LanguageTool

[misspelling] ~13-~13: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ... the-guild/graphql-hive/staging) or an UUID (e.g. `a0f4c605-6541-4350-8cfe-b31...

(EN_A_VS_AN)

packages/libraries/core/CHANGELOG.md (1)

7-24: Well-documented feature addition with helpful example.

The changelog entry effectively communicates the new support for targets with organization access tokens and includes a clear TypeScript example.

One minor grammar correction needed:

-  `$organizationSlug/$projectSlug/$targetSlug` (e.g `the-guild/graphql-hive/staging`) or an UUID
+  `$organizationSlug/$projectSlug/$targetSlug` (e.g `the-guild/graphql-hive/staging`) or a UUID

"UUID" is pronounced with a consonant sound at the beginning (/juː.aɪ.diː/), so it should be "a UUID" rather than "an UUID".

🧰 Tools
🪛 LanguageTool

[misspelling] ~11-~11: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ....g the-guild/graphql-hive/staging) or an UUID (e.g. `a0f4c605-6541-4350-8cfe-b...

(EN_A_VS_AN)

packages/web/docs/src/content/other-integrations/apollo-router.mdx (1)

185-188: Great addition of the new configuration option for organization access tokens!

This new documentation for HIVE_TARGET_ID clearly explains how to specify targets when using organization access tokens, providing both slug and UUID format examples.

There's a small grammatical correction needed: it should be "a UUID" instead of "an UUID" since "UUID" is pronounced with a consonant sound (/juː/).

- "$organizationSlug/$projectSlug/$targetSlug" (e.g "the-guild/graphql-hive/staging") or an UUID
+ "$organizationSlug/$projectSlug/$targetSlug" (e.g "the-guild/graphql-hive/staging") or a UUID
🧰 Tools
🪛 LanguageTool

[misspelling] ~186-~186: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ....g "the-guild/graphql-hive/staging") or an UUID (e.g. "a0f4c605-6541-4350-8cfe-b...

(EN_A_VS_AN)

packages/libraries/envelop/CHANGELOG.md (1)

3-30: Clear changelog entry for the new organization access token feature!

The changelog entry for version 0.35.0 clearly documents the new support for specifying targets with organization access tokens and includes a helpful example implementation.

There's a small grammatical correction needed: it should be "a UUID" instead of "an UUID" since "UUID" is pronounced with a consonant sound (/juː/).

- `$organizationSlug/$projectSlug/$targetSlug` (e.g `the-guild/graphql-hive/staging`) or an UUID
+ `$organizationSlug/$projectSlug/$targetSlug` (e.g `the-guild/graphql-hive/staging`) or a UUID
🧰 Tools
🪛 LanguageTool

[misspelling] ~11-~11: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ....g the-guild/graphql-hive/staging) or an UUID (e.g. `a0f4c605-6541-4350-8cfe-b...

(EN_A_VS_AN)

packages/libraries/yoga/CHANGELOG.md (1)

3-30: Well-structured changelog entry for the new feature

The changelog for version 0.41.0 clearly documents the added support for specifying targets with organization access tokens and provides a helpful code example.

There's a small grammatical correction needed: it should be "a UUID" instead of "an UUID" since "UUID" is pronounced with a consonant sound (/juː/).

- `$organizationSlug/$projectSlug/$targetSlug` (e.g `the-guild/graphql-hive/staging`) or an UUID
+ `$organizationSlug/$projectSlug/$targetSlug` (e.g `the-guild/graphql-hive/staging`) or a UUID
🧰 Tools
🪛 LanguageTool

[misspelling] ~11-~11: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ....g the-guild/graphql-hive/staging) or an UUID (e.g. `a0f4c605-6541-4350-8cfe-b...

(EN_A_VS_AN)

packages/web/docs/src/content/management/projects.mdx (2)

84-88: Fix typo in the warning message

The warning message contains a typo: "resilence" should be "resilience".

-Changing the slug of your project will also change the URL, and will invalidate any existing links
-to your project as well as CLI commands using the `--target` parameter. If you want more resilence
+Changing the slug of your project will also change the URL, and will invalidate any existing links
+to your project as well as CLI commands using the `--target` parameter. If you want more resilience
 we recommend using an UUID instead of a target slug for the `--target` parameter.
🧰 Tools
🪛 LanguageTool

[misspelling] ~87-~87: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ... want more resilence we recommend using an UUID instead of a target slug for the `...

(EN_A_VS_AN)


87-87: Consider updating article usage

The article "an" before "UUID" should be "a" since UUID is pronounced starting with a consonant sound ("you-you-eye-dee").

-we recommend using an UUID instead of a target slug for the `--target` parameter.
+we recommend using a UUID instead of a target slug for the `--target` parameter.
🧰 Tools
🪛 LanguageTool

[misspelling] ~87-~87: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ... want more resilence we recommend using an UUID instead of a target slug for the `...

(EN_A_VS_AN)

packages/libraries/apollo/CHANGELOG.md (1)

3-36: Well-structured changelog entry for new version.

The changelog entry for version 0.38.0 is well-structured and provides clear information about the changes:

  1. Minor change: Support for providing a target for usage reporting with organization access tokens
  2. Patch change: Fix for unhandled rejections in Apollo Server v3
  3. Updated dependencies

One small grammar issue in line 11 - "an UUID" should be "a UUID" since "UUID" is pronounced with a consonant sound at the beginning.

-  reporting with organization access tokens. This can either be a slug following the format
-  `$organizationSlug/$projectSlug/$targetSlug` (e.g `the-guild/graphql-hive/staging`) or an UUID
+  reporting with organization access tokens. This can either be a slug following the format
+  `$organizationSlug/$projectSlug/$targetSlug` (e.g `the-guild/graphql-hive/staging`) or a UUID
🧰 Tools
🪛 LanguageTool

[misspelling] ~11-~11: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ....g the-guild/graphql-hive/staging) or an UUID (e.g. `a0f4c605-6541-4350-8cfe-b...

(EN_A_VS_AN)

packages/web/docs/src/content/management/targets.mdx (2)

202-202: Fix grammatical error in the token description.

There's a grammatical error in this sentence.

-access token a either select a predefined preset for your token (under **Simple** view), or create a
+access token, either select a predefined preset for your token (under **Simple** view), or create a
🧰 Tools
🪛 LanguageTool

[misspelling] ~202-~202: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ... token** button. Give your access token a either select a predefined preset for y...

(EN_A_VS_AN)


211-212: Missing comma in compound sentence.

Consider adding a comma before "and" in this compound sentence for better readability.

-Click on **Generate Token** button and you should get your CLI token created, with permissions to
+Click on **Generate Token** button, and you should get your CLI token created, with permissions to
🧰 Tools
🪛 LanguageTool

[uncategorized] ~211-~211: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ..." /> Click on Generate Token button and you should get your CLI token created, ...

(COMMA_COMPOUND_SENTENCE)

packages/libraries/router/src/usage.rs (1)

205-214: Well-implemented environment variable fallback and endpoint construction.

The implementation correctly:

  1. Checks for target configuration or environment variable
  2. Conditionally modifies the endpoint URL when a target is specified
  3. Uses clear variable names and comments

Be cautious with the string concatenation in case the endpoint URL already ends with a slash, though the default URL doesn't have this issue.

Consider adding a check to ensure there's no double slash when appending the target ID:

-            endpoint.push_str(&format!("/{}", target_id));
+            if endpoint.ends_with('/') {
+                endpoint.push_str(&format!("{}", target_id));
+            } else {
+                endpoint.push_str(&format!("/{}", target_id));
+            }
packages/web/docs/src/components/nested-sticky.tsx (1)

131-136: Consider adding more descriptive class names.

While the component structure is good, adding more descriptive class names would make it easier to debug and style this component.

 return (
-  <div ref={containerRef} className="relative">
-    <div style={{ width: '100%', height: 0 }} />
-    <div>{children}</div>
+  <div ref={containerRef} className="relative nested-sticky-container">
+    <div style={{ width: '100%', height: 0 }} className="nested-sticky-placeholder" />
+    <div className="nested-sticky-content">{children}</div>
   </div>
 );
packages/web/docs/src/content/specs/link-specifications.mdx (1)

22-23: Fix typo in "prerequisite".

There's a small typo in the word "prerequisite".

-A preqrequisite is that the subgraph is using Federation 2.x:
+A prerequisite is that the subgraph is using Federation 2.x:
packages/web/docs/src/content/get-started/schema-stitching.mdx (1)

188-188: Minor grammatical issue in introductory phrase.

The sentence is missing a comma after the introductory phrase.

-For this guide we will use the `development` target.
+For this guide, we will use the `development` target.
🧰 Tools
🪛 LanguageTool

[typographical] ~188-~188: Use a comma after an introductory phrase.
Context: ...max-w-xl rounded-lg drop-shadow-md" /> For this guide we will use the development target. ...

(COMMA_INTRODUCTORY_WORDS_PHRASES)

packages/web/docs/src/app/product-updates/(posts)/2025-03-08-metadata/page.mdx (2)

18-22: Missing comma in opening sentence.

There's a grammatical issue in the first sentence.

-One of the most convincing reasons to use GraphQL that it's self documenting.
+One of the most convincing reasons to use GraphQL is that it's self documenting.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~18-~18: Possible missing comma found.
Context: ...e of the most convincing reasons to use GraphQL that it's self documenting. Hive takes ...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~21-~21: The word “opt-in” is a noun. The verb is spelled with a space.
Context: ...2.x compatible set of Hive features. To opt-in, add a Federation link directive to y...

(NOUN_VERB_CONFUSION)


21-21: Hyphenation issue with "opt-in".

When used as a verb, "opt in" should have a space between the words.

-To opt-in, add a Federation `link` directive to your schema definition:
+To opt in, add a Federation `link` directive to your schema definition:
🧰 Tools
🪛 LanguageTool

[grammar] ~21-~21: The word “opt-in” is a noun. The verb is spelled with a space.
Context: ...2.x compatible set of Hive features. To opt-in, add a Federation link directive to y...

(NOUN_VERB_CONFUSION)

packages/web/docs/src/content/get-started/single-project.mdx (3)

88-88: Fix typo in text.

There's a typo in the text that should be corrected.

-For the purpose of this guide there is no need to further restirct the resources.
+For the purpose of this guide there is no need to further restrict the resources.

108-108: Fix grammatical error.

There's a grammatical error in this sentence that makes it unclear.

-Then click the `Create Access Token` button. A confirmation dialogue will open that shows the you generated token.
+Then click the `Create Access Token` button. A confirmation dialogue will open that shows the generated token.

60-60: Add missing comma after introductory phrase.

For better readability, add a comma after the introductory phrase.

-For this guide we will use the `development` target.
+For this guide, we will use the `development` target.
packages/web/docs/src/components/pricing/plans-table.tsx (1)

33-35: Address TODO comment in the code.

There's a TODO comment that should be addressed. Consider moving the style to the design system as mentioned.

-        // todo: move this style as size="sm" to design system
         className="px-3 py-2 text-sm"

If you've already established a design system with size variants, create a proper size="sm" prop for the CallToAction component instead of using custom className.

packages/web/docs/src/content/get-started/apollo-federation.mdx (3)

141-142: Improved Instruction Formatting
Splitting the step into two lines improves readability. Ensure that the phrasing is consistent with similar sections across the docs.


152-153: Typo Correction Needed
The word “restirct” appears to be a typo. It should be “restrict.”

- further restirct the resources.
+ further restrict the resources.

173-174: Grammar Improvement
The sentence "Then click the Create Access Token button. A confirmation dialogue will open that shows the you generated token." is grammatically unclear. Consider rephrasing it as:
“Then click the Create Access Token button. A confirmation dialogue will open showing the generated token.”

- Then click the `Create Access Token` button. A confirmation dialogue will open that shows the you generated token.
+ Then click the `Create Access Token` button. A confirmation dialogue will open showing the generated token.
packages/web/docs/src/content/gateway/other-features/security/aws-sigv4.mdx (2)

27-30: Usage Instruction Clarity
The “How to use?” section explains how to enable SigV4 signing by setting awsSigV4.outgoing to true. Consider rephrasing the header to “How to Enable AWS SigV4 Signing” for an imperative tone.


182-183: Punctuation and Conjunction Improvement
The sentence discussing the Authorization header could benefit from a punctuation tweak for better clarity. For example:
"In this case, if the Authorization header starts with Bearer, the JWT will be used for authentication; if not, the request will be validated using AWS SigV4."
This slight change helps to clearly separate the two conditional outcomes.

🧰 Tools
🪛 LanguageTool

[formatting] ~182-~182: Consider inserting a comma after an introductory phrase for better readability.
Context: ... prefix in the Authorization header. In this case if the Authorization header starts wi...

(IN_THAT_CASE_COMMA)


[typographical] ~183-~183: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...with Bearer, the JWT will be used for authentication, otherwise, the request will be validated with AWS ...

(THUS_SENTENCE)

packages/web/docs/src/content/migration-guides/organization-access-tokens.mdx (6)

5-14: Clarify Introduction and Punctuation

The introductory text is clear and informative. Consider adding a comma after “questions” in line 12 for improved readability (e.g., “If you are experiencing any difficulties or questions, please do not hesitate to reach out…”).

🧰 Tools
🪛 LanguageTool

[typographical] ~12-~12: It seems that a comma is missing.
Context: ...periencing any difficulties or questions please do not hesitate to reach out to us. We ...

(IF_PLEASE_COMMA)


21-26: Rephrase Transitional Phrase

In the section describing key differences, the phrase “Because of that” is used. Consider rephrasing it to a more formal alternative (e.g., “As a result”) to improve variety and tone.

🧰 Tools
🪛 LanguageTool

[style] ~23-~23: Consider using a different introductory phrase to strengthen your wording.
Context: ...deployment, or service) upon creation. Because of that, the new access tokens **require passin...

(BECAUSE_OF_THAT)


41-47: Improve Phrasing for Resource Selection

The sentence introducing the new feature (restricting an access token to publishing a service with a specific name) could be rephrased to avoid repetitive wording found in nearby sections.

🧰 Tools
🪛 LanguageTool

[style] ~41-~41: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ect the project and target in which you want to allow this action. A new feature here i...

(REP_WANT_TO_VB)


54-60: Typographical Correction Needed in CLI Section

There appears to be a typo in line 58 (“Please at upgrade to at least…”). Consider correcting it to “Please upgrade to at least…” for clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~58-~58: The preposition ‘to’ seems more likely in this position.
Context: ...t an action should be performed Please at upgrade to at least [CLI version `0.49....

(AI_HYDRA_LEO_REPLACE_AT_TO)


118-121: TODO Reminder for Hive Gateway Section

The placeholder “TODO” for the Hive Gateway integration indicates pending content. Please ensure that this section is completed before merging to provide a full migration guide.


235-242: Typo Correction in Alternative Token Specification

“Altenatively” should be corrected to “Alternatively” to maintain a professional tone.

packages/web/docs/src/content/management/access-tokens.mdx (1)

45-50: UI Element for Creating New Tokens

The image for the “Create new access token” button is clear. You might consider adding a brief caption to further contextualize the action if necessary.

🛑 Comments failed to post (1)
deployment/services/graphql.ts (1)

121-121: ⚠️ Potential issue

Inconsistency between value and comment

The environment variable REQUEST_LOGGING is set to '1' (which typically means enabled) but the inline comment says "disabled". This contradiction could lead to confusion for developers maintaining this code.

-          REQUEST_LOGGING: '1', // disabled
+          REQUEST_LOGGING: '1', // enabled

Or if logging should actually be disabled:

-          REQUEST_LOGGING: '1', // disabled
+          REQUEST_LOGGING: '0', // disabled
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

          REQUEST_LOGGING: '1', // enabled
          REQUEST_LOGGING: '0', // disabled


![The management UI page within the Organization settings showing granularly scoped access tokens for actions such as publishing specific subgraph or reporting usage data.](./organization-access-token-settings.png)

**TL;DR:** Follow our
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prefer avoiding the term TL;DR;
Maybe just "For a list of easy to follow steps, follow our Migration Guide."

If we know what sort of timescale we're talking about for migrating also, that'd be good to mention here.

And I don't love seeing the terms "registry access token" and "access tokens" together. I think it could be confusing. I wonder if there's a better term we could use in places.

## Deprecation of Registry Access Tokens

Registry access tokens will be **deprecated** in favor of the new access tokens. While no official
deprecation date has been set, we strongly encourage teams to migrate now to take advantage of
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, this answers one of my comments from earlier...

To ease the transition, we’ve prepared a step-by-step migration guide for the Hive CLI, Hive
Gateway, Hive SDKs, Apollo Router, and more integrations.

[Check out the access token migration guide](/docs/migration-guides/organization-access-tokens).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is redundant from the TLDR line earlier.
Seeing this here -- I think this post is short enough that you dont really need a TLDR. If we have a heading saying "Migration Guide" like this, then it's pretty obvious


- Publish schemas etc. with the Hive CLI
- Report usage data (SDK or HTTP)
- (Soon) Access the public Hive Console GraphQL API for managing resources and export data
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't love having future work in docs. I think let's represent what we have and we could link to our issues to show upcoming work.

<Callout type="warning">

Please use [Access Tokens](/docs/management/access-tokens), which allow more granular access
control, instead of Registry Access Tokens. Registry Access Tokens are deprecated and will be
Copy link
Collaborator

@jdolle jdolle Mar 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here again i dont love the terminology. Maybe "Granular Access Control" instead of just "Access Tokens"? And if we call it that, "which allow more granular access control" can be deleted.

Copy link
Collaborator

@jdolle jdolle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All my comments are relatively minor and subjective. None should block.

@n1ru4l n1ru4l merged commit f765562 into main Mar 13, 2025
29 checks passed
@n1ru4l n1ru4l deleted the docs-organization-access-tokens branch March 13, 2025 10:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants