docs/chore: Remove broken links (#8716)

Fixes https://github.com/open-policy-agent/opa/issues/8714

Signed-off-by: Charlie Egan <charlie_egan@apple.com>
This commit is contained in:
Charlie Egan
2026-06-01 13:36:58 +01:00
committed by GitHub
parent f1612417a6
commit 98944a4f44
31 changed files with 41 additions and 139 deletions
+4 -6
View File
@@ -28,7 +28,7 @@ production users that have added themselves (in alphabetical order):
environment for microservice API authorization. OPA is deployed per-host and
inside of their Slauth (AAA) system. Policies are tagged and categorized
(e.g., platform, service, etc.) and distributed via S3. Custom log infrastructure
consumes decision logs. For more information see this talk from [OPA Summit 2019](https://www.youtube.com/watch?v=nvRTO8xjmrg).
consumes decision logs.
* Bisnode (Dun & Bradstreet) uses OPA for a wide range of use cases,
including microservice authorization, fine grained kubernetes authorization,
@@ -50,8 +50,7 @@ production users that have added themselves (in alphabetical order):
* [Capital One](https://www.capitalone.com/) uses OPA to enforce a variety of
admission control policies across their Kubernetes clusters including image
registry allowlisting, label requirements, resource requirements, container
privileges, etc. For more information see this talk from [KubeCon US 2018](https://www.youtube.com/watch?v=CDDsjMOtJ-c&t=6m35s)
and this talk from [OPA Summit 2019](https://www.youtube.com/watch?v=vkvWZuqSk5M).
privileges, etc. For more information see this talk from [KubeCon US 2018](https://www.youtube.com/watch?v=CDDsjMOtJ-c&t=6m35s).
* [Chef](https://www.chef.io/) integrates OPA to implement IAM-style
access control and enumerate user->resource permissions in Chef
@@ -166,7 +165,7 @@ production users that have added themselves (in alphabetical order):
* [Pinterest](https://www.pinterest.com/) uses OPA to solve multiple policy-related use cases
including access control in Kafka, Envoy, and Jenkins! At peak, their Kafka-OPA
integration handles ~400K QPS without caching. With caching the system
handles ~8.5M QPS. For more information see this talk from [OPA Summit 2019](https://www.youtube.com/watch?v=LhgxFICWsA8).
handles ~8.5M QPS.
* [Pix4D](https://www.pix4d.com/) uses OPA to run and define RBAC authorization policies for
the users of its cloud platform. Defining the policies in OPA ensures a single source of
@@ -216,8 +215,7 @@ production users that have added themselves (in alphabetical order):
* [Tripadvisor](https://tripadvisor.com/) uses OPA to enforce
admission control policies in Kubernetes. In the process of rolling out OPA,
they created an integration testing framework that verifies clusters are accepting
and rejecting the right objects when OPA is deployed. For more information see
this talk from [OPA Summit 2019](https://www.youtube.com/watch?v=X09c1eXvCFM).
and rejecting the right objects when OPA is deployed.
* [Very Good Security (VGS)](https://www.vgs.io/) integrates OPA to
implement a fine-grained permission system and enumerate
@@ -55,7 +55,7 @@ identified by the error message. The latter is more tricky as the code will need
functionality.
A common cause for such misunderstandings is expressing or in Rego, if you think this case might apply, there's a great
[blog post](https://www.styra.com/blog/how-to-express-or-in-rego/) on this topic here you might want to check out.
[blog post](https://web.archive.org/web/https://www.styra.com/blog/how-to-express-or-in-rego/) on this topic here you might want to check out.
Failing that, the best place to start is to review the OPA documentation on Rego, see this page for an
[explanation of Rego's keywords](https://www.openpolicyagent.org/docs/policy-language).
+1 -1
View File
@@ -680,7 +680,7 @@ shell_accessible contains server.id if {
:::tip
Check out this
[blog post](https://www.styra.com/blog/how-to-express-or-in-rego/)
[blog post](https://web.archive.org/web/https://www.styra.com/blog/how-to-express-or-in-rego/)
that goes into much more detail on this topic showing different methods to
express OR in idiomatic Rego for different use cases.
:::
+1 -1
View File
@@ -796,7 +796,7 @@ allow if {
#### Related Resources
- [Five things you didn't know about OPA](https://www.styra.com/blog/five-things-you-didnt-know-about-opa/).
- [Five things you didn't know about OPA](https://web.archive.org/web/https://www.styra.com/blog/five-things-you-didnt-know-about-opa/).
## Functions
+1 -1
View File
@@ -473,7 +473,7 @@ were part of the compiler `strict` mode in OPA 0.x.
Users with v0.x Rego projects are encouraged to follow the below process to
upgrade their Rego code to conform to best practices, and to be compatible with
OPA v1.0. These steps are largely based on the process outlined in this
[detailed blog post](https://www.styra.com/blog/renovating-rego/).
[detailed blog post](https://web.archive.org/web/https://www.styra.com/blog/renovating-rego/).
Before starting the upgrade, users are recommended to ensure they have a local
OPA binary of version 1.0 or later.
+3 -3
View File
@@ -11,8 +11,8 @@ sidebar_label: Architecture
Or "How does Regal work?"
As you might have [read](https://www.styra.com/blog/guarding-the-guardrails-introducing-regal-the-rego-linter/), Regal
[uses Rego for linting Rego](https://www.styra.com/blog/linting-rego-with-rego/) — or rather, Rego policies turned into
As you might have [read](https://web.archive.org/web/https://www.styra.com/blog/guarding-the-guardrails-introducing-regal-the-rego-linter/), Regal
[uses Rego for linting Rego](https://web.archive.org/web/https://www.styra.com/blog/linting-rego-with-rego/) — or rather, Rego policies turned into
a JSON representation of their abstract syntax tree (AST).
## High-level Overview
@@ -45,7 +45,7 @@ The main entrypoint for Rego rule evaluation is unsurprisingly found in
rule from the [Go](https://github.com/open-policy-agent/regal/blob/main/pkg/linter/linter.go) application.
The `report` rule in turn uses
[dynamic policy composition](https://www.styra.com/blog/dynamic-policy-composition-for-opa/) to query all rules named
[dynamic policy composition](https://web.archive.org/web/https://www.styra.com/blog/dynamic-policy-composition-for-opa/) to query all rules named
`report` under `data.regal.rules[category][title]` for built-in rules, and `data.custom.regal.rules[category][title]`
for custom rules. The violations reported from each rule is added to the `report` set and sent back to the application,
which will compile a final report and present it to the user.
+1 -1
View File
@@ -13,7 +13,7 @@ Roast is an optimized JSON format for [Rego](https://www.openpolicyagent.org/doc
as common utilities for working with both the Roast format and OPA's AST APIs.
Roast is used by [Regal](https://www.openpolicyagent.org/projects/regal), where the JSON representation of Rego's AST is used input for
static analysis [performed by Rego itself](https://www.styra.com/blog/linting-rego-with-rego/) to determine whether
static analysis [performed by Rego itself](https://web.archive.org/web/https://www.styra.com/blog/linting-rego-with-rego/) to determine whether
policies conform to Regal's linter rules.
> [!IMPORTANT]
+3 -3
View File
@@ -359,12 +359,12 @@ contains information about how to hack on Regal itself.
### Blogs and Articles
- [Guarding the Guardrails - Introducing Regal the Rego Linter](https://www.styra.com/blog/guarding-the-guardrails-introducing-regal-the-rego-linter/)
- [Guarding the Guardrails - Introducing Regal the Rego Linter](https://web.archive.org/web/https://www.styra.com/blog/guarding-the-guardrails-introducing-regal-the-rego-linter/)
by Anders Eknert ([@anderseknert](https://github.com/anderseknert))
- [Scaling Open Source Community by Getting Closer to Users](https://thenewstack.io/scaling-open-source-community-by-getting-closer-to-users/)
by Charlie Egan ([@charlieegan3](https://github.com/charlieegan3))
- [Renovating Rego](https://www.styra.com/blog/renovating-rego/) by Anders Eknert ([@anderseknert](https://github.com/anderseknert))
- [Linting Rego with... Rego!](https://www.styra.com/blog/linting-rego-with-rego/) by Anders Eknert ([@anderseknert](https://github.com/anderseknert))
- [Renovating Rego](https://web.archive.org/web/https://www.styra.com/blog/renovating-rego/) by Anders Eknert ([@anderseknert](https://github.com/anderseknert))
- [Linting Rego with... Rego!](https://web.archive.org/web/https://www.styra.com/blog/linting-rego-with-rego/) by Anders Eknert ([@anderseknert](https://github.com/anderseknert))
- [Regal: Rego(OPA)用リンタの導入手順](https://zenn.dev/erueru_tech/articles/6cfb886d92858a) by Jun Fujita ([@erueru-tech](https://github.com/erueru-tech))
- [Regal を使って Rego を Lint する](https://tech.dentsusoken.com/entry/2024/12/05/Regal_%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6_Rego_%E3%82%92_Lint_%E3%81%99%E3%82%8B)
by Shibata Takao ([@shibata.takao](https://shodo.ink/@shibata.takao/))
+1 -1
View File
@@ -75,6 +75,6 @@ effort.
- OPA Docs: [Upgrading to v1.0](https://www.openpolicyagent.org/docs/v0-upgrade)
- OPA Docs: [v0 Backwards Compatibility](https://www.openpolicyagent.org/docs/v0-compatibility)
- Styra Blog: [Renovating Rego](https://www.styra.com/blog/renovating-rego/)
- Styra Blog: [Renovating Rego](https://web.archive.org/web/https://www.styra.com/blog/renovating-rego/)
- OPA Blog: [OPA 1.0 Is Coming, Here's What You Need to Know](https://blog.openpolicyagent.org/opa-1-0-is-coming-heres-what-you-need-to-know-c8fb0d258368)
- OPA Blog: [Announcing OPA 1.0: A New Standard for Policy as Code](https://blog.openpolicyagent.org/announcing-opa-1-0-a-new-standard-for-policy-as-code-a6d8427ee828)
@@ -50,6 +50,6 @@ rules:
## Related Resources
- Styra Blog: [How to express OR in Rego](https://www.styra.com/blog/how-to-express-or-in-rego/)
- Styra Blog: [How to express OR in Rego](https://web.archive.org/web/https://www.styra.com/blog/how-to-express-or-in-rego/)
- Regal Docs: [default-over-else](https://www.openpolicyagent.org/projects/regal/rules/style/default-over-else)
- GitHub: [Source Code](https://github.com/open-policy-agent/regal/blob/main/bundle/regal/rules/idiomatic/boolean-assignment/boolean_assignment.rego)
@@ -92,5 +92,5 @@ rules:
## Related Resources
- Styra Blog: [How to express OR in Rego](https://www.styra.com/blog/how-to-express-or-in-rego/)
- Styra Blog: [How to express OR in Rego](https://web.archive.org/web/https://www.styra.com/blog/how-to-express-or-in-rego/)
- GitHub: [Source Code](https://github.com/open-policy-agent/regal/blob/main/bundle/regal/rules/idiomatic/equals-pattern-matching/equals_pattern_matching.rego)
@@ -44,7 +44,7 @@ user_roles_mapping[user] := roles if {
## Rationale
Comprehensions are [awesome](https://www.styra.com/blog/five-things-you-didnt-know-about-opa/), and should be part of
Comprehensions are [awesome](https://web.archive.org/web/https://www.styra.com/blog/five-things-you-didnt-know-about-opa/), and should be part of
any policy author's toolbox. Using comprehensions inside of rule bodies allow for a wide variety of elegant solutions to
otherwise hard problems. However, when used as the value directly (and unconditionally) assigned to a rule, it is almost
always better to use a rule that generates a set or object in the rule body rather than having a comprehension do so in
@@ -145,5 +145,5 @@ rules:
- OPA Docs: [Generating Sets](https://www.openpolicyagent.org/docs/policy-language/#generating-sets)
- OPA Docs: [Generating Objects](https://www.openpolicyagent.org/docs/policy-language/#generating-objects)
- OPA Docs: [Comprehensions](https://www.openpolicyagent.org/docs/policy-language/#comprehensions)
- Styra Blog: [Five Things You Didn't Know About OPA](https://www.styra.com/blog/five-things-you-didnt-know-about-opa/)
- Styra Blog: [Five Things You Didn't Know About OPA](https://web.archive.org/web/https://www.styra.com/blog/five-things-you-didnt-know-about-opa/)
- GitHub: [Source Code](https://github.com/open-policy-agent/regal/blob/main/bundle/regal/rules/idiomatic/prefer-set-or-object-rule/prefer_set_or_object_rule.rego)
@@ -64,7 +64,7 @@ The obvious exception is stated already in the title of this rule: unit tests! U
is what `with` is for.
Using `with` outside the context of unit tests is most commonly seen in policies using
[dynamic policy composition](https://www.styra.com/blog/dynamic-policy-composition-for-opa/), which typically involves
[dynamic policy composition](https://web.archive.org/web/https://www.styra.com/blog/dynamic-policy-composition-for-opa/), which typically involves
a "main" policy dispatching to a number of other policies and aggregating the result of evaluating each one. In this
scenario it's quite common to need to alter either `input` or `data` before evaluating a policy or rule, and `with` is
commonly used for this purpose. If you need to use `with` outside of tests, make sure that rules evaluated frequently
@@ -85,5 +85,5 @@ rules:
## Related Resources
- OPA Docs: [With Keyword](https://www.openpolicyagent.org/docs/policy-language/#with-keyword)
- Styra Blog: [Dynamic Policy Composition for OPA](https://www.styra.com/blog/dynamic-policy-composition-for-opa/)
- Styra Blog: [Dynamic Policy Composition for OPA](https://web.archive.org/web/https://www.styra.com/blog/dynamic-policy-composition-for-opa/)
- GitHub: [Source Code](https://github.com/open-policy-agent/regal/blob/main/bundle/regal/rules/performance/with-outside-test-context/with_outside_test_context.rego)
@@ -42,7 +42,7 @@ rules:
## Related Resources
- Styra Blog: [Dynamic Policy Composition](https://www.styra.com/blog/dynamic-policy-composition-for-opa/)
- Styra Blog: [Dynamic Policy Composition](https://web.archive.org/web/https://www.styra.com/blog/dynamic-policy-composition-for-opa/)
- Regal Docs: [line-length](https://www.openpolicyagent.org/projects/regal/rules/style/line-length)
- Regal Docs: [rule-length](https://www.openpolicyagent.org/projects/regal/rules/style/rule-length)
- GitHub: [Source Code](https://github.com/open-policy-agent/regal/blob/main/bundle/regal/rules/style/file-length/file_length.rego)
@@ -10,7 +10,7 @@ tutorials:
code:
- https://github.com/StyraOSS/opa-aws-cloudformation-hook
blogs:
- https://www.styra.com/blog/the-opa-aws-cloudformation-hook/
- https://web.archive.org/web/https://www.styra.com/blog/the-opa-aws-cloudformation-hook/
inventors:
- styra
docs_features:
@@ -4,7 +4,6 @@ labels:
type: poweredbyopa
layer: application
code:
- https://www.useboomerang.io/
- https://github.com/boomerang-io
inventors:
- ibm
+1 -1
View File
@@ -10,7 +10,7 @@ code:
inventors:
- styra
blogs:
- https://www.styra.com/blog/introducing-styra-load-enterprise-opa-distribution-for-data-heavy-authorization/
- https://web.archive.org/web/https://www.styra.com/blog/introducing-styra-load-enterprise-opa-distribution-for-data-heavy-authorization/
videos:
- title: Start Loving Your Data-heavy Authorization
speakers:
@@ -1,19 +0,0 @@
---
title: Express OR in Rego
subtitle: Idiomatic Rego Examples
labels:
category: learning
layer: web
inventors:
- styra
blogs:
- https://www.styra.com/blog/how-to-express-or-in-rego/
docs_features:
learning-rego:
note: |
This [learning material](https://www.styra.com/blog/how-to-express-or-in-rego/)
is a great way to learn how to migrate logic from other languages to Rego.
---
This [learning material](https://www.styra.com/blog/how-to-express-or-in-rego/)
is a great way to learn how to migrate logic from other languages to Rego.
@@ -1,22 +0,0 @@
---
title: GCP audit with Forseti
labels:
category: publiccloud
inventors:
- google
code:
- "https://opensource.google/projects/forsetisecurity"
videos:
- title: Repeatable GCP Environments at Scale with Cloud Build Infra-as-Code Pipelines
speakers:
- name: Morgante Pell
organization: google
- name: Andrew Phillips
organization: google
venue: Cloud Next 2019
link: "https://www.youtube.com/watch?v=3vfXQxWJazM&feature=youtu.be&t=2054"
---
Google cloud provides a plethora of software as a service. Forseti, built using
OPA, lets you run policy checks against the software resources on Google cloud
and remediate violations.
@@ -10,7 +10,7 @@ inventors:
code:
- https://github.com/anderseknert/opa-google-calendar
blogs:
- https://www.styra.com/blog/the-power-of-data-calendar-based-policy-enforcement/
- https://web.archive.org/web/https://www.styra.com/blog/the-power-of-data-calendar-based-policy-enforcement/
---
Using the Google Calendar API with OPA for calendar powered policy decisions
@@ -3,7 +3,7 @@ title: Kubernetes Authorization
code:
- https://github.com/open-policy-agent/contrib/tree/main/k8s_authorization
blogs:
- https://www.styra.com/blog/kubernetes-authorization-webhook/
- https://web.archive.org/web/https://www.styra.com/blog/kubernetes-authorization-webhook/
- https://itnext.io/kubernetes-authorization-via-open-policy-agent-a9455d9d5ceb
- https://itnext.io/optimizing-open-policy-agent-based-kubernetes-authorization-via-go-execution-tracer-7b439bb5dc5b
inventors:
+1 -1
View File
@@ -7,7 +7,7 @@ labels:
tutorials:
- https://www.openpolicyagent.org/docs/oauth-oidc
blogs:
- https://www.styra.com/blog/integrating-identity-oauth2-and-openid-connect-in-open-policy-agent/
- https://web.archive.org/web/https://www.styra.com/blog/integrating-identity-oauth2-and-openid-connect-in-open-policy-agent/
---
Integrating OAuth2 with Open Policy Agent
+1 -1
View File
@@ -8,7 +8,7 @@ labels:
tutorials:
- https://www.openpolicyagent.org/docs/oauth-oidc
blogs:
- https://www.styra.com/blog/integrating-identity-oauth2-and-openid-connect-in-open-policy-agent/
- https://web.archive.org/web/https://www.styra.com/blog/integrating-identity-oauth2-and-openid-connect-in-open-policy-agent/
---
Integrating OpenID Connect (OIDC) with Open Policy Agent
@@ -1,27 +0,0 @@
---
title: OPA Errors
subtitle: OPA error message reference
labels:
category: learning
inventors:
- styra
code:
- https://docs.styra.com/opa/errors
tutorials:
- https://docs.styra.com/opa/errors
docs_features:
debugging-rego:
note: |
[OPA Errors](https://docs.styra.com/opa/errors) is a guide aimed at
helping users debug OPA errors by documenting common errors and fixes in
detail.
---
[OPA Errors](https://docs.styra.com/opa/errors) is a guide is designed to help
you understand the most common errors you'll encounter when working with OPA.
Each page provides examples of an OPA error, why it's an error,
and how to fix it.
If you'd like to request that a new error is listed, please drop us a message in
the
[Styra Slack](https://inviter.co/styra).
+1 -1
View File
@@ -7,7 +7,7 @@ labels:
inventors:
- styra
blogs:
- https://www.styra.com/blog/guarding-the-guardrails-introducing-regal-the-rego-linter/
- https://web.archive.org/web/https://www.styra.com/blog/guarding-the-guardrails-introducing-regal-the-rego-linter/
- https://thenewstack.io/scaling-open-source-community-by-getting-closer-to-users/
code:
- https://github.com/open-policy-agent/regal
@@ -1,26 +0,0 @@
---
title: Rego Language Comparisons
subtitle: Learn Rego by comparison
labels:
category: learning
inventors:
- styra
tutorials:
- https://docs.styra.com/opa/rego-language-comparisons
docs_features:
learning-rego:
note: |
The [Rego Language Comparisons](https://docs.styra.com/opa/rego-language-comparisons)
guide provides a series of examples illustrating
how a policy can be expressed in a given language and the corresponding Rego code for comparison.
[Java](https://docs.styra.com/opa/rego-language-comparisons/java),
[Python](https://docs.styra.com/opa/rego-language-comparisons/python),
and [Go](https://docs.styra.com/opa/rego-language-comparisons/go) are currently covered.
---
The [Rego Language Comparisons](https://docs.styra.com/opa/rego-language-comparisons)
guide provides a series of examples illustrating
how a policy can be expressed in a given language and the corresponding Rego code for comparison.
[Java](https://docs.styra.com/opa/rego-language-comparisons/java),
[Python](https://docs.styra.com/opa/rego-language-comparisons/python),
and [Go](https://docs.styra.com/opa/rego-language-comparisons/go) are currently covered.
+2 -2
View File
@@ -7,7 +7,7 @@ software:
- spiffe
- spire
blogs:
- https://www.styra.com/blog/zero-trust-with-envoy-spire-and-open-policy-agent-opa/
- https://web.archive.org/web/https://www.styra.com/blog/zero-trust-with-envoy-spire-and-open-policy-agent-opa/
code:
- https://github.com/spiffe/spire/blob/v1.0.2/doc/authorization_policy_engine.md
tutorials:
@@ -17,7 +17,7 @@ docs_features:
envoy:
note: |
SPIRE can be used to integrate with Envoy and OPA. See a
[blog here](https://www.styra.com/blog/zero-trust-with-envoy-spire-and-open-policy-agent-opa/)
[blog here](https://web.archive.org/web/https://www.styra.com/blog/zero-trust-with-envoy-spire-and-open-policy-agent-opa/)
to learn more.
rest-api-integration:
note: |
+1 -1
View File
@@ -21,7 +21,7 @@ code:
- https://github.com/tenable/terrascan/tree/master/pkg/policies/opa/rego
- https://github.com/Checkmarx/kics/tree/master/assets/queries/terraform
blogs:
- https://www.styra.com/blog/policy-based-infrastructure-guardrails-with-terraform-and-opa/
- https://web.archive.org/web/https://www.styra.com/blog/policy-based-infrastructure-guardrails-with-terraform-and-opa/
inventors:
- fugue
- accurics
@@ -9,7 +9,7 @@ code:
videos:
- https://www.youtube.com/watch?v=BpMttxuPv6Y
tutorials:
- https://docs.styra.com/regal/editor-support#visual-studio-code
- /projects/regal/editor-support#visual-studio-code
software:
- editors
inventors:
@@ -27,7 +27,7 @@ docs_features:
The extension provides support for debugging Rego policies using the
native VS Code debugging interface. This is based on Regal's Debug
Adapter, see the
[VS Code documentation](https://docs.styra.com/regal/editor-support#visual-studio-code)
[VS Code documentation](/projects/regal/editor-support#visual-studio-code)
to get started.
---
@@ -35,5 +35,5 @@ The [vscode-opa extension](https://marketplace.visualstudio.com/items?itemName=t
is a Visual Studio Code extension that provides support for the Rego language
and OPA functionality. The extension includes syntax highlighting, and first
class support for the Regal
[Language Server](https://docs.styra.com/regal/language-server) and
[Debug Adapter](https://docs.styra.com/regal/debug-adapter).
[Language Server](/projects/regal/language-server) and
[Debug Adapter](/projects/regal/debug-adapter).
+3 -4
View File
@@ -12,10 +12,9 @@ inventors:
software:
- ssikit
code:
- https://github.com/walt-id/waltid-ssikit
- https://github.com/walt-id/waltid-identity
tutorials:
- https://docs-old.walt.id/ssikit/concepts/open-policy-agent
- https://docs-old.walt.id/ssikit/concepts/verification-policies/dynamic-policies
- https://docs.walt.id/community-stack/verifier/credential-verification/policies/dynamic-verification-policies
videos:
- title: Verifying W3C Verifiable Credentials with the SSI Kit using OPA (Open Policy
Agent)
@@ -28,7 +27,7 @@ docs_features:
note: |
SSI Kit's CLI exposes policy management commands which update a local
OPA instance. The feature is
[documented in the walt.id docs](https://docs-old.walt.id/ssikit/concepts/open-policy-agent).
[documented in the walt.id docs](https://docs.walt.id/community-stack/verifier/credential-verification/policies/dynamic-verification-policies).
---
Verifying W3C Verifiable Credentials for building SSI (Self-Sovereign Identity) use cases.
+1 -1
View File
@@ -13,7 +13,7 @@ breakpoints, and variable scopes.
> The Debug API current actively supported in two clients
> [VS Code](https://github.com/open-policy-agent/vscode-opa) and
> [Neovim](https://github.com/rinx/nvim-dap-rego/tree/main). Both
> [Regal's Debug Adapter](https://docs.styra.com/regal/debug-adapter) as the
> [Regal's Debug Adapter](https://www.openpolicyagent.org/projects/regal/debug-adapter) as the
> backend, which is based on this API.
> [!WARNING]