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

# Create a contact



## OpenAPI

````yaml /api-reference/api/v2/public/openapi.json post /contact
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:
    post:
      tags:
        - contact
      summary: Create a contact
      operationId: create_contact_contact_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactCreateRequest'
            examples:
              minimal:
                summary: Minimal create body (Form 1 -- raw values)
                description: >-
                  A small create body. `stage` is required on create; its values
                  are workspace-specific (a stage api_name or display name --
                  discover via `GET /_schema/contact`). A workspace may
                  configure additional required create fields (see each
                  attribute's `is_required_on_create`).
                value:
                  attributes:
                    first_name: Sarah
                    last_name: Chen
                    primary_email: sarah.chen@acme.com
                    stage: <contact-stage-display-name>
              with_optional_attributes:
                summary: Create with optional attributes
                description: >-
                  Create a contact with extra optional attributes (e.g.
                  `title`). The body carries `attributes` only -- there is no
                  inline `relationships` block. Associate the contact with an
                  account, opportunity, etc. via the relationship endpoints
                  AFTER create (linking a contact to an opportunity requires the
                  contact already be on that opportunity's account, else `409
                  contact_account_association_required`).
                value:
                  attributes:
                    first_name: Sarah
                    last_name: Chen
                    primary_email: sarah.chen@acme.com
                    title: VP of Engineering
                    stage: <contact-stage-display-name>
              enveloped_form:
                summary: Form 2 -- enveloped values (self-describing)
                description: >-
                  Same logical create as `minimal`, but every attribute is
                  wrapped in `{value_type, value}` -- the round-trip shape
                  emitted by reads. `stage` is a `select` value referencing a
                  workspace stage by api_name. Useful for SDK codegen + AI
                  agents.
                value:
                  attributes:
                    first_name:
                      value_type: string
                      value: Sarah
                    last_name:
                      value_type: string
                      value: Chen
                    primary_email:
                      value_type: email
                      value: sarah.chen@acme.com
                    stage:
                      value_type: select
                      value:
                        api_name: <contact-stage-api-name>
              stage_with_select_list_id:
                summary: Create with a list-scoped stage (select_list_id)
                description: >-
                  When the same stage/option name exists in more than one select
                  list -- most commonly an opportunity stage shared across
                  pipelines -- pin the intended list with `select_list_id` on
                  the option reference. It is optional; send it only to
                  disambiguate. Discover list ids and option api_names via `GET
                  /_schema/contact`.
                value:
                  attributes:
                    first_name: Sarah
                    last_name: Chen
                    primary_email: sarah.chen@acme.com
                    stage:
                      value_type: select
                      value:
                        select_list_id: <contact-stage-select-list-uuid>
                        api_name: <contact-stage-api-name>
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactSingleResponse'
        '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:
    ContactCreateRequest:
      properties:
        attributes:
          $ref: '#/components/schemas/ContactCreateRequestAttributes'
      additionalProperties: false
      type: object
      required:
        - attributes
      title: ContactCreateRequest
    ContactSingleResponse:
      properties:
        data:
          $ref: '#/components/schemas/ContactObjectRecord'
      additionalProperties: false
      type: object
      required:
        - data
      title: ContactSingleResponse
      description: |-
        Wrapper around a single ``ContactResponseRecord`` — GET / POST / PATCH.

        The record-write surface carries no ``relationships`` body, so there is
        no inline-relationship partial-failure meta on create / patch; the wire
        response is ``{"data": {...}}``.
    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).
    ContactCreateRequestAttributes:
      properties:
        first_name:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: First Name
        last_name:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: Last Name
        middle_name:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: Middle Name
        title:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: Title
        department:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: Department
        stage:
          anyOf:
            - $ref: '#/components/schemas/SelectValueWrite'
            - type: string
          title: Stage
        primary_email:
          anyOf:
            - $ref: '#/components/schemas/EmailValue'
            - type: string
            - type: 'null'
          title: Primary Email
        primary_phone_number:
          anyOf:
            - $ref: '#/components/schemas/PhoneNumberValue'
            - type: string
            - type: 'null'
          title: Primary Phone Number
        address:
          anyOf:
            - $ref: '#/components/schemas/AddressValue'
            - type: 'null'
        contact_emails:
          anyOf:
            - items:
                $ref: '#/components/schemas/ContactEmailWrite'
              type: array
            - type: 'null'
          title: Contact Emails
        contact_phone_numbers:
          anyOf:
            - items:
                $ref: '#/components/schemas/ContactPhoneNumberWrite'
              type: array
            - type: 'null'
          title: Contact Phone Numbers
        linkedin_url:
          anyOf:
            - $ref: '#/components/schemas/UrlValue'
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: Linkedin Url
        zoominfo_url:
          anyOf:
            - $ref: '#/components/schemas/UrlValue'
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: Zoominfo Url
        x_url:
          anyOf:
            - $ref: '#/components/schemas/UrlValue'
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: X Url
        facebook_url:
          anyOf:
            - $ref: '#/components/schemas/UrlValue'
            - $ref: '#/components/schemas/StringValue'
            - type: string
            - type: 'null'
          title: Facebook Url
        owner_user_id:
          anyOf:
            - $ref: '#/components/schemas/RecordReferenceWrite'
            - type: 'null'
        participant_user_id_list:
          anyOf:
            - items:
                $ref: '#/components/schemas/RecordReferenceWrite'
              type: array
            - type: 'null'
          title: Participant User Id List
      additionalProperties:
        $ref: '#/components/schemas/CustomFieldAttributeRequestValue'
      type: object
      required:
        - stage
      title: ContactCreateRequestAttributes
      description: Create standard-field surface.
    ContactObjectRecord:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        record_type:
          type: string
          const: contact
          title: Record Type
          default: contact
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Updated At
        attributes:
          $ref: '#/components/schemas/ContactObjectAttributes'
      additionalProperties: false
      type: object
      required:
        - id
        - created_at
        - updated_at
        - attributes
      title: ContactObjectRecord
    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
    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
    SelectValueWrite:
      properties:
        value_type:
          type: string
          const: select
          title: Value Type
          default: select
        value:
          $ref: '#/components/schemas/SelectOptionRef'
      additionalProperties: false
      type: object
      required:
        - value
      title: SelectValueWrite
    EmailValue:
      properties:
        value_type:
          type: string
          const: email
          title: Value Type
          default: email
        value:
          type: string
          format: email
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: EmailValue
    PhoneNumberValue:
      properties:
        value_type:
          type: string
          const: phone_number
          title: Value Type
          default: phone_number
        value:
          type: string
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: PhoneNumberValue
    AddressValue:
      properties:
        value_type:
          type: string
          const: address
          title: Value Type
          default: address
        value:
          $ref: '#/components/schemas/AddressRead'
      additionalProperties: false
      type: object
      required:
        - value
      title: AddressValue
    ContactEmailWrite:
      properties:
        email:
          type: string
          format: email
          title: Email
        is_primary:
          type: boolean
          title: Is Primary
        labels:
          items:
            $ref: '#/components/schemas/PublicChannelLabel'
          type: array
          title: Labels
      additionalProperties: false
      type: object
      required:
        - email
        - is_primary
      title: ContactEmailWrite
      description: Write payload for the `contact_email` value type.
    ContactPhoneNumberWrite:
      properties:
        phone_number:
          type: string
          title: Phone Number
        is_primary:
          type: boolean
          title: Is Primary
          default: false
        labels:
          items:
            $ref: '#/components/schemas/PublicChannelLabel'
          type: array
          title: Labels
      additionalProperties: false
      type: object
      required:
        - phone_number
      title: ContactPhoneNumberWrite
      description: Write payload for the `contact_phone_number` value type.
    UrlValue:
      properties:
        value_type:
          type: string
          const: url
          title: Value Type
          default: url
        value:
          type: string
          title: Value
          description: |2-

                    Represents a URL with an optional http / https scheme
                    and required registered domain.

                    Examples:
                    - "example.com"
                    - "https://example.com"
                    
      additionalProperties: false
      type: object
      required:
        - value
      title: UrlValue
    RecordReferenceWrite:
      anyOf:
        - $ref: '#/components/schemas/RecordReferenceValue'
        - type: string
          format: uuid
        - $ref: '#/components/schemas/RecordMatch'
    CustomFieldAttributeRequestValue:
      anyOf:
        - $ref: '#/components/schemas/CommonValueWriteEnvelope'
        - $ref: '#/components/schemas/CommonValueWriteEnvelopeList'
        - $ref: '#/components/schemas/ApiRequestJsonValue'
    ContactObjectAttributes:
      properties:
        id:
          $ref: '#/components/schemas/UuidValue'
        organization_id:
          $ref: '#/components/schemas/UuidValue'
        created_at:
          $ref: '#/components/schemas/TimestampValue'
        updated_at:
          $ref: '#/components/schemas/TimestampValue'
        display_name:
          $ref: '#/components/schemas/StringValue'
        first_name:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: 'null'
        last_name:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: 'null'
        middle_name:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: 'null'
        title:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: 'null'
        department:
          anyOf:
            - $ref: '#/components/schemas/StringValue'
            - type: 'null'
        stage:
          $ref: '#/components/schemas/ContactStageValue'
        primary_email:
          anyOf:
            - $ref: '#/components/schemas/EmailValue'
            - type: 'null'
        primary_phone_number:
          anyOf:
            - $ref: '#/components/schemas/PhoneNumberValue'
            - type: 'null'
        sms_consent:
          anyOf:
            - $ref: '#/components/schemas/BooleanValue'
            - type: 'null'
        address:
          anyOf:
            - $ref: '#/components/schemas/AddressValue'
            - type: 'null'
        contact_emails:
          anyOf:
            - items:
                $ref: '#/components/schemas/ContactEmailValue'
              type: array
            - type: 'null'
          title: Contact Emails
        contact_phone_numbers:
          anyOf:
            - items:
                $ref: '#/components/schemas/ContactPhoneNumberValue'
              type: array
            - type: 'null'
          title: Contact Phone Numbers
        linkedin_url:
          anyOf:
            - $ref: '#/components/schemas/UrlValue'
            - type: 'null'
        zoominfo_url:
          anyOf:
            - $ref: '#/components/schemas/UrlValue'
            - type: 'null'
        x_url:
          anyOf:
            - $ref: '#/components/schemas/UrlValue'
            - type: 'null'
        facebook_url:
          anyOf:
            - $ref: '#/components/schemas/UrlValue'
            - type: 'null'
        owner_user_id:
          anyOf:
            - $ref: '#/components/schemas/RecordReferenceValue'
            - type: 'null'
        owner_team_id:
          anyOf:
            - $ref: '#/components/schemas/RecordReferenceValue'
            - type: 'null'
        created_by_user_id:
          $ref: '#/components/schemas/RecordReferenceValue'
        updated_by_user_id:
          anyOf:
            - $ref: '#/components/schemas/RecordReferenceValue'
            - type: 'null'
        archived_by_user_id:
          anyOf:
            - $ref: '#/components/schemas/RecordReferenceValue'
            - type: 'null'
        created_source_form_submission_details:
          anyOf:
            - $ref: '#/components/schemas/CreatedSourceFormSubmissionDetailsValue'
            - type: 'null'
        last_activity_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_voice_call:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_meeting:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_global_thread:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_engaged_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_outreached_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_inbound_meeting_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_inbound_voice_call_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_inbound_global_thread_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_outbound_meeting_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_outbound_voice_call_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        last_outbound_global_thread_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
        participant_user_id_list:
          items:
            $ref: '#/components/schemas/RecordReferenceValue'
          type: array
          title: Participant User Id List
        archived_at:
          anyOf:
            - $ref: '#/components/schemas/TimestampValue'
            - type: 'null'
      additionalProperties:
        anyOf:
          - $ref: '#/components/schemas/CommonValueEnvelope'
          - $ref: '#/components/schemas/CommonValueEnvelopeList'
          - type: 'null'
      type: object
      required:
        - id
        - organization_id
        - created_at
        - updated_at
        - display_name
        - stage
        - created_by_user_id
        - participant_user_id_list
      title: ContactObjectAttributes
    JsonValue: {}
    SelectOptionRef:
      anyOf:
        - $ref: '#/components/schemas/SelectOptionById'
        - $ref: '#/components/schemas/SelectOptionByApiName'
        - $ref: '#/components/schemas/SelectOptionByDisplayName'
    AddressRead:
      properties:
        street_one:
          anyOf:
            - type: string
            - type: 'null'
          title: Street One
        street_two:
          anyOf:
            - type: string
            - type: 'null'
          title: Street Two
        city:
          anyOf:
            - type: string
            - type: 'null'
          title: City
        state:
          anyOf:
            - type: string
            - type: 'null'
          title: State
        country:
          anyOf:
            - type: string
            - type: 'null'
          title: Country
        zip_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Zip Code
      additionalProperties: false
      type: object
      title: AddressRead
      description: Read payload for the `address` value type.
    PublicChannelLabel:
      type: string
      enum:
        - PERSONAL
        - WORK
        - MOBILE
      title: PublicChannelLabel
      description: >-
        Public wire counterpart of the internal ``ContactChannelLabel``.


        Members mirror ``ContactChannelLabel`` 1:1 (same value set). A unit test

        (``test_contact_public_adapter.py``) asserts the two member-value sets
        stay

        identical so divergence fails CI. Typing the request/response ``labels``

        fields as this enum lets Pydantic reject unknown labels at the boundary

        instead of the adapter raising on an invalid string.
    RecordReferenceValue:
      properties:
        value_type:
          type: string
          const: record_reference
          title: Value Type
          default: record_reference
        value:
          $ref: '#/components/schemas/RecordReferenceRead'
      additionalProperties: false
      type: object
      required:
        - value
      title: RecordReferenceValue
    RecordMatch:
      properties:
        field:
          type: string
          title: Field
        value:
          anyOf:
            - type: string
              format: uuid
            - type: string
          title: Value
      additionalProperties: false
      type: object
      required:
        - field
        - value
      title: RecordMatch
      description: Match envelope where ``attribute`` is a dot-notation public schema path.
    CommonValueWriteEnvelope:
      oneOf:
        - $ref: '#/components/schemas/StringValue'
        - $ref: '#/components/schemas/LongTextValue'
        - $ref: '#/components/schemas/RichTextValue'
        - $ref: '#/components/schemas/NumberValue-Input'
        - $ref: '#/components/schemas/PercentValue-Input'
        - $ref: '#/components/schemas/CurrencyValue-Input'
        - $ref: '#/components/schemas/BooleanValue'
        - $ref: '#/components/schemas/TimestampValue'
        - $ref: '#/components/schemas/DateValue'
        - $ref: '#/components/schemas/TimeValue'
        - $ref: '#/components/schemas/EmailValue'
        - $ref: '#/components/schemas/PhoneNumberValue'
        - $ref: '#/components/schemas/UrlValue'
        - $ref: '#/components/schemas/UuidValue'
        - $ref: '#/components/schemas/EnumValue'
        - $ref: '#/components/schemas/SelectValueWrite'
        - $ref: '#/components/schemas/RecordReferenceValue'
        - $ref: '#/components/schemas/AddressValue'
      discriminator:
        propertyName: value_type
        mapping:
          address:
            $ref: '#/components/schemas/AddressValue'
          boolean:
            $ref: '#/components/schemas/BooleanValue'
          currency:
            $ref: '#/components/schemas/CurrencyValue-Input'
          date:
            $ref: '#/components/schemas/DateValue'
          email:
            $ref: '#/components/schemas/EmailValue'
          enum:
            $ref: '#/components/schemas/EnumValue'
          long_text:
            $ref: '#/components/schemas/LongTextValue'
          number:
            $ref: '#/components/schemas/NumberValue-Input'
          percent:
            $ref: '#/components/schemas/PercentValue-Input'
          phone_number:
            $ref: '#/components/schemas/PhoneNumberValue'
          record_reference:
            $ref: '#/components/schemas/RecordReferenceValue'
          rich_text:
            $ref: '#/components/schemas/RichTextValue'
          select:
            $ref: '#/components/schemas/SelectValueWrite'
          string:
            $ref: '#/components/schemas/StringValue'
          time:
            $ref: '#/components/schemas/TimeValue'
          timestamp:
            $ref: '#/components/schemas/TimestampValue'
          url:
            $ref: '#/components/schemas/UrlValue'
          uuid:
            $ref: '#/components/schemas/UuidValue'
    CommonValueWriteEnvelopeList:
      anyOf:
        - items:
            $ref: '#/components/schemas/StringValue'
          type: array
        - items:
            $ref: '#/components/schemas/LongTextValue'
          type: array
        - items:
            $ref: '#/components/schemas/RichTextValue'
          type: array
        - items:
            $ref: '#/components/schemas/NumberValue-Input'
          type: array
        - items:
            $ref: '#/components/schemas/PercentValue-Input'
          type: array
        - items:
            $ref: '#/components/schemas/CurrencyValue-Input'
          type: array
        - items:
            $ref: '#/components/schemas/BooleanValue'
          type: array
        - items:
            $ref: '#/components/schemas/TimestampValue'
          type: array
        - items:
            $ref: '#/components/schemas/DateValue'
          type: array
        - items:
            $ref: '#/components/schemas/TimeValue'
          type: array
        - items:
            $ref: '#/components/schemas/EmailValue'
          type: array
        - items:
            $ref: '#/components/schemas/PhoneNumberValue'
          type: array
        - items:
            $ref: '#/components/schemas/UrlValue'
          type: array
        - items:
            $ref: '#/components/schemas/UuidValue'
          type: array
        - items:
            $ref: '#/components/schemas/EnumValue'
          type: array
        - items:
            $ref: '#/components/schemas/SelectValueWrite'
          type: array
        - items:
            $ref: '#/components/schemas/RecordReferenceValue'
          type: array
        - items:
            $ref: '#/components/schemas/AddressValue'
          type: array
    ApiRequestJsonValue:
      anyOf:
        - type: string
        - type: integer
        - type: number
        - type: boolean
        - items:
            $ref: '#/components/schemas/ApiRequestJsonValue'
          type: array
        - additionalProperties:
            $ref: '#/components/schemas/ApiRequestJsonValue'
          type: object
        - type: 'null'
    UuidValue:
      properties:
        value_type:
          type: string
          const: uuid
          title: Value Type
          default: uuid
        value:
          type: string
          format: uuid
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: UuidValue
    TimestampValue:
      properties:
        value_type:
          type: string
          const: timestamp
          title: Value Type
          default: timestamp
        value:
          type: string
          format: date-time
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: TimestampValue
    ContactStageValue:
      properties:
        value_type:
          type: string
          const: contact_stage
          title: Value Type
          default: contact_stage
        value:
          $ref: '#/components/schemas/ContactStageRead'
      additionalProperties: false
      type: object
      required:
        - value
      title: ContactStageValue
    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
    ContactEmailValue:
      properties:
        value_type:
          type: string
          const: contact_email
          title: Value Type
          default: contact_email
        value:
          $ref: '#/components/schemas/ContactEmailRead'
      additionalProperties: false
      type: object
      required:
        - value
      title: ContactEmailValue
    ContactPhoneNumberValue:
      properties:
        value_type:
          type: string
          const: contact_phone_number
          title: Value Type
          default: contact_phone_number
        value:
          $ref: '#/components/schemas/ContactPhoneNumberRead'
      additionalProperties: false
      type: object
      required:
        - value
      title: ContactPhoneNumberValue
    CreatedSourceFormSubmissionDetailsValue:
      properties:
        value_type:
          type: string
          const: created_source_form_submission_details
          title: Value Type
          default: created_source_form_submission_details
        value:
          $ref: '#/components/schemas/CreatedSourceFormSubmissionDetailsRead'
      additionalProperties: false
      type: object
      required:
        - value
      title: CreatedSourceFormSubmissionDetailsValue
    CommonValueEnvelope:
      oneOf:
        - $ref: '#/components/schemas/StringValue'
        - $ref: '#/components/schemas/LongTextValue'
        - $ref: '#/components/schemas/RichTextValue'
        - $ref: '#/components/schemas/NumberValue-Output'
        - $ref: '#/components/schemas/PercentValue-Output'
        - $ref: '#/components/schemas/CurrencyValue-Output'
        - $ref: '#/components/schemas/BooleanValue'
        - $ref: '#/components/schemas/TimestampValue'
        - $ref: '#/components/schemas/DateValue'
        - $ref: '#/components/schemas/TimeValue'
        - $ref: '#/components/schemas/EmailValue'
        - $ref: '#/components/schemas/PhoneNumberValue'
        - $ref: '#/components/schemas/UrlValue'
        - $ref: '#/components/schemas/UuidValue'
        - $ref: '#/components/schemas/EnumValue'
        - $ref: '#/components/schemas/SelectValue'
        - $ref: '#/components/schemas/RecordReferenceValue'
        - $ref: '#/components/schemas/AddressValue'
      discriminator:
        propertyName: value_type
        mapping:
          address:
            $ref: '#/components/schemas/AddressValue'
          boolean:
            $ref: '#/components/schemas/BooleanValue'
          currency:
            $ref: '#/components/schemas/CurrencyValue-Output'
          date:
            $ref: '#/components/schemas/DateValue'
          email:
            $ref: '#/components/schemas/EmailValue'
          enum:
            $ref: '#/components/schemas/EnumValue'
          long_text:
            $ref: '#/components/schemas/LongTextValue'
          number:
            $ref: '#/components/schemas/NumberValue-Output'
          percent:
            $ref: '#/components/schemas/PercentValue-Output'
          phone_number:
            $ref: '#/components/schemas/PhoneNumberValue'
          record_reference:
            $ref: '#/components/schemas/RecordReferenceValue'
          rich_text:
            $ref: '#/components/schemas/RichTextValue'
          select:
            $ref: '#/components/schemas/SelectValue'
          string:
            $ref: '#/components/schemas/StringValue'
          time:
            $ref: '#/components/schemas/TimeValue'
          timestamp:
            $ref: '#/components/schemas/TimestampValue'
          url:
            $ref: '#/components/schemas/UrlValue'
          uuid:
            $ref: '#/components/schemas/UuidValue'
    CommonValueEnvelopeList:
      anyOf:
        - items:
            $ref: '#/components/schemas/StringValue'
          type: array
        - items:
            $ref: '#/components/schemas/LongTextValue'
          type: array
        - items:
            $ref: '#/components/schemas/RichTextValue'
          type: array
        - items:
            $ref: '#/components/schemas/NumberValue-Output'
          type: array
        - items:
            $ref: '#/components/schemas/PercentValue-Output'
          type: array
        - items:
            $ref: '#/components/schemas/CurrencyValue-Output'
          type: array
        - items:
            $ref: '#/components/schemas/BooleanValue'
          type: array
        - items:
            $ref: '#/components/schemas/TimestampValue'
          type: array
        - items:
            $ref: '#/components/schemas/DateValue'
          type: array
        - items:
            $ref: '#/components/schemas/TimeValue'
          type: array
        - items:
            $ref: '#/components/schemas/EmailValue'
          type: array
        - items:
            $ref: '#/components/schemas/PhoneNumberValue'
          type: array
        - items:
            $ref: '#/components/schemas/UrlValue'
          type: array
        - items:
            $ref: '#/components/schemas/UuidValue'
          type: array
        - items:
            $ref: '#/components/schemas/EnumValue'
          type: array
        - items:
            $ref: '#/components/schemas/SelectValue'
          type: array
        - items:
            $ref: '#/components/schemas/RecordReferenceValue'
          type: array
        - items:
            $ref: '#/components/schemas/AddressValue'
          type: array
    SelectOptionById:
      properties:
        select_list_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Select List Id
        id:
          type: string
          format: uuid
          title: Id
      type: object
      required:
        - id
      title: SelectOptionById
    SelectOptionByApiName:
      properties:
        select_list_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Select List Id
        api_name:
          type: string
          title: Api Name
      type: object
      required:
        - api_name
      title: SelectOptionByApiName
    SelectOptionByDisplayName:
      properties:
        select_list_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Select List Id
        display_name:
          type: string
          title: Display Name
      type: object
      required:
        - display_name
      title: SelectOptionByDisplayName
    RecordReferenceRead:
      properties:
        related_record_id:
          type: string
          format: uuid
          title: Related Record Id
        related_record_type:
          type: string
          title: Related Record Type
      additionalProperties: false
      type: object
      required:
        - related_record_id
        - related_record_type
      title: RecordReferenceRead
      description: Read payload for the `record_reference` value type.
    LongTextValue:
      properties:
        value_type:
          type: string
          const: long_text
          title: Value Type
          default: long_text
        value:
          type: string
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: LongTextValue
    RichTextValue:
      properties:
        value_type:
          type: string
          const: rich_text
          title: Value Type
          default: rich_text
        value:
          type: string
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: RichTextValue
    NumberValue-Input:
      properties:
        value_type:
          type: string
          const: number
          title: Value Type
          default: number
        value:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: NumberValue
    PercentValue-Input:
      properties:
        value_type:
          type: string
          const: percent
          title: Value Type
          default: percent
        value:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: PercentValue
    CurrencyValue-Input:
      properties:
        value_type:
          type: string
          const: currency
          title: Value Type
          default: currency
        value:
          $ref: '#/components/schemas/CurrencyRead-Input'
      additionalProperties: false
      type: object
      required:
        - value
      title: CurrencyValue
    DateValue:
      properties:
        value_type:
          type: string
          const: date
          title: Value Type
          default: date
        value:
          type: string
          format: date
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: DateValue
    TimeValue:
      properties:
        value_type:
          type: string
          const: time
          title: Value Type
          default: time
        value:
          type: string
          format: time
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: TimeValue
    EnumValue:
      properties:
        value_type:
          type: string
          const: enum
          title: Value Type
          default: enum
        value:
          type: string
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: EnumValue
    ContactStageRead:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        select_list_id:
          type: string
          format: uuid
          title: Select List Id
        api_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Api Name
        display_name:
          type: string
          title: Display Name
        color:
          anyOf:
            - type: string
            - type: 'null'
          title: Color
      additionalProperties: false
      type: object
      required:
        - id
        - select_list_id
        - display_name
      title: ContactStageRead
      description: Read payload for the `contact_stage` value type.
    ContactEmailRead:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        email:
          type: string
          format: email
          title: Email
        is_primary:
          type: boolean
          title: Is Primary
        labels:
          items:
            $ref: '#/components/schemas/PublicChannelLabel'
          type: array
          title: Labels
      additionalProperties: false
      type: object
      required:
        - id
        - email
        - is_primary
      title: ContactEmailRead
      description: Read payload for the `contact_email` value type.
    ContactPhoneNumberRead:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        phone_number:
          type: string
          title: Phone Number
        is_primary:
          type: boolean
          title: Is Primary
        labels:
          items:
            $ref: '#/components/schemas/PublicChannelLabel'
          type: array
          title: Labels
      additionalProperties: false
      type: object
      required:
        - id
        - phone_number
        - is_primary
      title: ContactPhoneNumberRead
      description: Read payload for the `contact_phone_number` value type.
    CreatedSourceFormSubmissionDetailsRead:
      properties:
        form_submission_id:
          $ref: '#/components/schemas/RecordReferenceRead'
        form_id:
          $ref: '#/components/schemas/RecordReferenceRead'
        source_event_occurred_at:
          type: string
          format: date-time
          title: Source Event Occurred At
        utm_campaign:
          anyOf:
            - type: string
            - type: 'null'
          title: Utm Campaign
        utm_source:
          anyOf:
            - type: string
            - type: 'null'
          title: Utm Source
        utm_medium:
          anyOf:
            - type: string
            - type: 'null'
          title: Utm Medium
        utm_content:
          anyOf:
            - type: string
            - type: 'null'
          title: Utm Content
        utm_term:
          anyOf:
            - type: string
            - type: 'null'
          title: Utm Term
      additionalProperties: false
      type: object
      required:
        - form_submission_id
        - form_id
        - source_event_occurred_at
      title: CreatedSourceFormSubmissionDetailsRead
      description: >-
        Read payload for the ``created_source_form_submission_details`` value
        type.
    NumberValue-Output:
      properties:
        value_type:
          type: string
          const: number
          title: Value Type
          default: number
        value:
          anyOf:
            - type: integer
            - type: number
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: NumberValue
    PercentValue-Output:
      properties:
        value_type:
          type: string
          const: percent
          title: Value Type
          default: percent
        value:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Value
      additionalProperties: false
      type: object
      required:
        - value
      title: PercentValue
    CurrencyValue-Output:
      properties:
        value_type:
          type: string
          const: currency
          title: Value Type
          default: currency
        value:
          $ref: '#/components/schemas/CurrencyRead-Output'
      additionalProperties: false
      type: object
      required:
        - value
      title: CurrencyValue
    SelectValue:
      properties:
        value_type:
          type: string
          const: select
          title: Value Type
          default: select
        value:
          $ref: '#/components/schemas/SelectRead'
      additionalProperties: false
      type: object
      required:
        - value
      title: SelectValue
    CurrencyRead-Input:
      properties:
        amount:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: >-
            Monetary amount serialized as a decimal string with a short,
            variable scale (e.g. "50000.0").
          examples:
            - '50000.0'
      additionalProperties: false
      type: object
      required:
        - amount
      title: CurrencyRead
      description: Read payload for the `currency` value type.
    CurrencyRead-Output:
      properties:
        amount:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: >-
            Monetary amount serialized as a decimal string with a short,
            variable scale (e.g. "50000.0").
          examples:
            - '50000.0'
      additionalProperties: false
      type: object
      required:
        - amount
      title: CurrencyRead
      description: Read payload for the `currency` value type.
    SelectRead:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        select_list_id:
          type: string
          format: uuid
          title: Select List Id
        api_name:
          type: string
          title: Api Name
        display_name:
          type: string
          title: Display Name
        color:
          anyOf:
            - type: string
            - type: 'null'
          title: Color
      additionalProperties: false
      type: object
      required:
        - id
        - select_list_id
        - api_name
        - display_name
      title: SelectRead
      description: Read payload for `select` and `multi_select` value types.
  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.

````