Ory relationship API
The relationship API from Ory — 4 operation(s) for relationship.
The relationship API from Ory — 4 operation(s) for relationship.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/ory-relationship-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
email: hi@ory.sh
description: 'Documentation for all of Ory Hydra''s APIs.
'
license:
name: Apache 2.0
title: Ory Hydra Relationship API
version: '1.0'
servers:
- url: https://{project-slug}.projects.oryapis.com
description: Ory Network project (Kratos, Hydra, Keto, Courier)
variables:
project-slug:
default: your-project-slug
description: The slug of your Ory Network project.
- url: https://api.console.ory.sh
description: Ory Network Console API (control plane)
tags:
- name: relationship
paths:
/admin/relation-tuples:
delete:
description: Use this endpoint to delete relationships
operationId: deleteRelationships
parameters:
- description: Namespace of the Relationship
in: query
name: namespace
schema:
type: string
- description: Object of the Relationship
in: query
name: object
schema:
type: string
- description: Relation of the Relationship
in: query
name: relation
schema:
type: string
- description: SubjectID of the Relationship
in: query
name: subject_id
schema:
type: string
- description: Namespace of the Subject Set
in: query
name: subject_set.namespace
schema:
type: string
- description: Object of the Subject Set
in: query
name: subject_set.object
schema:
type: string
- description: Relation of the Subject Set
in: query
name: subject_set.relation
schema:
type: string
responses:
'204':
$ref: '#/components/responses/emptyResponse'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
default:
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
summary: Delete Relationships
tags:
- relationship
x-ory-ratelimit-bucket: keto-admin-low
patch:
description: Use this endpoint to patch one or more relationships.
operationId: patchRelationships
requestBody:
content:
application/json:
schema:
items:
$ref: '#/components/schemas/relationshipPatch'
type: array
x-originalParamName: Body
responses:
'204':
$ref: '#/components/responses/emptyResponse'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
default:
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
summary: Patch Multiple Relationships
tags:
- relationship
x-ory-ratelimit-bucket: keto-admin-low
put:
description: Use this endpoint to create a relationship.
operationId: createRelationship
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/createRelationshipBody'
x-originalParamName: Body
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/relationship'
description: relationship
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
default:
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
summary: Create a Relationship
tags:
- relationship
x-ory-ratelimit-bucket: keto-admin-low
/namespaces:
get:
description: Get all namespaces
operationId: listRelationshipNamespaces
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/relationshipNamespaces'
description: relationshipNamespaces
default:
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
summary: Query namespaces
tags:
- relationship
x-ory-ratelimit-bucket: keto-admin-low
/opl/syntax/check:
post:
description: The OPL file is expected in the body of the request.
operationId: checkOplSyntax
requestBody:
content:
text/plain:
schema:
$ref: '#/components/schemas/checkOplSyntaxBody'
x-originalParamName: Body
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/checkOplSyntaxResult'
description: checkOplSyntaxResult
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
default:
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
summary: Check the syntax of an OPL file
tags:
- relationship
x-ory-ratelimit-bucket: keto-admin-medium
/relation-tuples:
get:
description: Get all relationships that match the query. Only the namespace field is required.
operationId: getRelationships
parameters:
- description: 'Items per Page
This is the number of items per page to return.
For details on pagination please head over to the [pagination documentation](https://www.ory.com/docs/ecosystem/api-design#pagination).'
in: query
name: page_size
schema:
default: 250
format: int64
maximum: 1000
minimum: 1
type: integer
- description: 'Next Page Token
The next page token.
For details on pagination please head over to the [pagination documentation](https://www.ory.com/docs/ecosystem/api-design#pagination).'
in: query
name: page_token
schema:
type: string
- description: Namespace of the Relationship
in: query
name: namespace
schema:
type: string
- description: Object of the Relationship
in: query
name: object
schema:
type: string
- description: Relation of the Relationship
in: query
name: relation
schema:
type: string
- description: SubjectID of the Relationship
in: query
name: subject_id
schema:
type: string
- description: Namespace of the Subject Set
in: query
name: subject_set.namespace
schema:
type: string
- description: Object of the Subject Set
in: query
name: subject_set.object
schema:
type: string
- description: Relation of the Subject Set
in: query
name: subject_set.relation
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/relationships'
description: relationships
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
default:
content:
application/json:
schema:
$ref: '#/components/schemas/errorGeneric'
description: errorGeneric
summary: Query relationships
tags:
- relationship
x-ory-ratelimit-bucket: keto-admin-medium
components:
schemas:
relationship:
description: Relationship
properties:
namespace:
description: Namespace of the Relation Tuple
type: string
object:
description: Object of the Relation Tuple
type: string
relation:
description: Relation of the Relation Tuple
type: string
subject_id:
description: 'SubjectID of the Relation Tuple
Either SubjectSet or SubjectID can be provided.'
type: string
subject_set:
$ref: '#/components/schemas/subjectSet'
required:
- namespace
- object
- relation
type: object
checkOplSyntaxResult:
properties:
errors:
description: The list of syntax errors
items:
$ref: '#/components/schemas/ParseError'
type: array
title: CheckOPLSyntaxResponse represents the response for an OPL syntax check request.
type: object
relationshipNamespaces:
description: Relationship Namespace List
properties:
namespaces:
items:
$ref: '#/components/schemas/namespace'
type: array
type: object
namespace:
properties:
name:
description: Name of the namespace.
type: string
type: object
relationshipPatch:
description: Payload for patching a relationship
properties:
action:
enum:
- insert
- delete
type: string
x-go-enum-desc: 'insert ActionInsert
delete ActionDelete'
relation_tuple:
$ref: '#/components/schemas/relationship'
type: object
checkOplSyntaxBody:
description: Ory Permission Language Document
type: string
relationships:
description: Paginated Relationship List
properties:
next_page_token:
description: 'The opaque token to provide in a subsequent request
to get the next page. It is the empty string iff this is
the last page.'
type: string
relation_tuples:
items:
$ref: '#/components/schemas/relationship'
type: array
type: object
errorGeneric:
description: The standard Ory JSON API error format.
properties:
error:
$ref: '#/components/schemas/genericError'
required:
- error
title: JSON API Error Response
type: object
createRelationshipBody:
description: Create Relationship Request Body
properties:
namespace:
description: Namespace to query
type: string
object:
description: Object to query
type: string
relation:
description: Relation to query
type: string
subject_id:
description: 'SubjectID to query
Either SubjectSet or SubjectID can be provided.'
type: string
subject_set:
$ref: '#/components/schemas/subjectSet'
type: object
subjectSet:
properties:
namespace:
description: Namespace of the Subject Set
type: string
object:
description: Object of the Subject Set
type: string
relation:
description: Relation of the Subject Set
type: string
required:
- namespace
- object
- relation
type: object
SourcePosition:
properties:
Line:
format: int64
type: integer
column:
format: int64
type: integer
type: object
genericError:
properties:
code:
description: The status code
example: 404
format: int64
type: integer
debug:
description: 'Debug information
This field is often not exposed to protect against leaking
sensitive information.'
example: SQL field "foo" is not a bool.
type: string
details:
additionalProperties: {}
description: Further error details
type: object
id:
description: 'The error ID
Useful when trying to identify various errors in application logic.'
type: string
message:
description: 'Error message
The error''s message.'
example: The resource could not be found
type: string
reason:
description: A human-readable reason for the error
example: User with ID 1234 does not exist.
type: string
request:
description: 'The request ID
The request ID is often exposed internally in order to trace
errors across service architectures. This is often a UUID.'
example: d7ef54b1-ec15-46e6-bccb-524b82c035e6
type: string
status:
description: The status description
example: Not Found
type: string
required:
- message
type: object
ParseError:
properties:
end:
$ref: '#/components/schemas/SourcePosition'
message:
type: string
start:
$ref: '#/components/schemas/SourcePosition'
type: object
responses:
emptyResponse:
description: Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is typically 204.
securitySchemes:
basic:
scheme: basic
type: http
bearer:
scheme: bearer
type: http
oauth2:
flows:
authorizationCode:
authorizationUrl: https://hydra.demo.ory.sh/oauth2/auth
scopes:
offline: A scope required when requesting refresh tokens (alias for `offline_access`)
offline_access: A scope required when requesting refresh tokens
openid: Request an OpenID Connect ID Token
tokenUrl: https://hydra.demo.ory.sh/oauth2/token
type: oauth2
x-forwarded-proto: string
x-request-id: string