> ## Documentation Index
> Fetch the complete documentation index at: https://kiflo-b3d3c9c0.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Associate a customer to a deal

> Associate a customer to a deal.

You can either:

*   associate an existing customer to an existing deal, by `customerId`
*   create a new customer and associate with an existing deal, using `customer` field

Specify either the `customerId` field or the `customer` field.      

Here is an example when you associate an existing customer by ID:

``` json
{
    "customerId": 42
}
```

Here is an example when you create a new customer. The `properties` field contains the list of custom properties defined on **Customers**.

``` json
{
    "customer": {
        "properties": {
            "name": "John Doe",
            "email": "john.doe@customer.com",
            "...": "..."
        },
        "partnerId": 42,
        "source": "Deal"
    }
}
```



## OpenAPI

````yaml /openapi.json post /v3/deals/{id}/associate/customer
openapi: 3.0.1
info:
  title: Kiflo Public API v3
  description: "The Kiflo API allows you to have control over your integration and create the best experiences.\r\n\r\n***\r\n\r\n## Format\r\n\r\nThe API follows the REST standard using JSON to format requests and responses.  \r\nDecimals are formatted using invariant culture, ie: using \".\" (dot) as a decimal sperator and no thousands separator.  \r\nDates are formatted using ISO standards, in UTC format, including the timezone. Ex:  2015-03-25T12:00:00Z\r\n\r\n***\r\n\r\n## Security\r\n\r\nThe API is secured using an API token.\r\n\r\n**How to generate an API Access Token**  \r\n 1. Open your [account settings page](https://app.kiflo.com/account/integration)\r\n 2. Go to the \"API Access Token\" section\r\n 3. Click \"Add\" button\r\n 4. Choose a name that will be used to identify the token and click \"Add\"\r\n 4. Copy the generate token\r\n   \r\n> **Note:** For security reason, the generated API Access Token won't be visible after you close the settings page. Be sure to copy the generated token otherwise you won't be able to get it later.\r\n  \r\n**How to authenticate on the API**  \r\n  \r\nTo authenticate on the API, send the generated token in the Authorization header using the Bearer scheme:  \r\n`Authorization: Bearer #YOUR_GENERATED_TOKEN_HERE#`\r\n"
  version: v3
servers: []
security: []
paths:
  /v3/deals/{id}/associate/customer:
    post:
      tags:
        - Deals
      summary: Associate a customer to a deal
      description: "Associate a customer to a deal.\r\n\r\nYou can either:\r\n\r\n*   associate an existing customer to an existing deal, by `customerId`\r\n*   create a new customer and associate with an existing deal, using `customer` field\r\n\r\nSpecify either the `customerId` field or the `customer` field.      \r\n\r\nHere is an example when you associate an existing customer by ID:\r\n\r\n``` json\r\n{\r\n    \"customerId\": 42\r\n}\r\n```\r\n\r\nHere is an example when you create a new customer. The `properties` field contains the list of custom properties defined on **Customers**.\r\n\r\n``` json\r\n{\r\n    \"customer\": {\r\n        \"properties\": {\r\n            \"name\": \"John Doe\",\r\n            \"email\": \"john.doe@customer.com\",\r\n            \"...\": \"...\"\r\n        },\r\n        \"partnerId\": 42,\r\n        \"source\": \"Deal\"\r\n    }\r\n}\r\n```"
      parameters:
        - name: id
          in: path
          description: The ID of the deal to associate to customer.
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DealAssociateCustomerRequestDto'
          application/json:
            schema:
              $ref: '#/components/schemas/DealAssociateCustomerRequestDto'
          text/json:
            schema:
              $ref: '#/components/schemas/DealAssociateCustomerRequestDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DealAssociateCustomerRequestDto'
      responses:
        '200':
          description: Customer associated to deal
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DealDto'
        '404':
          description: Deal not found
      security:
        - oauth2:
            - Api
            - Deal.AssociateCustomer
components:
  schemas:
    DealAssociateCustomerRequestDto:
      type: object
      properties:
        customerId:
          type: integer
          format: int32
          nullable: true
        customer:
          $ref: '#/components/schemas/CustomerCreateRequestDto'
      additionalProperties: false
    DealDto:
      type: object
      properties:
        id:
          type: integer
          format: int32
        contactId:
          type: integer
          format: int32
        sourcePartnerId:
          type: integer
          format: int32
          nullable: true
        stage:
          type: string
          nullable: true
        creationDate:
          type: string
          format: date-time
        totalAmount:
          type: number
          format: double
          nullable: true
        properties:
          type: object
          additionalProperties:
            nullable: true
          nullable: true
        sourceLeadId:
          type: integer
          format: int32
          nullable: true
        status:
          $ref: '#/components/schemas/DealStatus'
        partners:
          type: array
          items:
            $ref: '#/components/schemas/DealPartnerRoleDto'
          nullable: true
        contractStartDate:
          type: string
          format: date-time
          nullable: true
        contractEndDate:
          type: string
          format: date-time
          nullable: true
        ownerUserId:
          type: integer
          format: int32
          nullable: true
        owner:
          $ref: '#/components/schemas/UserDto'
        closeDate:
          type: string
          format: date-time
          nullable: true
        customerId:
          type: integer
          format: int32
          nullable: true
        currency:
          type: string
          nullable: true
      additionalProperties: false
    CustomerCreateRequestDto:
      type: object
      properties:
        properties:
          type: object
          additionalProperties:
            nullable: true
          nullable: true
        partnerId:
          type: integer
          format: int32
          nullable: true
        source:
          $ref: '#/components/schemas/CustomerSource'
        status:
          $ref: '#/components/schemas/CustomerStatus'
      additionalProperties: false
    DealStatus:
      enum:
        - Unknown
        - Pending
        - Accepted
        - Refused
        - Expired
      type: string
    DealPartnerRoleDto:
      type: object
      properties:
        id:
          type: integer
          format: int32
        dealId:
          type: integer
          format: int32
        userPartnerOwnerId:
          type: integer
          format: int32
          nullable: true
        userPartnerOwnerName:
          type: string
          nullable: true
        userPartnerFirstName:
          type: string
          nullable: true
        userPartnerLastName:
          type: string
          nullable: true
        userPartnerEmail:
          type: string
          nullable: true
        userPartnerJobTitle:
          type: string
          nullable: true
        userPartnerPhoneNumber:
          type: string
          nullable: true
        userPartnerLinkedInProfileUrl:
          type: string
          nullable: true
        partnerId:
          type: integer
          format: int32
        partnerTypeId:
          type: integer
          format: int32
          nullable: true
        creationDate:
          type: string
          format: date-time
        partnerName:
          type: string
          nullable: true
        partnerTypeName:
          type: string
          nullable: true
      additionalProperties: false
    UserDto:
      type: object
      properties:
        id:
          type: integer
          format: int32
        email:
          type: string
          nullable: true
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
      additionalProperties: false
    CustomerSource:
      enum:
        - Unknown
        - OnlineReferral
        - Lead
        - Deal
      type: string
    CustomerStatus:
      enum:
        - Unknown
        - New
        - Paying
        - Canceled
      type: string

````