> ## 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.

# Update a contact↔account relationship edge



## OpenAPI

````yaml /api-reference/api/v2/public/openapi.json patch /contact/{contact_id}/relationship/accounts/{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:
  /contact/{contact_id}/relationship/accounts/{target_id}:
    patch:
      tags:
        - contact
      summary: Update a contact↔account relationship edge
      operationId: >-
        patch_account_relationship_for_contact_contact__contact_id__relationship_accounts__target_id__patch
      parameters:
        - name: contact_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Contact Id
        - name: target_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Target Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchContactAccountRelationshipBody'
            examples:
              update_edge_attributes:
                summary: Update a junction edge's per-edge attributes
                description: >-
                  PATCH the per-edge attributes (`role` / `is_primary`) on a
                  junction relationship edge.
                value:
                  role: champion
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/JunctionRelationshipEdgeResponse_PublicV2ContactAccountRoleAttributes_
        '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:
    PatchContactAccountRelationshipBody:
      properties:
        role:
          anyOf:
            - type: string
            - type: 'null'
          title: Role
        is_primary:
          type: boolean
          title: Is Primary
      additionalProperties: false
      type: object
      title: UnsetTypeAware
      description: |-
        PATCH body for ``/relationship/accounts/{target_id}`` — attributes only.

        Each field distinguishes absent (``UNSET`` → untouched) from explicit
        ``null`` (clears) from a value (sets).
    JunctionRelationshipEdgeResponse_PublicV2ContactAccountRoleAttributes_:
      properties:
        parent:
          $ref: '#/components/schemas/ParentRef'
        api_name:
          type: string
          title: Api Name
        item:
          $ref: >-
            #/components/schemas/JunctionRelationshipItem_PublicV2ContactAccountRoleAttributes_
      additionalProperties: false
      type: object
      required:
        - parent
        - api_name
        - item
      title: JunctionRelationshipEdgeResponse[PublicV2ContactAccountRoleAttributes]
    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).
    ParentRef:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        record_type:
          type: string
          title: Record Type
      additionalProperties: false
      type: object
      required:
        - id
        - record_type
      title: ParentRef
      description: Reference back to the parent record on a sub-resource response.
    JunctionRelationshipItem_PublicV2ContactAccountRoleAttributes_:
      properties:
        related_record_id:
          type: string
          format: uuid
          title: Related Record Id
        related_record_type:
          type: string
          title: Related Record Type
        through:
          $ref: >-
            #/components/schemas/JunctionThrough_PublicV2ContactAccountRoleAttributes_
      additionalProperties: false
      type: object
      required:
        - related_record_id
        - related_record_type
        - through
      title: JunctionRelationshipItem[PublicV2ContactAccountRoleAttributes]
    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
    JunctionThrough_PublicV2ContactAccountRoleAttributes_:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        record_type:
          type: string
          title: Record Type
        attributes:
          $ref: '#/components/schemas/PublicV2ContactAccountRoleAttributes'
      additionalProperties: false
      type: object
      required:
        - id
        - record_type
        - attributes
      title: JunctionThrough[PublicV2ContactAccountRoleAttributes]
    JsonValue: {}
    PublicV2ContactAccountRoleAttributes:
      properties:
        role:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: 'null'
        is_primary:
          $ref: '#/components/schemas/BooleanValue'
      additionalProperties: false
      type: object
      required:
        - role
        - is_primary
      title: PublicV2ContactAccountRoleAttributes
      description: Per-edge attributes of the contact-account junction.
    StringValue:
      properties:
        value_type:
          type: string
          const: string
          title: Value Type
          default: string
        value:
          type: string
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: StringValue
    BooleanValue:
      properties:
        value_type:
          type: string
          const: boolean
          title: Value Type
          default: boolean
        value:
          type: boolean
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: BooleanValue
  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.

````