> ## Documentation Index
> Fetch the complete documentation index at: https://help.reevo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Remove a custom-object-relationship edge



## OpenAPI

````yaml /api-reference/api/v2/public/openapi.json delete /{custom_object_api_name}/{record_id}/relationship/{api_name}/{target_id}
openapi: 3.1.0
info:
  title: Reevo Public API v2
  description: >-
    Public-facing Reevo API v2. This specification is generated from the public
    API v2 FastAPI router only; internal `/api/v2/*` product routes are
    intentionally excluded.
  version: v2
servers:
  - url: https://api.reevo.ai/api/v2/public
    description: Production
security: []
paths:
  /{custom_object_api_name}/{record_id}/relationship/{api_name}/{target_id}:
    delete:
      tags:
        - custom_object
      summary: Remove a custom-object-relationship edge
      operationId: >-
        delete_relationship_edge_for_custom_object_cus_obj___object_api_name_suffix___record_id__relationship__api_name___target_id__delete
      parameters:
        - name: custom_object_api_name
          in: path
          required: true
          schema:
            type: string
            title: Object Api Name Suffix
            example: cus_obj__pet_crud_ab12cd
          description: >-
            Full custom-object api_name, including the `cus_obj__` prefix (e.g.
            `cus_obj__pet_crud_ab12cd`). Discover available custom objects via
            `GET /_organization_schema_summary`.
        - name: record_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Record Id
        - name: api_name
          in: path
          required: true
          schema:
            type: string
            title: Api Name
        - name: target_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Target Id
      responses:
        '204':
          description: Successful Response
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '405':
          description: Method not allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '406':
          description: Not acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '413':
          description: Payload too large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '415':
          description: Unsupported media type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '422':
          description: Unprocessable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicAPIErrorBody'
      security:
        - BearerAuth: []
        - ApiKeyAuth: []
components:
  schemas:
    PublicAPIErrorBody:
      properties:
        status_code:
          type: integer
          title: Status Code
          description: HTTP status code mirrored in the body
        error_type:
          type: string
          title: Error Type
          description: Broad error classification
        code:
          $ref: '#/components/schemas/PublicErrorCode'
          description: Specific machine-readable code
        message:
          type: string
          title: Message
          description: Human-readable summary
        details:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/RequestValidationDetail'
                - $ref: '#/components/schemas/UnknownFieldDetail'
                - $ref: '#/components/schemas/FieldRequiredMissingDetail'
                - $ref: '#/components/schemas/FieldValueInvalidDetail'
                - $ref: '#/components/schemas/FieldNotWritableDetail'
                - $ref: '#/components/schemas/FieldNotCreatableDetail'
                - $ref: '#/components/schemas/FieldNotUpdatableDetail'
                - $ref: '#/components/schemas/CannotRemoveLastPrimaryDetail'
                - $ref: '#/components/schemas/SubResourceDetail'
                - $ref: '#/components/schemas/InvalidFilterFieldDetail'
                - $ref: '#/components/schemas/InvalidFilterOperatorDetail'
                - $ref: '#/components/schemas/InvalidFilterValueDetail'
                - $ref: '#/components/schemas/FilterDepthExceededDetail'
                - $ref: '#/components/schemas/PathTooDeepDetail'
                - $ref: '#/components/schemas/SortTooManyFieldsDetail'
                - $ref: '#/components/schemas/UnsortableFieldDetail'
                - $ref: '#/components/schemas/LimitOutOfRangeDetail'
                - $ref: '#/components/schemas/InvalidCursorDetail'
                - $ref: '#/components/schemas/InvalidTargetIdentifierDetail'
                - $ref: '#/components/schemas/MatchingFieldDetail'
                - $ref: '#/components/schemas/MissingMatchKeyDetail'
                - $ref: '#/components/schemas/DescriptorReservedDetail'
                - $ref: '#/components/schemas/StageIdDetail'
                - $ref: '#/components/schemas/StageTransitionDetail'
                - $ref: '#/components/schemas/RecordNotFoundDetail'
                - $ref: '#/components/schemas/TargetRecordNotFoundDetail'
                - $ref: '#/components/schemas/UnknownRecordTypeDetail'
                - $ref: '#/components/schemas/AmbiguousMatchDetail'
                - $ref: '#/components/schemas/ConcurrentUpsertConflictDetail'
                - $ref: '#/components/schemas/ConflictDetail'
                - $ref: '#/components/schemas/WriteNotSupportedDetail'
                - $ref: '#/components/schemas/InvalidApiKeyDetail'
                - $ref: '#/components/schemas/PayloadTooLargeDetail'
                - $ref: '#/components/schemas/UnsupportedMediaTypeDetail'
                - $ref: '#/components/schemas/RateLimitDetail'
              discriminator:
                propertyName: code
                mapping:
                  ambiguous_match:
                    $ref: '#/components/schemas/AmbiguousMatchDetail'
                  cannot_remove_last_primary:
                    $ref: '#/components/schemas/CannotRemoveLastPrimaryDetail'
                  concurrent_upsert_conflict:
                    $ref: '#/components/schemas/ConcurrentUpsertConflictDetail'
                  conflict:
                    $ref: '#/components/schemas/ConflictDetail'
                  descriptor_naming_reserved:
                    $ref: '#/components/schemas/DescriptorReservedDetail'
                  field_not_creatable:
                    $ref: '#/components/schemas/FieldNotCreatableDetail'
                  field_not_updatable:
                    $ref: '#/components/schemas/FieldNotUpdatableDetail'
                  field_not_writable:
                    $ref: '#/components/schemas/FieldNotWritableDetail'
                  field_required_missing:
                    $ref: '#/components/schemas/FieldRequiredMissingDetail'
                  field_value_invalid:
                    $ref: '#/components/schemas/FieldValueInvalidDetail'
                  filter_depth_exceeded:
                    $ref: '#/components/schemas/FilterDepthExceededDetail'
                  invalid_api_key:
                    $ref: '#/components/schemas/InvalidApiKeyDetail'
                  invalid_cursor:
                    $ref: '#/components/schemas/InvalidCursorDetail'
                  invalid_filter_field:
                    $ref: '#/components/schemas/InvalidFilterFieldDetail'
                  invalid_filter_operator:
                    $ref: '#/components/schemas/InvalidFilterOperatorDetail'
                  invalid_filter_value:
                    $ref: '#/components/schemas/InvalidFilterValueDetail'
                  invalid_matching_field:
                    $ref: '#/components/schemas/MatchingFieldDetail'
                  invalid_target_identifier:
                    $ref: '#/components/schemas/InvalidTargetIdentifierDetail'
                  limit_out_of_range:
                    $ref: '#/components/schemas/LimitOutOfRangeDetail'
                  missing_match_key:
                    $ref: '#/components/schemas/MissingMatchKeyDetail'
                  path_too_deep:
                    $ref: '#/components/schemas/PathTooDeepDetail'
                  payload_too_large:
                    $ref: '#/components/schemas/PayloadTooLargeDetail'
                  rate_limit_exceeded:
                    $ref: '#/components/schemas/RateLimitDetail'
                  record_not_found:
                    $ref: '#/components/schemas/RecordNotFoundDetail'
                  request_validation_failed:
                    $ref: '#/components/schemas/RequestValidationDetail'
                  sort_too_many_fields:
                    $ref: '#/components/schemas/SortTooManyFieldsDetail'
                  stage_entrance_criteria_not_met:
                    $ref: '#/components/schemas/StageIdDetail'
                  stage_transition_not_allowed:
                    $ref: '#/components/schemas/StageTransitionDetail'
                  sub_resource_not_supported:
                    $ref: '#/components/schemas/SubResourceDetail'
                  target_record_not_found:
                    $ref: '#/components/schemas/TargetRecordNotFoundDetail'
                  unknown_field:
                    $ref: '#/components/schemas/UnknownFieldDetail'
                  unknown_record_type:
                    $ref: '#/components/schemas/UnknownRecordTypeDetail'
                  unsortable_field:
                    $ref: '#/components/schemas/UnsortableFieldDetail'
                  unsupported_media_type:
                    $ref: '#/components/schemas/UnsupportedMediaTypeDetail'
                  write_not_supported:
                    $ref: '#/components/schemas/WriteNotSupportedDetail'
            - type: 'null'
          title: Details
          description: Optional structured context (varies by code)
      type: object
      required:
        - status_code
        - error_type
        - code
        - message
      title: PublicAPIErrorBody
      description: |-
        Wire envelope for every public-API error response.

        The four scalar fields (`status_code`, `error_type`, `code`, `message`)
        are always present. `details` carries optional structured context that
        callers can branch on programmatically (e.g., the offending field name
        for an `unknown_field` error).
    PublicErrorCode:
      type: string
      enum:
        - validation_error
        - request_validation_failed
        - unknown_field
        - field_required_missing
        - field_value_invalid
        - field_not_writable
        - field_not_creatable
        - field_not_updatable
        - cannot_remove_last_primary
        - sub_resource_not_supported
        - invalid_filter_field
        - invalid_filter_operator
        - invalid_filter_value
        - filter_depth_exceeded
        - path_too_deep
        - sort_too_many_fields
        - unsortable_field
        - limit_out_of_range
        - invalid_cursor
        - filters_not_supported_on_get
        - invalid_target_identifier
        - invalid_matching_field
        - missing_match_key
        - descriptor_naming_reserved
        - unprocessable
        - record_not_writable
        - stage_entrance_criteria_not_met
        - not_found
        - record_not_found
        - target_record_not_found
        - unknown_record_type
        - unknown_relationship
        - conflict
        - ambiguous_match
        - concurrent_upsert_conflict
        - contact_account_association_required
        - method_not_allowed
        - write_not_supported
        - unauthorized
        - missing_api_key
        - invalid_api_key
        - forbidden
        - insufficient_scope
        - stage_transition_not_allowed
        - not_acceptable
        - payload_too_large
        - unsupported_media_type
        - rate_limit_exceeded
        - internal_error
      title: PublicErrorCode
    RequestValidationDetail:
      properties:
        code:
          type: string
          const: request_validation_failed
          title: Code
          default: request_validation_failed
        loc:
          items:
            $ref: '#/components/schemas/JsonValue'
          type: array
          title: Loc
        type:
          type: string
          title: Type
        all_errors:
          items:
            $ref: '#/components/schemas/JsonValue'
          type: array
          title: All Errors
      additionalProperties: false
      type: object
      required:
        - loc
        - type
        - all_errors
      title: RequestValidationDetail
    UnknownFieldDetail:
      properties:
        code:
          type: string
          const: unknown_field
          title: Code
          default: unknown_field
        field:
          anyOf:
            - type: string
            - type: 'null'
          title: Field
        fields:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Fields
        nested_object_identifier:
          anyOf:
            - type: string
            - type: 'null'
          title: Nested Object Identifier
      additionalProperties: false
      type: object
      title: UnknownFieldDetail
    FieldRequiredMissingDetail:
      properties:
        code:
          type: string
          const: field_required_missing
          title: Code
          default: field_required_missing
        field:
          type: string
          title: Field
        missing_fields:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Missing Fields
      additionalProperties: false
      type: object
      required:
        - field
      title: FieldRequiredMissingDetail
    FieldValueInvalidDetail:
      properties:
        code:
          type: string
          const: field_value_invalid
          title: Code
          default: field_value_invalid
        field:
          type: string
          title: Field
        reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Reason
        received_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Received Type
        received_value:
          anyOf:
            - type: string
            - type: 'null'
          title: Received Value
        value_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Value Type
      additionalProperties: false
      type: object
      required:
        - field
      title: FieldValueInvalidDetail
    FieldNotWritableDetail:
      properties:
        code:
          type: string
          const: field_not_writable
          title: Code
          default: field_not_writable
        field:
          type: string
          title: Field
        fields:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Fields
        operation:
          type: string
          enum:
            - create
            - update
          title: Operation
        kind:
          anyOf:
            - type: string
              enum:
                - junction
                - singleton_fk
                - custom_association
                - domain_crm_association
            - type: 'null'
          title: Kind
        reason:
          anyOf:
            - type: string
              enum:
                - edge_post_not_supported
                - no_per_edge_state
                - read_only
                - missing_descriptor
                - missing_association
            - type: 'null'
          title: Reason
      additionalProperties: false
      type: object
      required:
        - field
        - operation
      title: FieldNotWritableDetail
    FieldNotCreatableDetail:
      properties:
        code:
          type: string
          const: field_not_creatable
          title: Code
          default: field_not_creatable
        field:
          type: string
          title: Field
        fields:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Fields
      additionalProperties: false
      type: object
      required:
        - field
      title: FieldNotCreatableDetail
    FieldNotUpdatableDetail:
      properties:
        code:
          type: string
          const: field_not_updatable
          title: Code
          default: field_not_updatable
        field:
          type: string
          title: Field
        fields:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Fields
      additionalProperties: false
      type: object
      required:
        - field
      title: FieldNotUpdatableDetail
    CannotRemoveLastPrimaryDetail:
      properties:
        code:
          type: string
          const: cannot_remove_last_primary
          title: Code
          default: cannot_remove_last_primary
        field:
          type: string
          title: Field
        relationship:
          anyOf:
            - type: string
            - type: 'null'
          title: Relationship
      additionalProperties: false
      type: object
      required:
        - field
      title: CannotRemoveLastPrimaryDetail
    SubResourceDetail:
      properties:
        code:
          type: string
          const: sub_resource_not_supported
          title: Code
          default: sub_resource_not_supported
        record_type:
          type: string
          title: Record Type
        api_name:
          type: string
          title: Api Name
      additionalProperties: false
      type: object
      required:
        - record_type
        - api_name
      title: SubResourceDetail
    InvalidFilterFieldDetail:
      properties:
        code:
          type: string
          const: invalid_filter_field
          title: Code
          default: invalid_filter_field
        field:
          type: string
          title: Field
        hop:
          anyOf:
            - type: string
            - type: 'null'
          title: Hop
        parent_field:
          anyOf:
            - type: string
            - type: 'null'
          title: Parent Field
        filterable_subfields:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Filterable Subfields
      additionalProperties: false
      type: object
      required:
        - field
      title: InvalidFilterFieldDetail
    InvalidFilterOperatorDetail:
      properties:
        code:
          type: string
          const: invalid_filter_operator
          title: Code
          default: invalid_filter_operator
        field:
          type: string
          title: Field
        operator:
          type: string
          title: Operator
        allowed:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Allowed
        check:
          anyOf:
            - type: string
            - type: 'null'
          title: Check
      additionalProperties: false
      type: object
      required:
        - field
        - operator
      title: InvalidFilterOperatorDetail
    InvalidFilterValueDetail:
      properties:
        code:
          type: string
          const: invalid_filter_value
          title: Code
          default: invalid_filter_value
        field:
          anyOf:
            - type: string
            - type: 'null'
          title: Field
        expected_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Expected Type
        value_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Value Type
        operator:
          anyOf:
            - type: string
            - type: 'null'
          title: Operator
        max_elements:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Elements
        received:
          anyOf:
            - type: integer
            - type: 'null'
          title: Received
        received_element_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Received Element Type
      additionalProperties: false
      type: object
      title: InvalidFilterValueDetail
    FilterDepthExceededDetail:
      properties:
        code:
          type: string
          const: filter_depth_exceeded
          title: Code
          default: filter_depth_exceeded
        max_depth:
          type: integer
          title: Max Depth
      additionalProperties: false
      type: object
      required:
        - max_depth
      title: FilterDepthExceededDetail
    PathTooDeepDetail:
      properties:
        code:
          type: string
          const: path_too_deep
          title: Code
          default: path_too_deep
        field:
          type: string
          title: Field
        max_hops:
          type: integer
          title: Max Hops
      additionalProperties: false
      type: object
      required:
        - field
        - max_hops
      title: PathTooDeepDetail
    SortTooManyFieldsDetail:
      properties:
        code:
          type: string
          const: sort_too_many_fields
          title: Code
          default: sort_too_many_fields
        count:
          type: integer
          title: Count
        max:
          type: integer
          title: Max
      additionalProperties: false
      type: object
      required:
        - count
        - max
      title: SortTooManyFieldsDetail
    UnsortableFieldDetail:
      properties:
        code:
          type: string
          const: unsortable_field
          title: Code
          default: unsortable_field
        field:
          type: string
          title: Field
        reason:
          anyOf:
            - type: string
              enum:
                - not_sortable
                - unsupported_path
            - type: 'null'
          title: Reason
      additionalProperties: false
      type: object
      required:
        - field
      title: UnsortableFieldDetail
    LimitOutOfRangeDetail:
      properties:
        code:
          type: string
          const: limit_out_of_range
          title: Code
          default: limit_out_of_range
        limit:
          type: integer
          title: Limit
        allowed_range:
          prefixItems:
            - type: integer
            - type: integer
          type: array
          maxItems: 2
          minItems: 2
          title: Allowed Range
      additionalProperties: false
      type: object
      required:
        - limit
        - allowed_range
      title: LimitOutOfRangeDetail
    InvalidCursorDetail:
      properties:
        code:
          type: string
          const: invalid_cursor
          title: Code
          default: invalid_cursor
        reason:
          type: string
          enum:
            - malformed_payload
            - version_unsupported
            - filter_sort_changed
            - parent_api_name_changed
          title: Reason
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - reason
      title: InvalidCursorDetail
    InvalidTargetIdentifierDetail:
      properties:
        code:
          type: string
          const: invalid_target_identifier
          title: Code
          default: invalid_target_identifier
        reason:
          type: string
          enum:
            - missing
            - conflicting
          title: Reason
        related_record_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Related Record Id
      additionalProperties: false
      type: object
      required:
        - reason
      title: InvalidTargetIdentifierDetail
    MatchingFieldDetail:
      properties:
        code:
          type: string
          const: invalid_matching_field
          title: Code
          default: invalid_matching_field
        record_type:
          type: string
          title: Record Type
        field:
          type: string
          title: Field
        field_api_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Field Api Name
        match_field_api_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Match Field Api Name
        reason:
          anyOf:
            - type: string
              enum:
                - not_found
                - not_unique
                - too_deep
                - invalid
            - type: 'null'
          title: Reason
        received_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Received Type
        parent_field:
          anyOf:
            - type: string
            - type: 'null'
          title: Parent Field
        max_hops:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Hops
        allowed_match_fields:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Allowed Match Fields
      additionalProperties: false
      type: object
      required:
        - record_type
        - field
      title: MatchingFieldDetail
    MissingMatchKeyDetail:
      properties:
        code:
          type: string
          const: missing_match_key
          title: Code
          default: missing_match_key
      additionalProperties: false
      type: object
      title: MissingMatchKeyDetail
    DescriptorReservedDetail:
      properties:
        code:
          type: string
          const: descriptor_naming_reserved
          title: Code
          default: descriptor_naming_reserved
        api_name:
          type: string
          title: Api Name
        reserved_namespace:
          type: string
          title: Reserved Namespace
      additionalProperties: false
      type: object
      required:
        - api_name
        - reserved_namespace
      title: DescriptorReservedDetail
    StageIdDetail:
      properties:
        code:
          type: string
          const: stage_entrance_criteria_not_met
          title: Code
          default: stage_entrance_criteria_not_met
        stage_id:
          type: string
          title: Stage Id
      additionalProperties: false
      type: object
      required:
        - stage_id
      title: StageIdDetail
    StageTransitionDetail:
      properties:
        code:
          type: string
          const: stage_transition_not_allowed
          title: Code
          default: stage_transition_not_allowed
        from:
          type: string
          title: From
        to:
          type: string
          title: To
        reason:
          type: string
          enum:
            - approval_required
            - invalid_transition
            - missing_required_field
          title: Reason
      additionalProperties: false
      type: object
      required:
        - from
        - to
        - reason
      title: StageTransitionDetail
    RecordNotFoundDetail:
      properties:
        code:
          type: string
          const: record_not_found
          title: Code
          default: record_not_found
        record_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Record Type
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
        api_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Api Name
        domain_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Domain Name
      additionalProperties: false
      type: object
      title: RecordNotFoundDetail
    TargetRecordNotFoundDetail:
      properties:
        code:
          type: string
          const: target_record_not_found
          title: Code
          default: target_record_not_found
        record_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Record Type
        field:
          anyOf:
            - type: string
            - type: 'null'
          title: Field
        related_record_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Related Record Id
        match_field_api_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Match Field Api Name
      additionalProperties: false
      type: object
      title: TargetRecordNotFoundDetail
    UnknownRecordTypeDetail:
      properties:
        code:
          type: string
          const: unknown_record_type
          title: Code
          default: unknown_record_type
        record_type:
          type: string
          title: Record Type
        custom_record_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Custom Record Type
      additionalProperties: false
      type: object
      required:
        - record_type
      title: UnknownRecordTypeDetail
    AmbiguousMatchDetail:
      properties:
        code:
          type: string
          const: ambiguous_match
          title: Code
          default: ambiguous_match
        record_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Record Type
        match_field_api_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Match Field Api Name
        match_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Match Key
        match_value:
          anyOf:
            - type: string
            - type: 'null'
          title: Match Value
        hit_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Hit Count
        record_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Record Ids
      additionalProperties: false
      type: object
      title: AmbiguousMatchDetail
    ConcurrentUpsertConflictDetail:
      properties:
        code:
          type: string
          const: concurrent_upsert_conflict
          title: Code
          default: concurrent_upsert_conflict
        record_type:
          type: string
          title: Record Type
        match_key:
          type: string
          title: Match Key
      additionalProperties: false
      type: object
      required:
        - record_type
        - match_key
      title: ConcurrentUpsertConflictDetail
    ConflictDetail:
      properties:
        code:
          type: string
          const: conflict
          title: Code
          default: conflict
        reason:
          type: string
          title: Reason
        id:
          type: string
          title: Id
        record_type:
          type: string
          title: Record Type
        constraint_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Constraint Id
        canonical_value:
          anyOf:
            - type: string
            - type: 'null'
          title: Canonical Value
      additionalProperties: false
      type: object
      required:
        - reason
        - id
        - record_type
      title: ConflictDetail
    WriteNotSupportedDetail:
      properties:
        code:
          type: string
          const: write_not_supported
          title: Code
          default: write_not_supported
        record_type:
          type: string
          title: Record Type
        reason:
          anyOf:
            - type: string
              enum:
                - read_only_record_type
                - canonical_junction
            - type: 'null'
          title: Reason
        operation:
          anyOf:
            - type: string
              enum:
                - create
                - patch
                - archive
            - type: 'null'
          title: Operation
      additionalProperties: false
      type: object
      required:
        - record_type
      title: WriteNotSupportedDetail
    InvalidApiKeyDetail:
      properties:
        code:
          type: string
          const: invalid_api_key
          title: Code
          default: invalid_api_key
        reason:
          anyOf:
            - type: string
              enum:
                - malformed
                - unknown
                - expired
            - type: 'null'
          title: Reason
      additionalProperties: false
      type: object
      title: InvalidApiKeyDetail
    PayloadTooLargeDetail:
      properties:
        code:
          type: string
          const: payload_too_large
          title: Code
          default: payload_too_large
        max_bytes:
          type: integer
          title: Max Bytes
      additionalProperties: false
      type: object
      required:
        - max_bytes
      title: PayloadTooLargeDetail
    UnsupportedMediaTypeDetail:
      properties:
        code:
          type: string
          const: unsupported_media_type
          title: Code
          default: unsupported_media_type
        content_type:
          type: string
          title: Content Type
      additionalProperties: false
      type: object
      required:
        - content_type
      title: UnsupportedMediaTypeDetail
    RateLimitDetail:
      properties:
        code:
          type: string
          const: rate_limit_exceeded
          title: Code
          default: rate_limit_exceeded
        blocking_tier:
          type: string
          title: Blocking Tier
        retry_after_seconds:
          type: integer
          title: Retry After Seconds
      additionalProperties: false
      type: object
      required:
        - blocking_tier
        - retry_after_seconds
      title: RateLimitDetail
    JsonValue: {}
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Reevo API key passed as `Authorization: Bearer <api-key>`.'
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: Compatibility header for Reevo API keys.

````