Skip to content

List the relationships defined within a module.

GET
/v1/metadata/{moduleKey}/relationships
curl --request GET \
--url https://example.com/v1/metadata/example/relationships \
--header 'Authorization: Bearer <token>'
moduleKey
required
string

Module key.

Media typeapplication/json
Array<object>

A relationship within a module, as returned by the relationships list endpoint.

object
description

Optional description.

string | null
fromObject
required

Qualified name of the source object.

string
label
required

Human-readable label.

string
objectKey

The objectKey of the junction table synthesized by this relationship, if any (Junction/PolymorphicJunction strategies only).

string | null
relationshipKey
required

Relationship identifier within the module.

string
strategy
required

Resolved storage strategy ("enum", "lookup", "junction", etc.).

string
toTarget
required

Serialized target: object name, comma-separated list, or "values:...".

string
Examplegenerated
[
{
"description": "example",
"fromObject": "example",
"label": "example",
"objectKey": "example",
"relationshipKey": "example",
"strategy": "example",
"toTarget": "example"
}
]

Structured error envelope (SPEC-DATA-0006): {"errors": [{"domain", "scope", "target", "code", "message"}, ...]}. domain (added #950 D9) names the subsystem that produced the entry (data, metadata, apply, git, auth, iam, hfx, or api for a transport-level failure with no domain error behind it) and is always present.

Media typeapplication/json

The top-level response body. Wraps a non-empty list of [ErrorEntry].

object
errors
required

The error entries making up the envelope. Always non-empty.

Array<object>

One entry in the error envelope.

Carries a [Domain] naming the subsystem that produced it, an anchoring [ErrorScope], an optional target that disambiguates within the scope, a stable SCREAMING_SNAKE_CASE code, and a human-readable English message. See SPEC-DATA-0006 for the full envelope contract.

object
code
required

Machine-readable, stable, SCREAMING_SNAKE_CASE identifier.

string
domain
required

Which subsystem produced this entry. Always serialized.

One of:

data::error::DataError – record CRUD, validation, queries.

string
Allowed value: data
location
Any of:

HFX source location for an HFX_PARSE entry.

Emitted as the extra location field on the entry JSON when present. The line/column are 1-based. The frame is the offending source line extracted verbatim from the input.

object
column
required

1-based column within the line, measured in UTF-16 code units of the prefix so browser-side editors can consume it directly.

integer format: uint32
frame

The offending source line text, when available.

string | null
line
required

1-based line number within the source text.

integer format: uint32
message
required

Server-authored English message. Not part of the API contract; may change across releases without notice.

string
rule

The key of the validation rule that failed, when the code is RULE_FAILED. None for all other codes. Skipped during serialization when absent so it does not appear on unrelated entries (same pattern as location).

string | null
scope
required

Anchoring category. Drives client-side rendering.

One of:

Attached to a specific request field. target is the field key.

string
Allowed value: field
target

Field key for field scope, record id for record scope, null otherwise. Always serialized, even when null.

string | null
Example
{
"errors": [
{
"domain": "data",
"scope": "field"
}
]
}