Authzed Permissions API
Check, expand, and lookup permissions on resources and subjects
Check, expand, and lookup permissions on resources and subjects
openapi: 3.0.3
info:
title: Authzed SpiceDB Experimental Permissions API
description: SpiceDB Permissions API — gRPC and HTTP/JSON interfaces for writing schemas, managing relationship tuples, and executing permission checks using a Zanzibar-inspired graph model. Supports CheckPermission, LookupResources, LookupSubjects, WriteRelationships, ReadRelationships, DeleteRelationships, WriteSchema, ReadSchema, and streaming Watch operations.
version: '1.0'
contact:
name: Authzed, Inc.
url: https://github.com/authzed/api
email: support@authzed.com
license:
name: Apache 2.0 License
url: https://github.com/authzed/api/blob/main/LICENSE
servers:
- url: https://grpc.authzed.com
description: Authzed Cloud primary endpoint
- url: https://app.authzed.com
description: Authzed Cloud management endpoint
security:
- BearerAuth: []
tags:
- name: Permissions
description: Check, expand, and lookup permissions on resources and subjects
paths:
/v1/permissions/check:
post:
operationId: PermissionsService_CheckPermission
summary: 'CheckPermission determines for a given resource whether a subject computes
to having a permission or is a direct member of a particular relation.'
tags:
- Permissions
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckPermissionRequest'
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/CheckPermissionResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
/v1/permissions/checkbulk:
post:
operationId: PermissionsService_CheckBulkPermissions
summary: 'CheckBulkPermissions evaluates the given list of permission checks
and returns the list of results.'
tags:
- Permissions
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckBulkPermissionsRequest'
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/CheckBulkPermissionsResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
/v1/permissions/expand:
post:
operationId: PermissionsService_ExpandPermissionTree
summary: 'ExpandPermissionTree reveals the graph structure for a resource''s
permission or relation. This RPC does not recurse infinitely deep and may
require multiple calls to fully unnest a deeply nested graph.'
tags:
- Permissions
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpandPermissionTreeRequest'
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/ExpandPermissionTreeResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
/v1/permissions/resources:
post:
operationId: PermissionsService_LookupResources
summary: 'LookupResources returns all the resources of a given type that a subject
can access whether via a computed permission or relation membership.'
tags:
- Permissions
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LookupResourcesRequest'
responses:
'200':
description: A successful response.(streaming responses)
content:
application/json:
schema:
type: object
properties:
result:
$ref: '#/components/schemas/LookupResourcesResponse'
error:
$ref: '#/components/schemas/Status'
title: Stream result of LookupResourcesResponse
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
/v1/permissions/subjects:
post:
operationId: PermissionsService_LookupSubjects
summary: 'LookupSubjects returns all the subjects of a given type that
have access whether via a computed permission or relation membership.'
tags:
- Permissions
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LookupSubjectsRequest'
responses:
'200':
description: A successful response.(streaming responses)
content:
application/json:
schema:
type: object
properties:
result:
$ref: '#/components/schemas/LookupSubjectsResponse'
error:
$ref: '#/components/schemas/Status'
title: Stream result of LookupSubjectsResponse
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
components:
schemas:
SubProblems:
type: object
properties:
traces:
type: array
items:
type: object
$ref: '#/components/schemas/CheckDebugTrace'
CheckBulkPermissionsRequest:
type: object
properties:
consistency:
$ref: '#/components/schemas/Consistency'
items:
type: array
items:
type: object
$ref: '#/components/schemas/CheckBulkPermissionsRequestItem'
withTracing:
type: boolean
description: 'with_tracing, if true, indicates that each response should include a debug trace.
This can be useful for debugging and performance analysis, but adds a small amount
of compute overhead to the request.'
description: 'CheckBulkPermissionsRequest issues a check on whether a subject has permission
or is a member of a relation on a specific resource for each item in the list.
The ordering of the items in the response is maintained in the response.
Checks with the same subject/permission will automatically be batched for performance optimization.'
Any:
type: object
properties:
'@type':
type: string
description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
additionalProperties: {}
description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": <string>,\n \"lastName\": <string>\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }"
LookupResourcesResponse:
type: object
properties:
lookedUpAt:
$ref: '#/components/schemas/ZedToken'
description: looked_up_at is the ZedToken at which the resource was found.
resourceObjectId:
type: string
description: resource_object_id is the object ID of the found resource.
permissionship:
$ref: '#/components/schemas/LookupPermissionship'
title: permissionship indicates whether the response was partially evaluated or not
partialCaveatInfo:
$ref: '#/components/schemas/PartialCaveatInfo'
title: partial_caveat_info holds information of a partially-evaluated caveated response
afterResultCursor:
$ref: '#/components/schemas/v1.Cursor'
description: 'after_result_cursor holds a cursor that can be used to resume the LookupResources stream after this
result.'
description: 'LookupResourcesResponse contains a single matching resource object ID for the
requested object type, permission, and subject.'
CheckPermissionResponse:
type: object
properties:
checkedAt:
$ref: '#/components/schemas/ZedToken'
permissionship:
$ref: '#/components/schemas/CheckPermissionResponse.Permissionship'
description: 'Permissionship communicates whether or not the subject has the requested
permission or has a relationship with the given resource, over the given
relation.
This value will be authzed.api.v1.PERMISSIONSHIP_HAS_PERMISSION if the
requested subject is a member of the computed permission set or there
exists a relationship with the requested relation from the given resource
to the given subject.'
partialCaveatInfo:
$ref: '#/components/schemas/PartialCaveatInfo'
title: partial_caveat_info holds information of a partially-evaluated caveated response
debugTrace:
$ref: '#/components/schemas/DebugInformation'
description: debug_trace is the debugging trace of this check, if requested.
optionalExpiresAt:
type: string
format: date-time
description: 'optional_expires_at is the time at which at least one of the relationships used to
compute this result, expires (if any). This is *not* related to the caching window.'
ResolvedSubject:
type: object
properties:
subjectObjectId:
type: string
description: 'subject_object_id is the Object ID of the subject found. May be a `*` if
a wildcard was found.'
permissionship:
$ref: '#/components/schemas/LookupPermissionship'
title: permissionship indicates whether the response was partially evaluated or not
partialCaveatInfo:
$ref: '#/components/schemas/PartialCaveatInfo'
title: partial_caveat_info holds information of a partially-evaluated caveated response
description: ResolvedSubject is a single subject resolved within LookupSubjects.
PermissionType:
type: string
enum:
- PERMISSION_TYPE_UNSPECIFIED
- PERMISSION_TYPE_RELATION
- PERMISSION_TYPE_PERMISSION
default: PERMISSION_TYPE_UNSPECIFIED
LookupSubjectsResponse:
type: object
properties:
lookedUpAt:
$ref: '#/components/schemas/ZedToken'
subjectObjectId:
type: string
title: 'subject_object_id is the Object ID of the subject found. May be a `*` if
a wildcard was found.
deprecated: use `subject`'
excludedSubjectIds:
type: array
items:
type: string
title: 'excluded_subject_ids are the Object IDs of the subjects excluded. This list
will only contain object IDs if `subject_object_id` is a wildcard (`*`) and
will only be populated if exclusions exist from the wildcard.
deprecated: use `excluded_subjects`'
permissionship:
$ref: '#/components/schemas/LookupPermissionship'
title: 'permissionship indicates whether the response was partially evaluated or not
deprecated: use `subject.permissionship`'
partialCaveatInfo:
$ref: '#/components/schemas/PartialCaveatInfo'
title: 'partial_caveat_info holds information of a partially-evaluated caveated response
deprecated: use `subject.partial_caveat_info`'
subject:
$ref: '#/components/schemas/ResolvedSubject'
description: subject is the subject found, along with its permissionship.
excludedSubjects:
type: array
items:
type: object
$ref: '#/components/schemas/ResolvedSubject'
description: 'excluded_subjects are the subjects excluded. This list
will only contain subjects if `subject.subject_object_id` is a wildcard (`*`) and
will only be populated if exclusions exist from the wildcard.'
afterResultCursor:
$ref: '#/components/schemas/v1.Cursor'
description: 'after_result_cursor holds a cursor that can be used to resume the LookupSubjects stream after this
result.'
description: 'LookupSubjectsResponse contains a single matching subject object ID for the
requested subject object type on the permission or relation.'
CheckDebugTrace:
type: object
properties:
resource:
$ref: '#/components/schemas/ObjectReference'
description: 'resource holds the resource on which the Check was performed.
for batched calls, the object_id field contains a comma-separated list of object IDs
for all the resources checked in the batch.'
permission:
type: string
description: permission holds the name of the permission or relation on which the Check was performed.
permissionType:
$ref: '#/components/schemas/PermissionType'
description: permission_type holds information indicating whether it was a permission or relation.
subject:
$ref: '#/components/schemas/SubjectReference'
description: 'subject holds the subject on which the Check was performed. This will be static across all calls within
the same Check tree.'
result:
$ref: '#/components/schemas/CheckDebugTrace.Permissionship'
description: result holds the result of the Check call.
caveatEvaluationInfo:
$ref: '#/components/schemas/CaveatEvalInfo'
description: caveat_evaluation_info holds information about the caveat evaluated for this step of the trace.
duration:
type: string
description: duration holds the time spent executing this Check operation.
wasCachedResult:
type: boolean
description: was_cached_result, if true, indicates that the result was found in the cache and returned directly.
subProblems:
$ref: '#/components/schemas/SubProblems'
description: 'sub_problems holds the sub problems that were executed to resolve the answer to this Check. An empty list
and a permissionship of PERMISSIONSHIP_HAS_PERMISSION indicates the subject was found within this relation.'
optionalExpiresAt:
type: string
format: date-time
description: 'optional_expires_at is the time at which at least one of the relationships used to
compute this result, expires (if any). This is *not* related to the caching window.'
traceOperationId:
type: string
description: 'trace_operation_id is a unique identifier for this trace''s operation, that will
be shared for all traces created for the same check operation in SpiceDB.
In cases where SpiceDB performs automatic batching of subproblems, this ID can be used
to correlate work that was shared across multiple traces.
This identifier is generated by SpiceDB, is to be considered opaque to the caller
and only guaranteed to be unique within the same overall Check or CheckBulk operation.'
source:
type: string
description: 'source holds the source of the result. It is of the form:
`<sourcetype>:<sourceid>`, where sourcetype can be, among others:
`spicedb`, `materialize`, etc.'
description: 'CheckDebugTrace is a recursive trace of the requests made for resolving a CheckPermission
API call.'
ZedToken:
type: object
properties:
token:
type: string
description: 'ZedToken represents a point in time, or a "revision" in SpiceDB.
It is used to provide causality metadata between Write and read requests (Check, ReadRelationships, LookupResources, LookupSubjects)
and can also be used to start watching for changes from a specific point in time.
See the authzed.api.v1.Consistency message for more information.'
v1.Cursor:
type: object
properties:
token:
type: string
description: 'Cursor is used to provide resumption of listing between calls to APIs
such as LookupResources.'
Status:
type: object
properties:
code:
type: integer
format: int32
description: 'The status code, which should be an enum value of
[google.rpc.Code][google.rpc.Code].'
message:
type: string
description: 'A developer-facing error message, which should be in English. Any
user-facing error message should be localized and sent in the
[google.rpc.Status.details][google.rpc.Status.details] field, or localized
by the client.'
details:
type: array
items:
type: object
$ref: '#/components/schemas/Any'
description: 'A list of messages that carry the error details. There is a common set of
message types for APIs to use.'
description: 'The `Status` type defines a logical error model that is suitable for
different programming environments, including REST APIs and RPC APIs. It is
used by [gRPC](https://github.com/grpc). Each `Status` message contains
three pieces of data: error code, error message, and error details.
You can find out more about this error model and how to work with it in the
[API Design Guide](https://cloud.google.com/apis/design/errors).'
Result:
type: string
enum:
- RESULT_UNSPECIFIED
- RESULT_UNEVALUATED
- RESULT_FALSE
- RESULT_TRUE
- RESULT_MISSING_SOME_CONTEXT
default: RESULT_UNSPECIFIED
AlgebraicSubjectSet:
type: object
properties:
operation:
$ref: '#/components/schemas/AlgebraicSubjectSet.Operation'
children:
type: array
items:
type: object
$ref: '#/components/schemas/PermissionRelationshipTree'
description: 'AlgebraicSubjectSet is a subject set which is computed based on applying the
specified operation to the operands according to the algebra of sets.
UNION is a logical set containing the subject members from all operands.
INTERSECTION is a logical set containing only the subject members which are
present in all operands.
EXCLUSION is a logical set containing only the subject members which are
present in the first operand, and none of the other operands.'
ObjectReference:
type: object
properties:
objectType:
type: string
objectId:
type: string
description: ObjectReference is used to refer to a specific object in the system.
WildcardOption:
type: string
enum:
- WILDCARD_OPTION_UNSPECIFIED
- WILDCARD_OPTION_INCLUDE_WILDCARDS
- WILDCARD_OPTION_EXCLUDE_WILDCARDS
default: WILDCARD_OPTION_UNSPECIFIED
ExpandPermissionTreeRequest:
type: object
properties:
consistency:
$ref: '#/components/schemas/Consistency'
resource:
$ref: '#/components/schemas/ObjectReference'
description: resource is the resource over which to run the expansion.
permission:
type: string
description: 'permission is the name of the permission or relation over which to run the
expansion for the resource.'
description: 'ExpandPermissionTreeRequest returns a tree representing the expansion of all
relationships found accessible from a permission or relation on a particular
resource.
ExpandPermissionTreeRequest is typically used to determine the full set of
subjects with a permission, along with the relationships that grant said
access.'
CaveatEvalInfo:
type: object
properties:
expression:
type: string
description: expression is the expression that was evaluated.
result:
$ref: '#/components/schemas/Result'
description: result is the result of the evaluation.
context:
type: object
description: context consists of any named values that were used for evaluating the caveat expression.
partialCaveatInfo:
$ref: '#/components/schemas/PartialCaveatInfo'
description: partial_caveat_info holds information of a partially-evaluated caveated response, if applicable.
caveatName:
type: string
description: caveat_name is the name of the caveat that was executed, if applicable.
description: CaveatEvalInfo holds information about a caveat expression that was evaluated.
DebugInformation:
type: object
properties:
check:
$ref: '#/components/schemas/CheckDebugTrace'
description: check holds debug information about a check request.
schemaUsed:
type: string
description: schema_used holds the schema used for the request.
description: 'DebugInformation defines debug information returned by an API call in a footer when
requested with a specific debugging header.
The specific debug information returned will depend on the type of the API call made.
See the github.com/authzed/authzed-go project for the specific header and footer names.'
LookupPermissionship:
type: string
enum:
- LOOKUP_PERMISSIONSHIP_UNSPECIFIED
- LOOKUP_PERMISSIONSHIP_HAS_PERMISSION
- LOOKUP_PERMISSIONSHIP_CONDITIONAL_PERMISSION
default: LOOKUP_PERMISSIONSHIP_UNSPECIFIED
description: "- LOOKUP_PERMISSIONSHIP_UNSPECIFIED: LOOKUP_PERMISSIONSHIP_UNSPECIFIED is the default value and should not be used or\nrelied upon. Servers should not return this value.\n - LOOKUP_PERMISSIONSHIP_HAS_PERMISSION: LOOKUP_PERMISSIONSHIP_HAS_PERMISSION indicates that the subject has permission\non the resource with no missing caveat context.\n - LOOKUP_PERMISSIONSHIP_CONDITIONAL_PERMISSION: LOOKUP_PERMISSIONSHIP_CONDITIONAL_PERMISSION indicates that the subject has\npermission on the resource, but only if a caveat condition is met. The\n`partial_caveat_info` field in the response should contain the missing context\nfields that must be provided to fully evaluate the caveat."
title: LookupPermissionship represents whether a Lookup response was partially evaluated or not
CheckPermissionResponse.Permissionship:
type: string
enum:
- PERMISSIONSHIP_UNSPECIFIED
- PERMISSIONSHIP_NO_PERMISSION
- PERMISSIONSHIP_HAS_PERMISSION
- PERMISSIONSHIP_CONDITIONAL_PERMISSION
default: PERMISSIONSHIP_UNSPECIFIED
description: " - PERMISSIONSHIP_UNSPECIFIED: PERMISSIONSHIP_UNSPECIFIED is the default value and should not be used or\nrelied upon. Servers should not return this value.\n - PERMISSIONSHIP_NO_PERMISSION: PERMISSIONSHIP_NO_PERMISSION indicates that the subject does not have the\nrequested permission on the resource.\n - PERMISSIONSHIP_HAS_PERMISSION: PERMISSIONSHIP_HAS_PERMISSION indicates that the subject has the requested\npermission on the resource.\n - PERMISSIONSHIP_CONDITIONAL_PERMISSION: PERMISSIONSHIP_CONDITIONAL_PERMISSION indicates that the subject has the\nrequested permission on the resource, but only if a caveat condition is met.\nThe `partial_caveat_info` field in the response should contain the missing\ncontext fields that must be provided to fully evaluate the caveat."
PartialCaveatInfo:
type: object
properties:
missingRequiredContext:
type: array
items:
type: string
title: 'missing_required_context is a list of one or more fields that were missing and prevented caveats
from being fully evaluated'
title: 'PartialCaveatInfo carries information necessary for the client to take action
in the event a response contains a partially evaluated caveat'
SubjectReference:
type: object
properties:
object:
$ref: '#/components/schemas/ObjectReference'
optionalRelation:
type: string
title: 'SubjectReference is used for referring to the subject portion of a
Relationship. The relation component is optional and is used for defining a
sub-relation on the subject, e.g. group:123#members'
CheckPermissionRequest:
type: object
properties:
consistency:
$ref: '#/components/schemas/Consistency'
resource:
$ref: '#/components/schemas/ObjectReference'
description: resource is the resource on which to check the permission or relation.
permission:
type: string
description: 'permission is the name of the permission (or relation) on which to execute
the check.'
subject:
$ref: '#/components/schemas/SubjectReference'
description: subject is the subject that will be checked for the permission or relation.
context:
type: object
title: context consists of named values that are injected into the caveat evaluation context
withTracing:
type: boolean
description: 'with_tracing, if true, indicates that the response should include a debug trace.
This can be useful for debugging and performance analysis, but adds a small amount
of compute overhead to the request.'
description: 'CheckPermissionRequest issues a check on whether a subject has a permission
or is a member of a relation, on a specific resource.'
CheckDebugTrace.Permissionship:
type: string
enum:
- PERMISSIONSHIP_UNSPECIFIED
- PERMISSIONSHIP_NO_PERMISSION
- PERMISSIONSHIP_HAS_PERMISSION
- PERMISSIONSHIP_CONDITIONAL_PERMISSION
default: PERMISSIONSHIP_UNSPECIFIED
LookupResourcesRequest:
type: object
properties:
consistency:
$ref: '#/components/schemas/Consistency'
resourceObjectType:
type: string
description: 'resource_object_type is the type of resource object for which the IDs will
be returned.'
permission:
type: string
description: 'permission is the name of the permission or relation for which the subject
must Check.'
subject:
$ref: '#/components/schemas/SubjectReference'
description: subject is the subject with access to the resources.
context:
type: object
title: context consists of named values that are injected into the caveat evaluation context
optionalLimit:
type: integer
format: int64
description: 'optional_limit, if non-zero, specifies the limit on the number of resources to return
before the stream is closed on the server side. By default, the stream will continue
resolving resources until exhausted or the stream is closed due to the client or a
network issue.'
optionalCursor:
$ref: '#/components/schemas/v1.Cursor'
description: 'optional_cursor, if specified, indicates the cursor after which results should resume being returned.
The cursor can be found on the LookupResourcesResponse object.'
withDebug:
type: boolean
description: 'with_debug, if true, indicates that the response should return debug information
if present and available. For now, ONLY enables debugging of maximum recursion depth
errors, with additional context being returned in error details, but this may be
extended in the future.'
description: 'LookupResourcesRequest performs a lookup of all resources of a particular
kind on which the subject has the specified permission or the relation in
which the subject exists, streaming back the IDs of those resources.'
CheckBulkPermissionsResponseItem:
type: object
properties:
permissionship:
$ref: '#/components/schemas/CheckPermissionResponse.Permissionship'
partialCaveatInfo:
$ref: '#/components/schemas/PartialCaveatInfo'
debugTrace:
$ref: '#/components/sche
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/authzed/refs/heads/main/openapi/authzed-permissions-api-openapi.yml