-
Notifications
You must be signed in to change notification settings - Fork 105
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: members, member roles and permissions #6384
Conversation
💻 Website PreviewThe latest changes are available as preview in: https://6ceda81f.hive-landing-page.pages.dev |
🐋 This PR was built and pushed to the following Docker images: Targets: Platforms: Image Tag: Docker Bake metadata{
"app": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/vw7hev8iudtli9s77hyf7i9lj",
"containerimage.config.digest": "sha256:17ab622dce0b94d41444cc86f16134219fb32b95d498ed05e44087390ee40224",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:bdbf2d083f6b4a6ec0e3fc601baa5f0442a3968794e572ff95072aa2d44f8d86",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:bdbf2d083f6b4a6ec0e3fc601baa5f0442a3968794e572ff95072aa2d44f8d86",
"image.name": "ghcr.io/graphql-hive/app:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/app:docs_permission_member_roles-amd64"
},
"buildx.build.warnings": [
{
"vertex": "sha256:28aa54bfdc3fe7e05db5e9d3f13290a2f959d1c15e183e755e80f3b748b59fe8",
"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:ede17860405d8da497d87b2329177e32208c18f9e8ac1cff4b728a0061858725",
"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:ede17860405d8da497d87b2329177e32208c18f9e8ac1cff4b728a0061858725",
"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:28aa54bfdc3fe7e05db5e9d3f13290a2f959d1c15e183e755e80f3b748b59fe8",
"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:28aa54bfdc3fe7e05db5e9d3f13290a2f959d1c15e183e755e80f3b748b59fe8",
"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:ede17860405d8da497d87b2329177e32208c18f9e8ac1cff4b728a0061858725",
"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:28aa54bfdc3fe7e05db5e9d3f13290a2f959d1c15e183e755e80f3b748b59fe8",
"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:ede17860405d8da497d87b2329177e32208c18f9e8ac1cff4b728a0061858725",
"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:ede17860405d8da497d87b2329177e32208c18f9e8ac1cff4b728a0061858725",
"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
}
}
]
},
{
"vertex": "sha256:28aa54bfdc3fe7e05db5e9d3f13290a2f959d1c15e183e755e80f3b748b59fe8",
"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:28aa54bfdc3fe7e05db5e9d3f13290a2f959d1c15e183e755e80f3b748b59fe8",
"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:ede17860405d8da497d87b2329177e32208c18f9e8ac1cff4b728a0061858725",
"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:28aa54bfdc3fe7e05db5e9d3f13290a2f959d1c15e183e755e80f3b748b59fe8",
"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:28aa54bfdc3fe7e05db5e9d3f13290a2f959d1c15e183e755e80f3b748b59fe8",
"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
}
}
]
}
],
"composition-federation-2": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/7z50i68c8xbavxnch7p6mn4rd",
"containerimage.config.digest": "sha256:884a4751d8452cda86833336394ecb944deb1c25b8217efee78ea4d7bf658ac6",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:d42c4555f46179cfa497e32d85876606b368968c95ddd8962577e4775948c7a4",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:d42c4555f46179cfa497e32d85876606b368968c95ddd8962577e4775948c7a4",
"image.name": "ghcr.io/graphql-hive/composition-federation-2:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/composition-federation-2:docs_permission_member_roles-amd64"
},
"emails": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/pra60hybtnd1mu41m9q12c6fo",
"containerimage.config.digest": "sha256:1a35009b5fcc1cfba853e5bfb297bb33c436b6881f7fa6c61d7c5e0790ae51e5",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:d08fec607a0c0ab8c02d125aba9b97d1e3a705563353c3b508290f54208c488c",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:d08fec607a0c0ab8c02d125aba9b97d1e3a705563353c3b508290f54208c488c",
"image.name": "ghcr.io/graphql-hive/emails:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/emails:docs_permission_member_roles-amd64"
},
"policy": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/rvgkchwgc11hyp2stsfdwvqqg",
"containerimage.config.digest": "sha256:d7f12d45117a0dbd96d105af509f94a7d0a253a09f500c86e38f2d2b578f83c7",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:f331922a1dbccd406d816684407d32cc750a205d0c9f05291e0c1f8adfb45676",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:f331922a1dbccd406d816684407d32cc750a205d0c9f05291e0c1f8adfb45676",
"image.name": "ghcr.io/graphql-hive/policy:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/policy:docs_permission_member_roles-amd64"
},
"rate-limit": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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 rate limit service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/rate-limit",
"build-arg:PORT": "3009",
"build-arg:RELEASE": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"build-arg:SERVICE_DIR_NAME": "@hive/rate-limit",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/9nqvse0a5ocloqr7zlik8ol3o",
"containerimage.config.digest": "sha256:58a2e298855dfc8b1b45dbd82b26e972b73a542bb9f13ced1283ae045af4fba2",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:9845782ccf17a606b28d0a163bc6b9699bae94cf2ed0d71e1d510a12c04bf9eb",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:9845782ccf17a606b28d0a163bc6b9699bae94cf2ed0d71e1d510a12c04bf9eb",
"image.name": "ghcr.io/graphql-hive/rate-limit:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/rate-limit:docs_permission_member_roles-amd64"
},
"schema": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/8d85yvs5c9i7f1smuqvwgvd6w",
"containerimage.config.digest": "sha256:1e16e5fe6906c4fc0886c3cbea32f19a582191ad85548e1deb5916e9522708aa",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:60120ce8e2db1c14d96a9ff6cbfdf6f49dea7d74c068cdacf8494cb962bd2949",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:60120ce8e2db1c14d96a9ff6cbfdf6f49dea7d74c068cdacf8494cb962bd2949",
"image.name": "ghcr.io/graphql-hive/schema:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/schema:docs_permission_member_roles-amd64"
},
"server": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/jlrexivwf6rh2aw1hcutngn3o",
"containerimage.config.digest": "sha256:d28474de0e8543147ee894a0abe286ea6b01cc3d869ee88847b8c00fd9903d65",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:485ef5eff907442fa38ed63e9376977e082fa81b1323d54516752e04861d49e9",
"size": 2076,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:485ef5eff907442fa38ed63e9376977e082fa81b1323d54516752e04861d49e9",
"image.name": "ghcr.io/graphql-hive/server:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/server:docs_permission_member_roles-amd64"
},
"storage": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/m3gsm83i23gidmwme5mjbh75p",
"containerimage.config.digest": "sha256:4a17dff6cb3709778efb1dd29de59715905dadf809e3d00185429b8e38852879",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:0a054eb8e6f70ef1855c6117385002d1adc9f812ecd9a0081ba4d82b6e7209ac",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:0a054eb8e6f70ef1855c6117385002d1adc9f812ecd9a0081ba4d82b6e7209ac",
"image.name": "ghcr.io/graphql-hive/storage:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/storage:docs_permission_member_roles-amd64"
},
"stripe-billing": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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 stripe billing service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/stripe-billing",
"build-arg:PORT": "3010",
"build-arg:RELEASE": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"build-arg:SERVICE_DIR_NAME": "@hive/stripe-billing",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/qf7i18ag8sngzjyvb0lizopou",
"containerimage.config.digest": "sha256:3bce486660618b4278df004052db52ff3e5f536cdb1271ef519b5c6c6c23143e",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:14eaa7e8cff9338a95db1bd935229dad03701e11cb247b20976f16d3bf1be1be",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:14eaa7e8cff9338a95db1bd935229dad03701e11cb247b20976f16d3bf1be1be",
"image.name": "ghcr.io/graphql-hive/stripe-billing:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/stripe-billing:docs_permission_member_roles-amd64"
},
"tokens": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/kbvvzer06s3465gq26v073cfs",
"containerimage.config.digest": "sha256:f616c50073b8e7c6816e29e5962287c85cdf0b65f5a8499bb5e05262ab051700",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:6c8510941059a0a32469fc5ce6d82d7e26574f37f7ce133e2bfd7f60b83ee500",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:6c8510941059a0a32469fc5ce6d82d7e26574f37f7ce133e2bfd7f60b83ee500",
"image.name": "ghcr.io/graphql-hive/tokens:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/tokens:docs_permission_member_roles-amd64"
},
"usage": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/1gasf64vskr2elyxv74u3ejow",
"containerimage.config.digest": "sha256:7b32e4b110e369ad121aafaeaa65d60506f615753a32a04adb3c69d19ddd1d00",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:6950876b83e643cc8f943d14e925953ccb7f2931d9318121ec9fe1f0a2152c06",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:6950876b83e643cc8f943d14e925953ccb7f2931d9318121ec9fe1f0a2152c06",
"image.name": "ghcr.io/graphql-hive/usage:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/usage:docs_permission_member_roles-amd64"
},
"usage-estimator": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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 estimator service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/usage-estimator",
"build-arg:PORT": "3008",
"build-arg:RELEASE": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"build-arg:SERVICE_DIR_NAME": "@hive/usage-estimator",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/k05ioxfsw31q57jopbzc2n7hz",
"containerimage.config.digest": "sha256:809f5d24a93142ed9d8d47e532449f6ad17e03875aa5db2b3619e9b098d762e4",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:ff70d928dc935d13f6343edc183cc95787010c1162605e1d877ceba65e4ef31d",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:ff70d928dc935d13f6343edc183cc95787010c1162605e1d877ceba65e4ef31d",
"image.name": "ghcr.io/graphql-hive/usage-estimator:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/usage-estimator:docs_permission_member_roles-amd64"
},
"usage-ingestor": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/qtafst3r57omues02podfrc46",
"containerimage.config.digest": "sha256:bd6f9f4af7a5714bbbf71a2e65d5d9e6a663de8ff22df5f3e994ea2c37127514",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:018979d5817989cd4ca0b3832c21a25642f7e4e8d65d6cf166f51e43e2aa860e",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:018979d5817989cd4ca0b3832c21a25642f7e4e8d65d6cf166f51e43e2aa860e",
"image.name": "ghcr.io/graphql-hive/usage-ingestor:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/usage-ingestor:docs_permission_member_roles-amd64"
},
"webhooks": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/node@22.13.0-slim?platform=linux%2Famd64",
"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": "a7662fd5e39f3a66714f2eae1aaea35e57f08f5d",
"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": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:dockerfile": "x0a5tvi7jrtboohov4j69kvy1",
"local-sessionid:shared": "x0a5tvi7jrtboohov4j69kvy1"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-2dd0cffb-02ac-461b-8390-3f0aa3baae64/builder-2dd0cffb-02ac-461b-8390-3f0aa3baae640/cbdimhxjgckv8s8w9i157ctwj",
"containerimage.config.digest": "sha256:4dfd805ac06fbe55e04e4670c96dfd08bb2403670a67e5a0333b8be6e86645dd",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:5400f2c3871ec7883a45a02141cd87b2a91baae817ad8c9c2dcf523e4f013784",
"size": 2075,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:5400f2c3871ec7883a45a02141cd87b2a91baae817ad8c9c2dcf523e4f013784",
"image.name": "ghcr.io/graphql-hive/webhooks:a7662fd5e39f3a66714f2eae1aaea35e57f08f5d-amd64,ghcr.io/graphql-hive/webhooks:docs_permission_member_roles-amd64"
}
} |
96b51a2
to
9a477d6
Compare
IIUC this documentation is tightly coupled to #6231. What is our motivation for shipping them separately? |
packages/web/docs/src/pages/docs/management/members-roles-permissions.mdx
Outdated
Show resolved
Hide resolved
In the screenshots where a textarea is rendered, I can see Gramarly, but other than that, good. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like that you moved this to its own section and love how many reference images were provided.
packages/web/docs/src/pages/docs/management/members-roles-permissions.mdx
Outdated
Show resolved
Hide resolved
packages/web/docs/src/pages/docs/management/members-roles-permissions.mdx
Outdated
Show resolved
Hide resolved
packages/web/docs/src/pages/docs/management/members-roles-permissions.mdx
Outdated
Show resolved
Hide resolved
packages/web/docs/src/pages/docs/management/members-roles-permissions.mdx
Outdated
Show resolved
Hide resolved
|
||
Choose a name and a description for your new role. Then select the permissions for that role. | ||
|
||
Some permissions depend on each other. E.g. you can not allow deleting a project without granting |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is outside the scope of documentation, but I'm not sure if we should enforce this. I think delete without read could be valid but might just not be as practical for the member who does the deleting. I.e. they could still call the delete API but couldnt see what they are deleting.
I think this decoupling is beneficial by simplifying our checks and the UI.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So far this documentation is Dashboard UI facing, and there you cannot delete a project without seeing that.
I think what you are referring to is more relevant for permissions for API access tokens.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it the case that checking off "project:delete" would force-check "project:view"? If not, I'm not sure this needs to be mentioned?
If it is, I'm still not sure it needs to be mentioned. Perhaps it can be viewed as a detail with explanation left to e.g. in-situ tooltip.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
packages/web/docs/src/pages/docs/management/members-roles-permissions.mdx
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks thorough! I didn't read it all, but spot checked a few things and dropped comments fwiw.
In regards to manual screenshots for documentation, I generally have mixed feelings about their effort to value ratio, but I wouldn't say I have an informed view or anything, just gut reaction. If we've found this approach useful to date, great!
|
||
Hive provides two predefined roles for convenience. | ||
|
||
Alternatively, organization owners or members with specific permissions can create and/or assign |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alternatively, organization owners or members with specific permissions can create and/or assign | |
Alternatively, organization owners (or members with sufficient permissions) can create and/or assign |
A Hive organization can have an unlimited number of members. Member actions are allowed or | ||
explicitly denied using roles, which are named collections of permissions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A Hive organization can have an unlimited number of members. Member actions are allowed or | |
explicitly denied using roles, which are named collections of permissions. | |
A Hive organization is allowed an unlimited number of members. Members are users with a role in the organization. Roles are organization-defined named sets of policies. A policy is a grant or denial of authorization to perform a certain action against a certain set resources in the organization. |
I am slightly concerned about how the term "permission" may impede intuitive learning of our system. For example a phrase like "Do you have permission for that?" has the sense that presence of permission equals granted access. But that's not how our system works. A role's set of "permissions" can either grant or deny. Thus, my suggestion above looks for a different term for the constituent part of a role. So far the best term I can think of is "policy".
packages/web/docs/src/pages/docs/management/members-roles-permissions.mdx
Outdated
Show resolved
Hide resolved
className="mt-8 rounded-lg drop-shadow-md" | ||
/> | ||
|
||
## Member Roles |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we ever talk about the concept of roles apart from the concept of organization members? If not, I wonder if we can elide the verbosity of prefixing members here and elsewhere.
|
||
Choose a name and a description for your new role. Then select the permissions for that role. | ||
|
||
Some permissions depend on each other. E.g. you can not allow deleting a project without granting |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it the case that checking off "project:delete" would force-check "project:view"? If not, I'm not sure this needs to be mentioned?
If it is, I'm still not sure it needs to be mentioned. Perhaps it can be viewed as a detail with explanation left to e.g. in-situ tooltip.
4725c80
to
6caa49c
Compare
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe changes involve updating the documentation related to managing members, roles, and permissions within a Hive organization. This includes modifications to the Changes
Sequence DiagramsequenceDiagram
participant User
participant Dashboard
participant Organization
participant Roles
User->>Dashboard: Access Organization Management
Dashboard->>Organization: View Members
Dashboard->>Roles: List Available Roles
User->>Dashboard: Invite New Member
Dashboard->>Organization: Add Member
User->>Dashboard: Assign Role to Member
Dashboard->>Roles: Set Permissions
Dashboard->>Organization: Update Member Role
This sequence diagram illustrates the high-level workflow of managing members and roles within the Hive organization dashboard, showing the interactions between the user, dashboard, organization, and roles. 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (1)
packages/web/docs/src/content/management/members-roles-permissions.mdx (1)
237-240
: Improve clarity of permissions hierarchy explanation.The explanation of permissions hierarchy could be clearer:
- Missing article "The" before "grants"
- Sentence structure could be improved
Apply this diff:
-The grants follow the hierachical order of resources within Hive. Permissions on the organization -level are always granted, these can only be restricted by the permissions defined in the member -role. +The grants follow the hierarchical order of resources within Hive. Permissions at the organization +level are always granted and can only be restricted by the permissions defined in the member +role.🧰 Tools
🪛 LanguageTool
[uncategorized] ~237-~237: Possible missing article found.
Context: ...e hierachical order of resources within Hive. Permissions on the organization level ...(AI_HYDRA_LEO_MISSING_THE)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (12)
packages/web/docs/public/docs/pages/management/members-roles-permissions/assign-role-01-start.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/assign-role-02-overview.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/assign-role-03-granular-access-service.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/create-role-01-start.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/create-role-02-wizard.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/create-role-03-confirm.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/create-role-04-success.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/delete-role-01-start.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/delete-role-02-confirm.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/members-tab.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/update-role-01-start.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/update-role-02-editor.png
is excluded by!**/*.png
📒 Files selected for processing (3)
packages/web/docs/src/content/management/_meta.ts
(1 hunks)packages/web/docs/src/content/management/members-roles-permissions.mdx
(1 hunks)packages/web/docs/src/content/management/organizations.mdx
(0 hunks)
💤 Files with no reviewable changes (1)
- packages/web/docs/src/content/management/organizations.mdx
🧰 Additional context used
📓 Path-based instructions (2)
packages/web/docs/src/content/management/_meta.ts (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/content/management/members-roles-permissions.mdx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
🪛 LanguageTool
packages/web/docs/src/content/management/members-roles-permissions.mdx
[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: ...ms workflows. When assinging a role to an user, the permissionsgranted by that ro...
(EN_A_VS_AN)
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...
(CAN_NOT_PREMIUM)
[uncategorized] ~51-~51: Possible missing comma found.
Context: ... Instead of using the predefined member roles you can create your own member roles. M...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~74-~74: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...missions depend on each other. E.g. you can not allow deleting a project without granti...
(CAN_NOT_PREMIUM)
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...
(DOUBLE_HYPHEN)
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...
(EN_A_VS_AN)
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...
(FOR_THAT_COMMA)
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...
(THAT_WHO)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...
(AN_INVITE)
[style] ~185-~185: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ber to your Hive organization. Once an invite has been created, you can also copy the...
(AN_INVITE)
[uncategorized] ~198-~198: Did you mean: “By default,”?
Context: ...ion are specified by the assigned role. By default a organization member is assigned the `...
(BY_DEFAULT_COMMA)
[misspelling] ~199-~199: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...cified by the assigned role. By default a organization member is assigned the `Vi...
(EN_A_VS_AN)
[typographical] ~199-~199: The word “however” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...ion member is assigned the Viewer
role, however, you can assign any predefined or custom...
(HOWEVER_SENTENCE)
[uncategorized] ~206-~206: Possible missing comma found.
Context: ...gned a role. For changing the assigned role click the change
button. import assi...
(AI_HYDRA_LEO_MISSING_COMMA)
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...
(EN_A_VS_AN)
[uncategorized] ~237-~237: Possible missing article found.
Context: ...e hierachical order of resources within Hive. Permissions on the organization level ...
(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~307-~307: Possible missing preposition found.
Context: ...ncluded within the selection. In order assign resources, select Granular Access
wit...
(AI_HYDRA_LEO_MISSING_TO)
🔇 Additional comments (2)
packages/web/docs/src/content/management/_meta.ts (1)
3-4
: LGTM! Clear and descriptive navigation labels.The changes improve discoverability by:
- Adding a dedicated section for members documentation
- Making the SSO description more specific by mentioning supported providers (Okta, Entra ID)
packages/web/docs/src/content/management/members-roles-permissions.mdx (1)
1-319
: Overall documentation structure and content is excellent!The documentation is well-structured, comprehensive, and includes helpful visual aids. It effectively covers:
- Member roles and permissions overview
- Role management (creating, updating, deleting)
- Member management (inviting, assigning roles)
- Resource access restrictions
Minor grammatical improvements have been suggested above, but the content organization and depth are excellent.
🧰 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: ...ms workflows. When assinging a role to an user, the permissionsgranted by that ro...(EN_A_VS_AN)
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...(CAN_NOT_PREMIUM)
[uncategorized] ~51-~51: Possible missing comma found.
Context: ... Instead of using the predefined member roles you can create your own member roles. M...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~74-~74: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...missions depend on each other. E.g. you can not allow deleting a project without granti...(CAN_NOT_PREMIUM)
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...(DOUBLE_HYPHEN)
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...(EN_A_VS_AN)
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...(FOR_THAT_COMMA)
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...(THAT_WHO)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...(AN_INVITE)
[style] ~185-~185: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ber to your Hive organization. Once an invite has been created, you can also copy the...(AN_INVITE)
[uncategorized] ~198-~198: Did you mean: “By default,”?
Context: ...ion are specified by the assigned role. By default a organization member is assigned the `...(BY_DEFAULT_COMMA)
[misspelling] ~199-~199: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...cified by the assigned role. By default a organization member is assigned the `Vi...(EN_A_VS_AN)
[typographical] ~199-~199: The word “however” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...ion member is assigned theViewer
role, however, you can assign any predefined or custom...(HOWEVER_SENTENCE)
[uncategorized] ~206-~206: Possible missing comma found.
Context: ...gned a role. For changing the assigned role click thechange
button. import assi...(AI_HYDRA_LEO_MISSING_COMMA)
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...(EN_A_VS_AN)
[uncategorized] ~237-~237: Possible missing article found.
Context: ...e hierachical order of resources within Hive. Permissions on the organization level ...(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~307-~307: Possible missing preposition found.
Context: ...ncluded within the selection. In order assign resources, selectGranular Access
wit...(AI_HYDRA_LEO_MISSING_TO)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (4)
packages/web/docs/src/content/management/members-roles-permissions.mdx (4)
6-7
: Improve clarity in the introduction.Consider rephrasing for better clarity and emphasis on the relationship between members and roles.
-A Hive organization can have an unlimited number of members. Member actions are allowed or -explicitly denied using roles, which are named collections of permissions. +A Hive organization can have an unlimited number of members. Each member's actions are controlled +through roles, which are named collections of permissions that explicitly allow or deny access.
227-228
: Fix grammatical error in confirmation step.The sentence has grammatical issues.
-Confirm the selecton by via the `Assign role to user` button. +Confirm the selection by clicking the `Assign role to user` button.
307-309
: Fix missing preposition in resource assignment instruction.The sentence is missing the preposition "to".
-In order assign resources, select `Granular Access` within the `Assigned Resources` section, then -assign your resources (projects, targets, services) as desired. +In order to assign resources, select `Granular Access` within the `Assigned Resources` section, then +assign your resources (projects, targets, services) as desired.🧰 Tools
🪛 LanguageTool
[uncategorized] ~307-~307: Possible missing preposition found.
Context: ...ncluded within the selection. In order assign resources, selectGranular Access
wit...(AI_HYDRA_LEO_MISSING_TO)
231-236
: Improve clarity in resource restriction explanation.The explanation of resource restriction could be clearer.
-Sometimes you might want to restrict a organization member to only being able to access a specific -project, or only approve failed schema checks of a set of services. - -When assigning a role to an organization member, you can specify on which resources the permissions -granted by the member role should apply. +Sometimes you might want to restrict an organization member's access to specific resources, such as: +- Limiting access to a particular project +- Allowing schema check approvals only for specific services + +When assigning a role to an organization member, you can specify which resources the role's +permissions should apply to.🧰 Tools
🪛 LanguageTool
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...(EN_A_VS_AN)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/web/docs/src/content/management/members-roles-permissions.mdx
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
packages/web/docs/src/content/management/members-roles-permissions.mdx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
🪛 LanguageTool
packages/web/docs/src/content/management/members-roles-permissions.mdx
[grammar] ~17-~17: Possible verb agreement error. Did you mean “limits”? (Some collective nouns can be treated as both singular and plural, so ‘Limit’ is not always incorrect.)
Context: ...cess to projects for a group of users - Limit who can approve a breaking change for a...
(COLLECTIVE_NOUN_VERB_AGREEMENT_VBP)
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...
(CAN_NOT_PREMIUM)
[style] ~74-~74: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...missions depend on each other. E.g. you can not allow deleting a project without granti...
(CAN_NOT_PREMIUM)
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...
(DOUBLE_HYPHEN)
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...
(EN_A_VS_AN)
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...
(FOR_THAT_COMMA)
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...
(THAT_WHO)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...
(AN_INVITE)
[style] ~185-~185: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ber to your Hive organization. Once an invite has been created, you can also copy the...
(AN_INVITE)
[uncategorized] ~198-~198: Did you mean: “By default,”?
Context: ...ion are specified by the assigned role. By default a organization member is assigned the `...
(BY_DEFAULT_COMMA)
[misspelling] ~199-~199: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...cified by the assigned role. By default a organization member is assigned the `Vi...
(EN_A_VS_AN)
[typographical] ~199-~199: The word “however” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...ion member is assigned the Viewer
role, however, you can assign any predefined or custom...
(HOWEVER_SENTENCE)
[uncategorized] ~206-~206: Possible missing comma found.
Context: ...gned a role. For changing the assigned role click the change
button. import assi...
(AI_HYDRA_LEO_MISSING_COMMA)
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...
(EN_A_VS_AN)
[uncategorized] ~307-~307: Possible missing preposition found.
Context: ...ncluded within the selection. In order assign resources, select Granular Access
wit...
(AI_HYDRA_LEO_MISSING_TO)
🔇 Additional comments (2)
packages/web/docs/src/content/management/members-roles-permissions.mdx (2)
21-32
: LGTM! Clear and well-structured section.The section effectively guides users to the Members section in the Hive Dashboard with appropriate visual aids.
1-319
: Well-structured and comprehensive documentation!The documentation effectively covers all aspects of member and role management with clear explanations and helpful visual aids. The use of diagrams for explaining resource hierarchies and access patterns is particularly effective.
🧰 Tools
🪛 LanguageTool
[grammar] ~17-~17: Possible verb agreement error. Did you mean “limits”? (Some collective nouns can be treated as both singular and plural, so ‘Limit’ is not always incorrect.)
Context: ...cess to projects for a group of users - Limit who can approve a breaking change for a...(COLLECTIVE_NOUN_VERB_AGREEMENT_VBP)
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...(CAN_NOT_PREMIUM)
[style] ~74-~74: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...missions depend on each other. E.g. you can not allow deleting a project without granti...(CAN_NOT_PREMIUM)
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...(DOUBLE_HYPHEN)
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...(EN_A_VS_AN)
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...(FOR_THAT_COMMA)
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...(THAT_WHO)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...(AN_INVITE)
[style] ~185-~185: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ber to your Hive organization. Once an invite has been created, you can also copy the...(AN_INVITE)
[uncategorized] ~198-~198: Did you mean: “By default,”?
Context: ...ion are specified by the assigned role. By default a organization member is assigned the `...(BY_DEFAULT_COMMA)
[misspelling] ~199-~199: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...cified by the assigned role. By default a organization member is assigned the `Vi...(EN_A_VS_AN)
[typographical] ~199-~199: The word “however” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...ion member is assigned theViewer
role, however, you can assign any predefined or custom...(HOWEVER_SENTENCE)
[uncategorized] ~206-~206: Possible missing comma found.
Context: ...gned a role. For changing the assigned role click thechange
button. import assi...(AI_HYDRA_LEO_MISSING_COMMA)
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...(EN_A_VS_AN)
[uncategorized] ~307-~307: Possible missing preposition found.
Context: ...ncluded within the selection. In order assign resources, selectGranular Access
wit...(AI_HYDRA_LEO_MISSING_TO)
<NextImage | ||
alt="Member Role Creator - Permission Overview" | ||
src={createRole03ConfirmImage} | ||
className="mt-8 rounded-lg drop-shadow-md" | ||
/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix incorrect image reference.
The success state is using the wrong image reference.
- src={createRole03ConfirmImage}
+ src={createRole04SuccessImage}
Committable suggestion skipped: line range outside the PR's diff.
…issions.mdx Co-authored-by: Kamil Kisiela <kamil.kisiela@gmail.com>
75880a6
to
1707975
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (4)
packages/web/docs/src/content/management/members-roles-permissions.mdx (4)
128-128
: Add missing comma for better readability.Add a comma after "After that" to improve sentence structure.
-After that the permissions for the role are updated. +After that, the permissions for the role are updated.
42-42
: Use consistent "cannot" throughout the document.Replace "can not" with "cannot" for consistency in formal writing.
-permissions can not be added or removed. +permissions cannot be added or removed. -you can not allow deleting a project +you cannot allow deleting a projectAlso applies to: 74-74
🧰 Tools
🪛 LanguageTool
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...(CAN_NOT_PREMIUM)
88-88
: Add hyphen to "double-check".The compound verb "double-check" should be hyphenated.
-Here you, can double check your selection +Here you, can double-check your selection🧰 Tools
🪛 LanguageTool
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...(DOUBLE_HYPHEN)
92-92
: Use consistent articles before "organization".Use "an" instead of "a" before "organization" throughout the document.
-to a organization member +to an organization member -By default a organization member +By default an organization member -restrict a organization member +restrict an organization memberAlso applies to: 199-199, 231-231
🧰 Tools
🪛 LanguageTool
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...(EN_A_VS_AN)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (12)
packages/web/docs/public/docs/pages/management/members-roles-permissions/assign-role-01-start.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/assign-role-02-overview.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/assign-role-03-granular-access-service.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/create-role-01-start.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/create-role-02-wizard.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/create-role-03-confirm.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/create-role-04-success.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/delete-role-01-start.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/delete-role-02-confirm.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/members-tab.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/update-role-01-start.png
is excluded by!**/*.png
packages/web/docs/public/docs/pages/management/members-roles-permissions/update-role-02-editor.png
is excluded by!**/*.png
📒 Files selected for processing (3)
packages/web/docs/src/content/management/_meta.ts
(1 hunks)packages/web/docs/src/content/management/members-roles-permissions.mdx
(1 hunks)packages/web/docs/src/content/management/organizations.mdx
(0 hunks)
💤 Files with no reviewable changes (1)
- packages/web/docs/src/content/management/organizations.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/web/docs/src/content/management/_meta.ts
🧰 Additional context used
📓 Path-based instructions (1)
packages/web/docs/src/content/management/members-roles-permissions.mdx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
🪛 LanguageTool
packages/web/docs/src/content/management/members-roles-permissions.mdx
[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: ...ms workflows. When assinging a role to an user, the permissionsgranted by that ro...
(EN_A_VS_AN)
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...
(CAN_NOT_PREMIUM)
[style] ~74-~74: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...missions depend on each other. E.g. you can not allow deleting a project without granti...
(CAN_NOT_PREMIUM)
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...
(DOUBLE_HYPHEN)
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...
(EN_A_VS_AN)
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...
(FOR_THAT_COMMA)
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...
(THAT_WHO)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...
(AN_INVITE)
[style] ~185-~185: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ber to your Hive organization. Once an invite has been created, you can also copy the...
(AN_INVITE)
[uncategorized] ~198-~198: Did you mean: “By default,”?
Context: ...ion are specified by the assigned role. By default a organization member is assigned the `...
(BY_DEFAULT_COMMA)
[misspelling] ~199-~199: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...cified by the assigned role. By default a organization member is assigned the `Vi...
(EN_A_VS_AN)
[typographical] ~199-~199: The word “however” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...ion member is assigned the Viewer
role, however, you can assign any predefined or custom...
(HOWEVER_SENTENCE)
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...
(EN_A_VS_AN)
🔇 Additional comments (5)
packages/web/docs/src/content/management/members-roles-permissions.mdx (5)
13-14
: Fix typos in the introduction.There are several typos in this paragraph:
- "assinging" should be "assigning"
- "an user" should be "a user"
- "permissionsgranted" should be "permissions granted"
-When assinging a role to an user, the permissionsgranted by that role can be restricted to a set of +When assigning a role to a user, the permissions granted by that role can be restricted to a set of🧰 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: ...ms workflows. When assinging a role to an user, the permissionsgranted by that ro...(EN_A_VS_AN)
16-17
: Fix typo in bullet point.The first bullet point has incorrect grammar:
- "Fully or partially access to projects" is incorrect
-Fully or partially access to projects to a group of users +Full or partial access to projects for a group of users
96-100
: Fix incorrect image reference.The success state is using the wrong image reference.
- src={createRole03ConfirmImage} + src={createRole04SuccessImage}
304-305
: Fix typos in granular access section.There is a typo in this paragraph:
- "grnular" should be "granular"
-When selecting grnular access for a project, you can further specify which targets and which +When selecting granular access for a project, you can further specify which targets and which
1-319
: Well-structured and comprehensive documentation!The documentation is logically organized with clear sections, helpful visual aids, and good use of examples and flowcharts. The hierarchy of permissions and resource access is well explained.
🧰 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: ...ms workflows. When assinging a role to an user, the permissionsgranted by that ro...(EN_A_VS_AN)
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...(CAN_NOT_PREMIUM)
[style] ~74-~74: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...missions depend on each other. E.g. you can not allow deleting a project without granti...(CAN_NOT_PREMIUM)
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...(DOUBLE_HYPHEN)
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...(EN_A_VS_AN)
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...(FOR_THAT_COMMA)
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...(THAT_WHO)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...(AN_INVITE)
[style] ~185-~185: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ber to your Hive organization. Once an invite has been created, you can also copy the...(AN_INVITE)
[uncategorized] ~198-~198: Did you mean: “By default,”?
Context: ...ion are specified by the assigned role. By default a organization member is assigned the `...(BY_DEFAULT_COMMA)
[misspelling] ~199-~199: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...cified by the assigned role. By default a organization member is assigned the `Vi...(EN_A_VS_AN)
[typographical] ~199-~199: The word “however” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...ion member is assigned theViewer
role, however, you can assign any predefined or custom...(HOWEVER_SENTENCE)
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...(EN_A_VS_AN)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (1)
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx (1)
36-36
: Use Next.js Link component for internal navigation.For internal navigation, use the Next.js Link component instead of a regular markdown link to enable client-side navigation.
-[Learn more in the updated documentation](/docs/management/members-roles-permissions) +import Link from 'next/link' + +<Link href="/docs/management/members-roles-permissions">Learn more in the updated documentation</Link>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/member-role-assigner.png
is excluded by!**/*.png
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/member-role-editor.png
is excluded by!**/*.png
📒 Files selected for processing (2)
.changeset/tall-islands-occur.md
(1 hunks)packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
.changeset/tall-islands-occur.md (1)
Pattern .changeset/**
: A special folder with the files created/managed by Changesets tool.
In PRs that already includes this file, please make sure that the content of the markdown file includes:
- Full description of the change
- A link to the relevant GitHub issues (if any)
- Example with before/after
- If the change is of type
major
, please ensure that the content have content about migration with before/after.
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx
Show resolved
Hide resolved
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx
Outdated
Show resolved
Hide resolved
packages/web/docs/src/content/management/members-roles-permissions.mdx
Outdated
Show resolved
Hide resolved
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx
Outdated
Show resolved
Hide resolved
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (7)
packages/web/docs/src/content/management/members-roles-permissions.mdx (7)
10-11
: Fix grammatical error in teams workflows.Add an apostrophe to show possession.
-members with specific permissions can create and/or assign custom roles tailored to your teams workflows. +members with specific permissions can create and/or assign custom roles tailored to your team's workflows.🧰 Tools
🪛 LanguageTool
[uncategorized] ~10-~10: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...or assign custom roles tailored to your teams workflows. When assinging a role to an...(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
21-22
: Fix missing apostrophe in organization's.Add an apostrophe to show possession.
-Managing members, roles and permissions is done within the organizations `Member` section on the +Managing members, roles and permissions is done within the organization's `Member` section on the🧰 Tools
🪛 LanguageTool
[uncategorized] ~21-~21: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...oles and permissions is done within the organizationsMember
section on the Hive Dashboard....(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
42-43
: Improve readability with proper contraction.Use "cannot" instead of "can not" for better readability.
-These roles are read-only, permissions can not be added or removed. +These roles are read-only, permissions cannot be added or removed.🧰 Tools
🪛 LanguageTool
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...(CAN_NOT_PREMIUM)
51-52
: Add missing comma for better readability.Add a comma after the introductory phrase.
-Instead of using the predefined member roles you can create your own member roles. +Instead of using the predefined member roles, you can create your own member roles.🧰 Tools
🪛 LanguageTool
[uncategorized] ~51-~51: A comma might be missing here.
Context: ... Instead of using the predefined member roles you can create your own member roles. M...(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
77-79
: Improve preposition usage.Replace "about" with "of" for better clarity.
-overview about the permissions that will be assigned to that role. +overview of the permissions that will be assigned to that role.🧰 Tools
🪛 LanguageTool
[uncategorized] ~78-~78: The preposition “of” seems more likely in this position.
Context: ...on` button, for getting a full overview about the permissions that will be assigned t...(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)
161-162
: Use "who" for people references.When referring to people, use "who" instead of "that".
-Organization members are users that have a member roles assigned. +Organization members are users who have a member roles assigned.🧰 Tools
🪛 LanguageTool
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...(THAT_WHO)
171-173
: Add missing articles.Add "the" before nouns for better readability.
-To invite others to your organization, go to **Members** tab under your organization. To invite a -new member to your organization, write their email address and click on **Send an invite** button. +To invite others to your organization, go to the **Members** tab under your organization. To invite a +new member to your organization, write their email address and click on the **Send an invite** button.🧰 Tools
🪛 LanguageTool
[uncategorized] ~171-~171: You might be missing the article “the” here.
Context: ...vite others to your organization, go to Members tab under your organization. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~172-~172: You might be missing the article “the” here.
Context: ... write their email address and click on Send an invite button. import orgInv...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...(AN_INVITE)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx
(1 hunks)packages/web/docs/src/content/management/members-roles-permissions.mdx
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/web/docs/src/app/product-updates/(posts)/2025-01-30-new-permission-system/page.mdx
🧰 Additional context used
📓 Path-based instructions (1)
packages/web/docs/src/content/management/members-roles-permissions.mdx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
🪛 LanguageTool
packages/web/docs/src/content/management/members-roles-permissions.mdx
[uncategorized] ~10-~10: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...or assign custom roles tailored to your teams workflows. When assinging a role to an...
(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
[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: ...ms workflows. When assinging a role to an user, the permissionsgranted by that ro...
(EN_A_VS_AN)
[uncategorized] ~21-~21: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...oles and permissions is done within the organizations Member
section on the Hive Dashboard....
(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...
(CAN_NOT_PREMIUM)
[uncategorized] ~51-~51: A comma might be missing here.
Context: ... Instead of using the predefined member roles you can create your own member roles. M...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
[style] ~74-~74: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...missions depend on each other. E.g. you can not allow deleting a project without granti...
(CAN_NOT_PREMIUM)
[uncategorized] ~74-~74: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...d on each other. E.g. you can not allow deleting a project without granting the permissi...
(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~78-~78: The preposition “of” seems more likely in this position.
Context: ...on` button, for getting a full overview about the permissions that will be assigned t...
(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...
(DOUBLE_HYPHEN)
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...
(EN_A_VS_AN)
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...
(FOR_THAT_COMMA)
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...
(THAT_WHO)
[uncategorized] ~171-~171: You might be missing the article “the” here.
Context: ...vite others to your organization, go to Members tab under your organization. ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~172-~172: You might be missing the article “the” here.
Context: ... write their email address and click on Send an invite button. import orgInv...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...
(AN_INVITE)
[style] ~185-~185: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ber to your Hive organization. Once an invite has been created, you can also copy the...
(AN_INVITE)
[uncategorized] ~198-~198: Did you mean: “By default,”?
Context: ...ion are specified by the assigned role. By default a organization member is assigned the `...
(BY_DEFAULT_COMMA)
[misspelling] ~199-~199: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...cified by the assigned role. By default a organization member is assigned the `Vi...
(EN_A_VS_AN)
[typographical] ~199-~199: The word “however” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...ion member is assigned the Viewer
role, however, you can assign any predefined or custom...
(HOWEVER_SENTENCE)
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...
(EN_A_VS_AN)
[uncategorized] ~237-~237: Possible missing article found.
Context: ...e hierachical order of resources within Hive. Permissions on the organization level ...
(AI_HYDRA_LEO_MISSING_THE)
🔇 Additional comments (5)
packages/web/docs/src/content/management/members-roles-permissions.mdx (5)
13-14
: Fix multiple typos in the introduction.The sentence contains multiple typos that affect readability.
-When assinging a role to an user, the permissionsgranted by that role can be restricted to a set of +When assigning a role to a user, the permissions granted by that role can be restricted to a set of🧰 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: ...ms workflows. When assinging a role to an user, the permissionsgranted by that ro...(EN_A_VS_AN)
16-17
: Fix grammatical error in bullet point.-Fully or partially access to projects to a group of users +Full or partial access to projects for a group of users
101-158
: LGTM!The Update/Delete Member Roles section is well-structured and clear.
🧰 Tools
🪛 LanguageTool
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...(FOR_THAT_COMMA)
304-305
: Fix typo in granular access section.-When selecting grnular access for a project, you can further specify which targets and which +When selecting granular access for a project, you can further specify which targets and which
1-319
: Overall documentation structure and content is excellent!The documentation provides a comprehensive guide to member roles and permissions management. The hierarchical explanation of permissions, along with visual aids and examples, makes it easy to understand the system.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~10-~10: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...or assign custom roles tailored to your teams workflows. When assinging a role to an...(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
[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: ...ms workflows. When assinging a role to an user, the permissionsgranted by that ro...(EN_A_VS_AN)
[uncategorized] ~21-~21: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...oles and permissions is done within the organizationsMember
section on the Hive Dashboard....(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
[style] ~42-~42: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ... These roles are read-only, permissions can not be added or removed. | Role Name | Des...(CAN_NOT_PREMIUM)
[uncategorized] ~51-~51: A comma might be missing here.
Context: ... Instead of using the predefined member roles you can create your own member roles. M...(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
[style] ~74-~74: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...missions depend on each other. E.g. you can not allow deleting a project without granti...(CAN_NOT_PREMIUM)
[uncategorized] ~74-~74: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...d on each other. E.g. you can not allow deleting a project without granting the permissi...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~78-~78: The preposition “of” seems more likely in this position.
Context: ...on` button, for getting a full overview about the permissions that will be assigned t...(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)
[grammar] ~88-~88: The verb “double-check” is spelled with a hyphen.
Context: ...ed-lg drop-shadow-md" /> Here you, can double check your selection and proceed with the cre...(DOUBLE_HYPHEN)
[misspelling] ~92-~92: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...overview and is ready to be assigned to a organization member. import createRole...(EN_A_VS_AN)
[typographical] ~127-~127: Consider adding a comma here.
Context: ...me="mt-8 rounded-lg drop-shadow-md" /> After that the permissions for the role are update...(FOR_THAT_COMMA)
[style] ~161-~161: Consider using “who” when you are referring to people instead of objects.
Context: ...Members Organization members are users that have a member roles assigned. The membe...(THAT_WHO)
[uncategorized] ~171-~171: You might be missing the article “the” here.
Context: ...vite others to your organization, go to Members tab under your organization. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~172-~172: You might be missing the article “the” here.
Context: ... write their email address and click on Send an invite button. import orgInv...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~172-~172: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ir email address and click on Send an invite button. import orgInviteMemberImage ...(AN_INVITE)
[style] ~185-~185: The noun “invitation” is usually used instead of ‘invite’ in formal writing.
Context: ...ber to your Hive organization. Once an invite has been created, you can also copy the...(AN_INVITE)
[uncategorized] ~198-~198: Did you mean: “By default,”?
Context: ...ion are specified by the assigned role. By default a organization member is assigned the `...(BY_DEFAULT_COMMA)
[misspelling] ~199-~199: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...cified by the assigned role. By default a organization member is assigned the `Vi...(EN_A_VS_AN)
[typographical] ~199-~199: The word “however” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...ion member is assigned theViewer
role, however, you can assign any predefined or custom...(HOWEVER_SENTENCE)
[misspelling] ~231-~231: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...s Sometimes you might want to restrict a organization member to only being able ...(EN_A_VS_AN)
[uncategorized] ~237-~237: Possible missing article found.
Context: ...e hierachical order of resources within Hive. Permissions on the organization level ...(AI_HYDRA_LEO_MISSING_THE)
Background
Follow up for #6231
Description
Moves the member and permissions documentation to a dedicated page.
TODO:
Checklist