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

# Add login contact

> Attach the first email or US mobile number for an active consumer login flow, then send the OTP to that destination. Email and mobile contact values reset the opposite channel so the user verifies one current destination.



## OpenAPI

````yaml /api/consumer.openapi.yaml post /auth/contact
openapi: 3.1.0
info:
  title: YouNegotiate Consumer API
  version: '2.0'
  description: >-
    Stateless API endpoints for consumer portal authentication and account
    access.
servers:
  - url: https://api.consumer.younegotiate.com
    description: Production
security: []
tags:
  - name: System
    description: Public consumer domain system and health endpoints.
  - name: Authentication
    description: >-
      Consumer identity matching, contact capture, OTP verification, token
      creation, and logout endpoints.
  - name: Profile - My ecoAddress
    description: Consumer profile tab for signed-in identity / ecoAddress context.
  - name: Profile - Communication Controls
    description: >-
      Consumer profile tab for communication permissions, email/mobile changes,
      and email/mobile verification.
  - name: Profile - My Billing Details
    description: >-
      Consumer profile tab for billing name and billing address details used for
      payment verification.
  - name: Profile - Personalize My Portal
    description: Consumer profile tab for portal colors and profile image personalization.
  - name: Accounts
    description: Consumer-owned account list and account detail endpoints.
  - name: Bill Pay Wallet
    description: >-
      Consumer Bill Pay Wallet saved payment profiles and scheduled payment
      method update endpoints.
  - name: Upcoming Payments
    description: >-
      Consumer My Bill Pay Calendar upcoming-payment rows and calendar display
      data.
  - name: Calendar Sync
    description: >-
      Consumer Google and Microsoft calendar connection, OAuth callback, and
      live-update endpoints.
  - name: Gift Registry
    description: >-
      Consumer Bill Pay Gift Registry account list, shared registry, and Helping
      Hand link endpoints.
  - name: EcoMailbox
    description: Consumer MyEcoMailBox list endpoints and unread sidebar badge state.
  - name: Notice Responses
    description: >-
      Consumer My Account notice-response wizard endpoints for sender details
      and account details.
paths:
  /auth/contact:
    post:
      tags:
        - Authentication
      summary: Add login contact
      description: >-
        Attach the first email or US mobile number for an active consumer login
        flow, then send the OTP to that destination. Email and mobile contact
        values reset the opposite channel so the user verifies one current
        destination.
      operationId: consumerStoreContact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreConsumerContactRequest'
            examples:
              email:
                summary: Email contact
                value:
                  flow_token: consumer-flow-token
                  email_or_phone: jane@example.com
              mobile:
                summary: Mobile contact
                value:
                  flow_token: consumer-flow-token
                  email_or_phone: '2125550100'
      responses:
        '200':
          description: Contact stored and OTP sent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerOtpSentResponse'
              example:
                message: OTP sent successfully to (***) ***-0100.
                flow_token: consumer-flow-token
                otp_sent: true
                channel: mobile
                masked_destination: (***) ***-0100
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    StoreConsumerContactRequest:
      type: object
      required:
        - flow_token
        - email_or_phone
      properties:
        flow_token:
          type: string
        email_or_phone:
          type: string
          description: >-
            Valid email address or US phone number. Phone values are normalized
            to digits before validation.
    ConsumerOtpSentResponse:
      type: object
      required:
        - message
        - flow_token
        - otp_sent
        - channel
        - masked_destination
      properties:
        message:
          type: string
        flow_token:
          type: string
        otp_sent:
          type: boolean
        channel:
          $ref: '#/components/schemas/ConsumerOtpChannel'
        masked_destination:
          type: string
    ConsumerOtpChannel:
      type: string
      enum:
        - email
        - mobile
      nullable: true
    ValidationErrorResponse:
      type: object
      required:
        - message
        - errors
      properties:
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
    MessageResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
  responses:
    ValidationError:
      description: Request validation failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorResponse'
    TooManyRequests:
      description: Request was rate limited.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MessageResponse'

````